mirror of
https://github.com/lancatlin/mdsh.git
synced 2026-11-05 19:30:12 +08:00
feat: add usage key in params and improve messages
This commit is contained in:
1 parent
96f526ac99
commit
8f764548b9
4 files changed
+35
-13
No files matched your search
@@ -0,0 +1,2 @@
|
||||
*.md
|
||||
mdsh
|
||||
+23
-10
@@ -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"}}
|
||||
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user