diff options
| author | Shulhan <ms@kilabit.info> | 2021-04-03 03:43:04 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2021-04-03 03:43:04 +0700 |
| commit | 96f436d42015048d7260a678d408a323f754356b (patch) | |
| tree | fee70e3aeaf75553b40629becb80651b144bcb00 | |
| parent | fe10c3acedac35696d6ef468672e88864c3113e2 (diff) | |
| download | ciigo-96f436d42015048d7260a678d408a323f754356b.tar.xz | |
all: change the Convert function to use type ConvertOptions
Previously, we pass the directory to be scanned for asciidoc markup files
and path to HTML template on Convert function. Adding new option to
Convert will cause changes on the Convert signature.
To prevent this, we changes the Convert signature from multiple parameters
into single parameter ConvertOptions.
While at it, change the variable name HTMLTemplate to HtmlTemplate.
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | ciigo.go | 17 | ||||
| -rw-r--r-- | cmd/ciigo/main.go | 15 | ||||
| -rw-r--r-- | convert_options.go | 32 | ||||
| -rw-r--r-- | generate_options.go | 25 | ||||
| -rw-r--r-- | internal/cmd/generate/main.go | 6 | ||||
| -rw-r--r-- | watcher.go | 10 |
7 files changed, 73 insertions, 38 deletions
@@ -143,8 +143,10 @@ import ( func main() { opts := &ciigo.GenerateOptions{ - Root: "./_contents", - HTMLTemplate: "_contents/html.tmpl", + ConvertOptions: ciigo.ConvertOptions{ + Root: "./_contents", + HtmlTemplate: "_contents/html.tmpl", + }, GenPackageName: "main", GenVarName: "mysiteFS", GenGoFileName: "cmd/mysite/static.go", @@ -45,19 +45,20 @@ var ( // If htmlTemplate is empty it will default to use embedded HTML template. // See template_index_html.go for template format. // -func Convert(dir, htmlTemplate string) (err error) { +func Convert(opts *ConvertOptions) (err error) { logp := "Convert" - if len(dir) == 0 { - dir = "." + if opts == nil { + opts = &ConvertOptions{} } + opts.init() - htmlg, err := newHTMLGenerator(nil, htmlTemplate, true) + htmlg, err := newHTMLGenerator(nil, opts.HtmlTemplate, true) if err != nil { return fmt.Errorf("%s: %w", logp, err) } - fileMarkups, err := listFileMarkups(dir) + fileMarkups, err := listFileMarkups(opts.Root) if err != nil { return fmt.Errorf("%s: %w", logp, err) } @@ -85,7 +86,7 @@ func Generate(opts *GenerateOptions) (err error) { } opts.init() - htmlg, err := newHTMLGenerator(nil, opts.HTMLTemplate, true) + htmlg, err := newHTMLGenerator(nil, opts.HtmlTemplate, true) if err != nil { return fmt.Errorf("%s: %w", logp, err) } @@ -106,8 +107,8 @@ func Generate(opts *GenerateOptions) (err error) { return fmt.Errorf("%s: %w", logp, err) } - if len(opts.HTMLTemplate) > 0 { - _, err = mfs.AddFile(internalTemplatePath, opts.HTMLTemplate) + if len(opts.HtmlTemplate) > 0 { + _, err = mfs.AddFile(internalTemplatePath, opts.HtmlTemplate) if err != nil { return fmt.Errorf("%s: %w", logp, err) } diff --git a/cmd/ciigo/main.go b/cmd/ciigo/main.go index a86ac91..f0c2e65 100644 --- a/cmd/ciigo/main.go +++ b/cmd/ciigo/main.go @@ -74,17 +74,26 @@ func main() { switch command { case "convert": - err = ciigo.Convert(dir, *htmlTemplate) + opts := ciigo.ConvertOptions{ + Root: dir, + HtmlTemplate: *htmlTemplate, + } + err = ciigo.Convert(&opts) + case "generate": genOpts := ciigo.GenerateOptions{ - Root: dir, - HTMLTemplate: *htmlTemplate, + ConvertOptions: ciigo.ConvertOptions{ + Root: dir, + HtmlTemplate: *htmlTemplate, + }, GenGoFileName: *outputFile, } err = ciigo.Generate(&genOpts) + case "serve": debug.Value = 1 err = ciigo.Serve(nil, dir, *address, *htmlTemplate) + default: usage() os.Exit(1) diff --git a/convert_options.go b/convert_options.go new file mode 100644 index 0000000..eb179c5 --- /dev/null +++ b/convert_options.go @@ -0,0 +1,32 @@ +// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package ciigo + +const ( + // DefaultRoot define default Root value for GenerateOptions. + DefaultRoot = "." +) + +// +// ConvertOptions define the options to use on Convert function. +// +type ConvertOptions struct { + // Root directory where its content will be embedded into Go source + // code. + // Default to DefaultRoot if its empty. + Root string + + // HtmlTemplate the HTML template to be used when converting asciidoc + // file into HTML. + // If empty it will default to use embedded HTML template. + // See template_index_html.go for template format. + HtmlTemplate string +} + +func (opts *ConvertOptions) init() { + if len(opts.Root) == 0 { + opts.Root = DefaultRoot + } +} diff --git a/generate_options.go b/generate_options.go index 0864e37..bf92075 100644 --- a/generate_options.go +++ b/generate_options.go @@ -1,26 +1,16 @@ +// Copyright 2021, Shulhan <ms@kilabit.info>. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + package ciigo import "github.com/shuLhan/share/lib/memfs" -const ( - // DefaultRoot define default Root value for GenerateOptions. - DefaultRoot = "." -) - // // GenerateOptions define the options for calling Generate function. // type GenerateOptions struct { - // Root directory where its content will be embedded into Go source - // code. - // Default to DefaultRoot if its empty. - Root string - - // HTMLTemplate the HTML template to be used when converting asciidoc - // file into HTML. - // If empty it will default to use embedded HTML template. - // See template_index_html.go for template format. - HTMLTemplate string + ConvertOptions // GenPackageName the name of package in Go generated source code. // Default to memfs.DefaultGenPackageName if its empty. @@ -37,9 +27,8 @@ type GenerateOptions struct { } func (opts *GenerateOptions) init() { - if len(opts.Root) == 0 { - opts.Root = DefaultRoot - } + opts.ConvertOptions.init() + if len(opts.GenPackageName) == 0 { opts.GenPackageName = memfs.DefaultGenPackageName } diff --git a/internal/cmd/generate/main.go b/internal/cmd/generate/main.go index 914e9a1..1ec4d79 100644 --- a/internal/cmd/generate/main.go +++ b/internal/cmd/generate/main.go @@ -14,8 +14,10 @@ import ( func main() { opts := ciigo.GenerateOptions{ - Root: "_example", - HTMLTemplate: "_example/html.tmpl", + ConvertOptions: ciigo.ConvertOptions{ + Root: "_example", + HtmlTemplate: "_example/html.tmpl", + }, GenPackageName: "main", GenVarName: "ciigoFS", GenGoFileName: "cmd/ciigo-example/static.go", @@ -39,7 +39,7 @@ type watcher struct { // | // +-- onChangeFileMarkup --> UPDATE --> htmlGenerator.convert() // | -// +-- onChangeHTMLTemplate +--> DELETE --> htmlGenerator.htmlTemplateUseInternal() +// +-- onChangeHtmlTemplate +--> DELETE --> htmlGenerator.htmlTemplateUseInternal() // | // +--> UPDATE --> htmlGenerated.htmlTemplateReload() // @@ -112,12 +112,12 @@ func (w *watcher) onChangeFileMarkup(ns *libio.NodeState) { } // -// onChangeHTMLTemplate reload the HTML template and re-convert all markup +// onChangeHtmlTemplate reload the HTML template and re-convert all markup // files. // -func (w *watcher) onChangeHTMLTemplate(ns *libio.NodeState) { +func (w *watcher) onChangeHtmlTemplate(ns *libio.NodeState) { var err error - logp := "onChangeHTMLTemplate" + logp := "onChangeHtmlTemplate" if ns.State == libio.FileStateDeleted { log.Printf("%s: HTML template file %q has been deleted\n", @@ -146,7 +146,7 @@ func (w *watcher) start() (err error) { return fmt.Errorf("start: %w", err) } if len(w.htmlg.htmlTemplate) > 0 { - _, err = libio.NewWatcher(w.htmlg.htmlTemplate, 0, w.onChangeHTMLTemplate) + _, err = libio.NewWatcher(w.htmlg.htmlTemplate, 0, w.onChangeHtmlTemplate) if err != nil { return fmt.Errorf("start: %w", err) } |
