disallow partial custom domains when there's more than one DOMAIN
This commit is contained in:
@@ -25,7 +25,7 @@ the site is published at dude.helpers.fun.
|
|||||||
If you only have one domain set up with Netlify, there's no need to include anything but the subdomain part:
|
If you only have one domain set up with Netlify, there's no need to include anything but the subdomain part:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> pub --root-dir mysite --custom-domain dudette
|
> pub mysite/ dudette
|
||||||
the site is published: http://642718842cb34f02bc6b0137--cheery-daifuku-f3417f.netlify.app
|
the site is published: http://642718842cb34f02bc6b0137--cheery-daifuku-f3417f.netlify.app
|
||||||
the site is published at dudette.helpers.fun.
|
the site is published at dudette.helpers.fun.
|
||||||
```
|
```
|
||||||
@@ -33,7 +33,7 @@ the site is published at dudette.helpers.fun.
|
|||||||
## Add A Custom Subdomain To An Already Published Site!
|
## Add A Custom Subdomain To An Already Published Site!
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> pub --custom-domain hey.helpers.fun --domain startling-gingersnap-425138.netlify.app
|
> pub custom hey.helpers.fun startling-gingersnap-425138.netlify.app
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ except KeyError:
|
|||||||
print("Please set the environment variable NETLIFY_TOKEN")
|
print("Please set the environment variable NETLIFY_TOKEN")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
NETLIFY_DOMAINS = os.getenv("NETLIFY_DOMAINS") or ""
|
DOMAINS = os.getenv("NETLIFY_DOMAINS") or ""
|
||||||
if NETLIFY_DOMAINS:
|
if DOMAINS:
|
||||||
NETLIFY_DOMAINS = NETLIFY_DOMAINS.split(",")
|
DOMAINS = DOMAINS.split(",")
|
||||||
|
|
||||||
AUTH_HEADER = {"Authorization": f"Bearer {NETLIFY_TOKEN}"}
|
AUTH_HEADER = {"Authorization": f"Bearer {NETLIFY_TOKEN}"}
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from .api import (
|
|||||||
delete_site,
|
delete_site,
|
||||||
deploy_page_to_netlify,
|
deploy_page_to_netlify,
|
||||||
NoResult,
|
NoResult,
|
||||||
NETLIFY_DOMAINS,
|
DOMAINS,
|
||||||
DomainInUse,
|
DomainInUse,
|
||||||
TooManyResults,
|
TooManyResults,
|
||||||
)
|
)
|
||||||
@@ -46,19 +46,16 @@ def cli_deploy_site(root_dir: str, custom_domain: str | None) -> None:
|
|||||||
Deploy a folder of web pages to Netlify
|
Deploy a folder of web pages to Netlify
|
||||||
"""
|
"""
|
||||||
if custom_domain is not None:
|
if custom_domain is not None:
|
||||||
if len(NETLIFY_DOMAINS) == 0:
|
if len(DOMAINS) == 0:
|
||||||
raise NoCustomDomains(
|
raise NoCustomDomains(
|
||||||
"No custom domains configured in NETLIFY_DOMAINS, and a custom domain was provided"
|
"No custom domains configured in NETLIFY_DOMAINS, and a custom domain was provided"
|
||||||
)
|
)
|
||||||
else:
|
if custom_domain.count(".") == 0:
|
||||||
check_that_custom_domain_is_not_in_use(custom_domain)
|
if len(DOMAINS) == 1:
|
||||||
|
raise TooManyResults("Please provide a full custom domain")
|
||||||
|
custom_domain = f"{custom_domain}.{DOMAINS[0]}"
|
||||||
|
check_that_custom_domain_is_not_in_use(custom_domain)
|
||||||
|
|
||||||
if (
|
|
||||||
custom_domain is not None
|
|
||||||
and len(NETLIFY_DOMAINS) == 1
|
|
||||||
and custom_domain.count(".") == 0
|
|
||||||
):
|
|
||||||
custom_domain = f"{custom_domain}.{NETLIFY_DOMAINS[0]}"
|
|
||||||
deploy_page_to_netlify(pl.Path(root_dir), custom_domain)
|
deploy_page_to_netlify(pl.Path(root_dir), custom_domain)
|
||||||
|
|
||||||
|
|
||||||
@@ -72,8 +69,11 @@ def cli_set_custom_domain(custom_domain: str, domain: str) -> None:
|
|||||||
except NoResult:
|
except NoResult:
|
||||||
print(f"No site found with domain '{domain}'")
|
print(f"No site found with domain '{domain}'")
|
||||||
return
|
return
|
||||||
if len(NETLIFY_DOMAINS) == 1 and custom_domain.count(".") == 0:
|
if custom_domain.count(".") == 0:
|
||||||
custom_domain = f"{custom_domain}.{NETLIFY_DOMAINS[0]}"
|
if len(DOMAINS) == 1:
|
||||||
|
custom_domain = f"{custom_domain}.{DOMAINS[0]}"
|
||||||
|
else:
|
||||||
|
raise TooManyResults("Please provide a full custom domain")
|
||||||
set_to_custom_domain(site_id, custom_domain, domain)
|
set_to_custom_domain(site_id, custom_domain, domain)
|
||||||
|
|
||||||
|
|
||||||
@@ -81,8 +81,8 @@ def cli_remove_custom_domain() -> None:
|
|||||||
"""
|
"""
|
||||||
Remove a custom domain from a Netlify site
|
Remove a custom domain from a Netlify site
|
||||||
"""
|
"""
|
||||||
if len(NETLIFY_DOMAINS) == 0:
|
if len(DOMAINS) == 0:
|
||||||
print("Please set the environment variable NETLIFY_DOMAINS")
|
print("Please set the environment variable DOMAINS")
|
||||||
raise NoCustomDomains
|
raise NoCustomDomains
|
||||||
try:
|
try:
|
||||||
custom_domain = sys.argv[sys.argv.index("remove-custom") + 1]
|
custom_domain = sys.argv[sys.argv.index("remove-custom") + 1]
|
||||||
@@ -92,8 +92,11 @@ def cli_remove_custom_domain() -> None:
|
|||||||
except IndexError:
|
except IndexError:
|
||||||
print("Please provide a domain")
|
print("Please provide a domain")
|
||||||
return
|
return
|
||||||
if len(NETLIFY_DOMAINS) == 1 and custom_domain.count(".") == 0:
|
if custom_domain.count(".") == 0:
|
||||||
custom_domain = f"{custom_domain}.{NETLIFY_DOMAINS[0]}"
|
if len(DOMAINS) == 1:
|
||||||
|
custom_domain = f"{custom_domain}.{DOMAINS[0]}"
|
||||||
|
else:
|
||||||
|
raise TooManyResults("Please provide a full custom domain")
|
||||||
site_id, full_custom_domain = get_site_id_from_custom_domain(custom_domain)
|
site_id, full_custom_domain = get_site_id_from_custom_domain(custom_domain)
|
||||||
remove_custom_domain(site_id)
|
remove_custom_domain(site_id)
|
||||||
print(f"'{full_custom_domain}' was removed")
|
print(f"'{full_custom_domain}' was removed")
|
||||||
@@ -114,12 +117,15 @@ def cli_delete_site() -> None:
|
|||||||
try:
|
try:
|
||||||
site_id, full_domain = get_site_id_from_netlify_domain(domain)
|
site_id, full_domain = get_site_id_from_netlify_domain(domain)
|
||||||
except NoResult:
|
except NoResult:
|
||||||
if len(NETLIFY_DOMAINS) == 0:
|
if len(DOMAINS) == 0:
|
||||||
raise NoCustomDomains(
|
raise NoCustomDomains(
|
||||||
"No custom domains configured in NETLIFY_DOMAINS, and couldn't find a site with that domain"
|
"No custom domains configured in NETLIFY_DOMAINS, and couldn't find a site with that domain"
|
||||||
)
|
)
|
||||||
if domain.count(".") == 0 and len(NETLIFY_DOMAINS) == 1:
|
if domain.count(".") == 0:
|
||||||
domain = f"{domain}.{NETLIFY_DOMAINS[0]}"
|
if len(DOMAINS) == 1:
|
||||||
|
domain = f"{domain}.{DOMAINS[0]}"
|
||||||
|
else:
|
||||||
|
raise TooManyResults("Please provide a full custom domain")
|
||||||
try:
|
try:
|
||||||
site_id, full_domain = get_site_id_from_custom_domain(domain)
|
site_id, full_domain = get_site_id_from_custom_domain(domain)
|
||||||
except NoResult:
|
except NoResult:
|
||||||
@@ -134,14 +140,15 @@ def cli_list_sites() -> None:
|
|||||||
List all sites on Netlify
|
List all sites on Netlify
|
||||||
"""
|
"""
|
||||||
sites = get_all_sites()
|
sites = get_all_sites()
|
||||||
|
print()
|
||||||
print("sites without custom domains:")
|
print("sites without custom domains:")
|
||||||
for site in sites:
|
for site in sites:
|
||||||
if site["custom_domain"] is None:
|
if site["custom_domain"] is None:
|
||||||
print(f"{site['name']}: {site['url']}")
|
print(f"{site['name']}: {site['url']}")
|
||||||
|
|
||||||
print()
|
print()
|
||||||
|
|
||||||
print("sites with custom domains:")
|
print("sites with custom domains:")
|
||||||
|
print()
|
||||||
for site in sites:
|
for site in sites:
|
||||||
if site["custom_domain"] is not None:
|
if site["custom_domain"] is not None:
|
||||||
print(f"{site['name']}: {site['url']}")
|
print(f"{site['name']}: {site['url']}")
|
||||||
@@ -163,11 +170,11 @@ def main() -> None:
|
|||||||
if "delete" in sys.argv or "remove" in sys.argv:
|
if "delete" in sys.argv or "remove" in sys.argv:
|
||||||
try:
|
try:
|
||||||
cli_delete_site()
|
cli_delete_site()
|
||||||
except (NoCustomDomains, NoResult) as e:
|
except (NoCustomDomains, NoResult, TooManyResults) as e:
|
||||||
print(str(e))
|
print(str(e))
|
||||||
return
|
return
|
||||||
if "custom" in sys.argv:
|
if "custom" in sys.argv:
|
||||||
if len(NETLIFY_DOMAINS) == 0:
|
if len(DOMAINS) == 0:
|
||||||
print("No custom domains configured in NETLIFY_DOMAINS")
|
print("No custom domains configured in NETLIFY_DOMAINS")
|
||||||
return
|
return
|
||||||
args = sys.argv[2:]
|
args = sys.argv[2:]
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -3,7 +3,7 @@ from setuptools import setup
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="publify",
|
name="publify",
|
||||||
version="0.1.8",
|
version="0.1.9",
|
||||||
description="A CLI for publishing sites to Netlify and assigning custom domains to them.",
|
description="A CLI for publishing sites to Netlify and assigning custom domains to them.",
|
||||||
author="Zev Averbach",
|
author="Zev Averbach",
|
||||||
author_email="zev@averba.ch",
|
author_email="zev@averba.ch",
|
||||||
|
|||||||
Reference in New Issue
Block a user