feat: add usage key in params and improve messages

This commit is contained in:
Justin Lin committed 2025-07-25 11:34:12 +10:00
1 parent 96f526ac99
commit 8f764548b9
4 files changed
+35 -13

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
*.md
mdsh
+23 -10
View File
@@ -1,32 +1,45 @@
---
output: "reports_{{.from}}.md"
output: "reports_{{.b}}.md"
params:
from:
b:
required: true
to:
usage: |
Required.
The begin time of report.
Examples:
2025
2025-07
2025-07-15
Jul
e:
required: true
file:
usage: |
Required.
The end time of report.
Same format as -b
f:
default: ~/.hledger.journal
usage: The ledger file to parse
---
# Finance Report from {{.from}} to {{.to}}
# Finance Report from {{.b}} to {{.e}}
## Previous status:
{{ sh "hledger -f $file balancesheet -e $from" }}
{{ sh "hledger -f $f balancesheet -e $b" }}
## Expenses:
### Expense Summary by Category
{{ sh "hledger -f $file bal expenses -b $from -e $to --depth 3 --sort amount" }}
{{ sh "hledger -f $f bal expenses -b $b -e $e --depth 3 --sort amount" }}
{{ sh "hledger -f $file bal expenses -b $from -e $to --depth 2 --sort amount" }}
{{ sh "hledger -f $f bal expenses -b $b -e $e --depth 2 --sort amount" }}
## Net Income:
{{sh "hledger -f $file income -b $from -e $to --monthly"}}
{{sh "hledger -f $f income -b $b -e $e --monthly"}}
## Ending balance:
{{sh "hledger -f $file balancesheet -e $to"}}
{{sh "hledger -f $f balancesheet -e $e"}}
+9 -3
View File
@@ -1,6 +1,7 @@
package main
import (
"errors"
"flag"
"fmt"
"os"
@@ -10,16 +11,21 @@ func parseParams(meta TemplateMeta) (ctx TemplateContext, err error) {
result := make(map[string]*string)
fs := flag.NewFlagSet("params", flag.ExitOnError)
for key, spec := range meta.Params {
result[key] = fs.String(key, spec.Default, key)
result[key] = fs.String(key, spec.Default, spec.Usage)
}
fs.Parse(os.Args[2:])
ctx = make(TemplateContext)
message := ""
for key, spec := range meta.Params {
if spec.Required && *result[key] == "" {
err = fmt.Errorf("parameter '%s' required but not provided", key)
return
message += fmt.Sprintf("parameter '%s' required but not provided\n", key)
continue
}
ctx[key] = *result[key]
}
if message != "" {
message += fmt.Sprintf("Use 'mdsh %s --help' to see usage", os.Args[1])
return nil, errors.New(message)
}
return
}
+1
View File
@@ -36,6 +36,7 @@ func (meta TemplateMeta) OutputFile(ctx TemplateContext) (output string, err err
type ParamSpec struct {
Required bool `yaml:"required"`
Default string `yaml:"default"`
Usage string `yaml:"usage"`
}
type TemplateContext map[string]string