diff --git a/config.go b/config.go
index 5347ccb..9d3df17 100644
--- a/config.go
+++ b/config.go
@@ -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+")
@@ -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":
diff --git a/docs/core/usage.md b/docs/core/usage.md
index f4e7199..63e743d 100644
--- a/docs/core/usage.md
+++ b/docs/core/usage.md
@@ -48,6 +48,7 @@ Where [options]
are mostly optional configuration flagsāsee [Opti
Log the processed input files.
diff --git a/usage.go b/usage.go index 79f8c18..cf33d30 100644 --- a/usage.go +++ b/usage.go @@ -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 @@ -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, `