/publify

A CLI for publishing sites to Netlify and assigning custom subdomains to them.

Primary LanguagePythonMIT LicenseMIT

What Can Publify Do?

The coolest thing publify can do is publish a folder of static web pages and supporting assets to the web using Netlify, including adding a custom subdomain!

Here's the full menu, though, with more details under the headings below:

> pub help

Usage:
    pub help
    pub <rootpath> [<custom_domain>]             --------------------------------> deploy a site
    pub list                                     -------------------------------> list all sites
    pub custom <custom_domain> <existing_domain> --------------------------> set a custom domain
    pub remove-custom <custom_domain>            -----------------------> remove a custom domain
    pub delete/remove <domain or custom_domain>  --------------------------------> delete a site

Publish Sites to Netlify via CLI!

> ls mysite
└── folder
    ├── index.html
    ├── another_page.html
    ├── styles.css
    └── a.jpg
>
> pub mysite/
the site is published: http://6426ed336771f2380224fb84--scintillating-mochi-760bd3.netlify.app

Publish Sites to Netlify With Custom Subdomains Too!

> pub mysite dude.helpers.fun
the site is published: http://6426ee6a10e4e43866b46a42--startling-gingersnap-425138.netlify.app
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:

> pub mysite/ dudette
the site is published: http://642718842cb34f02bc6b0137--cheery-daifuku-f3417f.netlify.app
the site is published at dudette.helpers.fun.

List All Your Sites!

> pub list

sites without custom domains:

cheery-daifuku-f3417f: https://cheery-daifuku-f3417f.netlify.app
preeminent-salamander-6262a7: http://preeminent-salamander-6262a7.netlify.app
scintillating-mochi-760bd3: https://scintillating-mochi-760bd3.netlify.app
transcribely: https://transcribely.netlify.app

sites with custom domains:

euphonious-torrone-029b78: https://shucks.helpers.fun
flourishing-sherbet-8f356e: https://dudettes.helpers.fun
beautiful-meerkat-95c24f: https://duasdfdes.helpers.fun
glittery-khapse-b51104: https://dudes.helpers.fun
velvety-cobbler-d4e023: https://mama.helpers.fun
playful-treacle-6fea54: https://okay.helpers.fun
calm-dodol-b7aea3: https://thedonkey.helpers.fun

Add A Custom Subdomain To An Already Published Site!

> pub custom hey.helpers.fun preeminent-salamander-6262a7.netlify.app
the site is published at hey.helpers.fun. (originally 'preeminent-salamander-6262a7.netlify.app')

You can also provide partial names for the Netlify URLs, and also for the custom domains if you only have one domain listed in NETLIFY_DOMAINS:

> pub custom hey preeminent
the site is published at hey.helpers.fun. (originally 'preeminent-salamander-6262a7.netlify.app')

Remove a Custom Subdomain!

> pub remove-custom hey
'hey.helpers.fun' was removed

Delete An Entire Site!

Powerful stuff:

> pub delete preeminent
site 'http://preeminent-salamander-6262a7.netlify.app' was deleted

But First, a Bit of Configuration

To do this magic, you have to first

  1. Create an environment variable NETLIFY_TOKEN, obtained here.
  2. Create an environment variable NETLIFY_DOMAINS, with comma-separated values (no spaces), if you're planning to use custom domains.
  3. Delegate DNS management of all domains listed in DOMAINS to Netlify (link)

TODO

  • add some color and spinners to the CLI using Rich