Adding proper command line option parsing

This commit is contained in:
spf13 2013-07-19 00:38:24 -07:00
parent 8fae5f0dd6
commit 627cf26571
3 changed files with 49 additions and 34 deletions

View file

@ -168,15 +168,17 @@ Make sure either hugo is in your path or provide a path to it.
$ hugo --help $ hugo --help
usage: hugo [flags] [] usage: hugo [flags] []
-b="": hostname (and path) to the root eg. http://spf13.com/ -b, --base-url="": hostname (and path) to the root eg. http://spf13.com/
-c="config.json": config file (default is path/config.json) -d, --build-drafts=false: include content marked as draft
-d=false: include content marked as draft --config="": config file (default is path/config.yaml|json|toml)
-h=false: show this help -h, --help=false: show this help
-k=false: analyze content and provide feedback --port="1313": port to run web server on, default :1313
-p="": filesystem path to read files relative from -S, --server=false: run a (very) simple web server
-w=false: watch filesystem for changes and recreate as needed -s, --source="": filesystem path to read files relative from
-s=false: a (very) simple webserver --uglyurls=false: use /filename.html instead of /filename/
-port="1313": port for webserver to run on -v, --verbose=false: verbose output
--version=false: which version of hugo
-w, --watch=false: watch filesystem for changes and recreate as needed
The most common use is probably to run hugo with your current The most common use is probably to run hugo with your current
directory being the input directory. directory being the input directory.
@ -192,8 +194,19 @@ immediately, tell Hugo to watch for changes. **It will
recreate the site faster than you can tab over to recreate the site faster than you can tab over to
your browser to view the changes.** your browser to view the changes.**
$ hugo -p ~/mysite -w $ hugo --source ~/mysite --watch
Watching for changes. Press ctrl+c to stop
15 pages created
0 tags created
Hugo can even run a server and create your site at the same time!
$hugo --server -ws ~/mysite
Watching for changes. Press ctrl+c to stop
15 pages created
0 tags created
Web Server is available at http://localhost:1313
Press ctrl+c to stop
# Layout # Layout

View file

@ -7,15 +7,17 @@ Make sure either hugo is in your path or provide a path to it.
$ hugo --help $ hugo --help
usage: hugo [flags] [] usage: hugo [flags] []
-b="": hostname (and path) to the root eg. http://spf13.com/ -b, --base-url="": hostname (and path) to the root eg. http://spf13.com/
-c="config.json": config file (default is path/config.json) -d, --build-drafts=false: include content marked as draft
-d=false: include content marked as draft --config="": config file (default is path/config.yaml|json|toml)
-h=false: show this help -h, --help=false: show this help
-k=false: analyze content and provide feedback --port="1313": port to run web server on, default :1313
-p="": filesystem path to read files relative from -S, --server=false: run a (very) simple web server
-w=false: watch filesystem for changes and recreate as needed -s, --source="": filesystem path to read files relative from
-s=false: a (very) simple webserver --uglyurls=false: use /filename.html instead of /filename/
-port="1313": port for webserver to run on -v, --verbose=false: verbose output
--version=false: which version of hugo
-w, --watch=false: watch filesystem for changes and recreate as needed
## Common Usage Example: ## Common Usage Example:
@ -35,14 +37,14 @@ immediately, tell Hugo to watch for changes.
recreate the site faster than you can tab over to recreate the site faster than you can tab over to
your browser to view the changes.** your browser to view the changes.**
$ hugo -p ~/mysite -w $ hugo --source ~/mysite --watch
Watching for changes. Press ctrl+c to stop Watching for changes. Press ctrl+c to stop
15 pages created 15 pages created
0 tags created 0 tags created
Hugo can even run a server and create your site at the same time! Hugo can even run a server and create your site at the same time!
$hugo -p ~/mysite -w -s $hugo --server -ws ~/mysite
Watching for changes. Press ctrl+c to stop Watching for changes. Press ctrl+c to stop
15 pages created 15 pages created
0 tags created 0 tags created

26
main.go
View file

@ -14,9 +14,9 @@
package main package main
import ( import (
"flag"
"fmt" "fmt"
"github.com/howeyc/fsnotify" "github.com/howeyc/fsnotify"
flag "github.com/ogier/pflag"
"github.com/spf13/hugo/hugolib" "github.com/spf13/hugo/hugolib"
"net/http" "net/http"
"os" "os"
@ -27,17 +27,17 @@ import (
) )
var ( var (
baseUrl = flag.String("b", "", "hostname (and path) to the root eg. http://spf13.com/") baseUrl = flag.StringP("base-url", "b", "", "hostname (and path) to the root eg. http://spf13.com/")
cfgfile = flag.String("c", "", "config file (default is path/config.yaml|json|toml)") cfgfile = flag.String("config", "", "config file (default is path/config.yaml|json|toml)")
checkMode = flag.Bool("k", false, "analyze content and provide feedback") checkMode = flag.Bool("check", false, "analyze content and provide feedback")
draft = flag.Bool("d", false, "include content marked as draft") draft = flag.BoolP("build-drafts", "d", false, "include content marked as draft")
help = flag.Bool("h", false, "show this help") help = flag.BoolP("help", "h", false, "show this help")
path = flag.String("p", "", "filesystem path to read files relative from") path = flag.StringP("source", "s", "", "filesystem path to read files relative from")
verbose = flag.Bool("v", false, "verbose output") verbose = flag.BoolP("verbose", "v", false, "verbose output")
version = flag.Bool("version", false, "which version of hugo") version = flag.Bool("version", false, "which version of hugo")
cpuprofile = flag.Int("cpuprofile", 0, "Number of times to create the site and profile it") cpuprofile = flag.Int("profile", 0, "Number of times to create the site and profile it")
watchMode = flag.Bool("w", false, "watch filesystem for changes and recreate as needed") watchMode = flag.BoolP("watch", "w", false, "watch filesystem for changes and recreate as needed")
server = flag.Bool("s", false, "run a (very) simple web server") server = flag.BoolP("server", "S", false, "run a (very) simple web server")
port = flag.String("port", "1313", "port to run web server on, default :1313") port = flag.String("port", "1313", "port to run web server on, default :1313")
uglyUrls = flag.Bool("uglyurls", false, "use /filename.html instead of /filename/ ") uglyUrls = flag.Bool("uglyurls", false, "use /filename.html instead of /filename/ ")
) )
@ -45,7 +45,7 @@ var (
func usage() { func usage() {
PrintErr("usage: hugo [flags]", "") PrintErr("usage: hugo [flags]", "")
flag.PrintDefaults() flag.PrintDefaults()
os.Exit(2) os.Exit(0)
} }
func main() { func main() {
@ -90,7 +90,7 @@ func main() {
if *checkMode { if *checkMode {
site := hugolib.NewSite(config) site := hugolib.NewSite(config)
site.Analyze() site.Analyze()
os.Exit(2) os.Exit(0)
} }
if *watchMode { if *watchMode {