aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2021-04-03 03:43:04 +0700
committerShulhan <ms@kilabit.info>2021-04-03 03:43:04 +0700
commit96f436d42015048d7260a678d408a323f754356b (patch)
treefee70e3aeaf75553b40629becb80651b144bcb00
parentfe10c3acedac35696d6ef468672e88864c3113e2 (diff)
downloadciigo-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.md6
-rw-r--r--ciigo.go17
-rw-r--r--cmd/ciigo/main.go15
-rw-r--r--convert_options.go32
-rw-r--r--generate_options.go25
-rw-r--r--internal/cmd/generate/main.go6
-rw-r--r--watcher.go10
7 files changed, 73 insertions, 38 deletions
diff --git a/README.md b/README.md
index c779176..822ec70 100644
--- a/README.md
+++ b/README.md
@@ -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",
diff --git a/ciigo.go b/ciigo.go
index 4bec612..16c0660 100644
--- a/ciigo.go
+++ b/ciigo.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",
diff --git a/watcher.go b/watcher.go
index a9b2428..ed70dc3 100644
--- a/watcher.go
+++ b/watcher.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)
}