Skip to content

Commit

Permalink
feat: add --list-formats-csv option (#58)
Browse files Browse the repository at this point in the history
resolve #56
  • Loading branch information
tmedwards authored Nov 6, 2023
1 parent aba7e43 commit a5565f8
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 0 deletions.
3 changes: 3 additions & 0 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ func newConfig() *config {
options.Add("json", "-j|--json")
options.Add("listcharsets", "--list-charsets")
options.Add("listformats", "--list-formats")
options.Add("listformatscsv", "--list-formats-csv")
options.Add("logfiles", "--log-files")
options.Add("logstats", "-l|--log-stats")
options.Add("module", "-m=s+|--module=s+")
Expand Down Expand Up @@ -172,6 +173,8 @@ func newConfig() *config {
usageCharsets()
case "listformats":
usageFormats(c.formats)
case "listformatscsv":
usageFormatsCSV(c.formats)
case "logfiles":
c.logFiles = true
case "logstats":
Expand Down
1 change: 1 addition & 0 deletions docs/core/usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ Where <code>[options]</code> are mostly optional configuration flags—see [Opti
<dt><kbd>--head=FILE</kbd></dt><dd>Name of the file whose contents will be appended as-is to the &lt;head&gt; element of the compiled HTML.</dd>
<dt><kbd>--list-charsets</kbd></dt><dd>List the supported input character sets, then exit.</dd>
<dt><kbd>--list-formats</kbd></dt><dd>List the available story formats, then exit.</dd>
<dt><kbd>--list-formats-csv</kbd></dt><dd>List the available story formats as CSV, then exit.</dd>
<dt><kbd>--log-files</kbd></dt>
<dd>
<p>Log the processed input files.</p>
Expand Down
28 changes: 28 additions & 0 deletions usage.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ Options:
-j, --json Output JSON, instead of compiled HTML.
--list-charsets List the supported input character sets, then exit.
--list-formats List the available story formats, then exit.
--list-formats-csv List the available story formats as CSV, then exit.
--log-files Log the processed input files.
-l, --log-stats Log various story statistics.
-m SRC, --module=SRC Module sources (repeatable); may consist of supported
Expand Down Expand Up @@ -118,6 +119,33 @@ func usageFormats(formats storyFormatsMap) {
os.Exit(1)
}

// formats the list of supported story formats as csv for the user
func usageFormatsCSV(formats storyFormatsMap) {
fmt.Fprintln(os.Stdout)
if formats.isEmpty() {
fmt.Fprintln(os.Stderr, "Story formats not found.")
os.Exit(1)
} else {
ids := formats.ids()
sort.Sort(StringsInsensitively(ids))
fmt.Fprintln(os.Stdout, "id,name,version,details")
for _, id := range ids {
f := formats[id]
fmt.Fprint(os.Stdout, f.id)
if f.isTwine2Style() {
fmt.Fprintf(os.Stdout, ",%s,%s,", f.name, f.version)
if f.proofing {
fmt.Fprint(os.Stdout, "proofing")
}
} else {
fmt.Fprint(os.Stdout, ",,,")
}
fmt.Fprintln(os.Stdout)
}
}
os.Exit(0)
}

func usageVersion() {
fmt.Fprintf(os.Stderr, "\n%s, %s\n", tweegoName, tweegoVersion)
fmt.Fprint(os.Stderr, `
Expand Down

0 comments on commit a5565f8

Please sign in to comment.