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:
|
params:
|
||||||
from:
|
b:
|
||||||
required: true
|
required: true
|
||||||
to:
|
usage: |
|
||||||
|
Required.
|
||||||
|
The begin time of report.
|
||||||
|
Examples:
|
||||||
|
2025
|
||||||
|
2025-07
|
||||||
|
2025-07-15
|
||||||
|
Jul
|
||||||
|
e:
|
||||||
required: true
|
required: true
|
||||||
file:
|
usage: |
|
||||||
|
Required.
|
||||||
|
The end time of report.
|
||||||
|
Same format as -b
|
||||||
|
f:
|
||||||
default: ~/.hledger.journal
|
default: ~/.hledger.journal
|
||||||
|
usage: The ledger file to parse
|
||||||
---
|
---
|
||||||
|
|
||||||
# Finance Report from {{.from}} to {{.to}}
|
# Finance Report from {{.b}} to {{.e}}
|
||||||
|
|
||||||
## Previous status:
|
## Previous status:
|
||||||
|
|
||||||
{{ sh "hledger -f $file balancesheet -e $from" }}
|
{{ sh "hledger -f $f balancesheet -e $b" }}
|
||||||
|
|
||||||
## Expenses:
|
## Expenses:
|
||||||
|
|
||||||
### Expense Summary by Category
|
### 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:
|
## Net Income:
|
||||||
|
|
||||||
{{sh "hledger -f $file income -b $from -e $to --monthly"}}
|
{{sh "hledger -f $f income -b $b -e $e --monthly"}}
|
||||||
|
|
||||||
## Ending balance:
|
## Ending balance:
|
||||||
|
|
||||||
{{sh "hledger -f $file balancesheet -e $to"}}
|
{{sh "hledger -f $f balancesheet -e $e"}}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
@@ -10,16 +11,21 @@ func parseParams(meta TemplateMeta) (ctx TemplateContext, err error) {
|
|||||||
result := make(map[string]*string)
|
result := make(map[string]*string)
|
||||||
fs := flag.NewFlagSet("params", flag.ExitOnError)
|
fs := flag.NewFlagSet("params", flag.ExitOnError)
|
||||||
for key, spec := range meta.Params {
|
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:])
|
fs.Parse(os.Args[2:])
|
||||||
ctx = make(TemplateContext)
|
ctx = make(TemplateContext)
|
||||||
|
message := ""
|
||||||
for key, spec := range meta.Params {
|
for key, spec := range meta.Params {
|
||||||
if spec.Required && *result[key] == "" {
|
if spec.Required && *result[key] == "" {
|
||||||
err = fmt.Errorf("parameter '%s' required but not provided", key)
|
message += fmt.Sprintf("parameter '%s' required but not provided\n", key)
|
||||||
return
|
continue
|
||||||
}
|
}
|
||||||
ctx[key] = *result[key]
|
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
|
return
|
||||||
}
|
}
|
||||||
@@ -36,6 +36,7 @@ func (meta TemplateMeta) OutputFile(ctx TemplateContext) (output string, err err
|
|||||||
type ParamSpec struct {
|
type ParamSpec struct {
|
||||||
Required bool `yaml:"required"`
|
Required bool `yaml:"required"`
|
||||||
Default string `yaml:"default"`
|
Default string `yaml:"default"`
|
||||||
|
Usage string `yaml:"usage"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type TemplateContext map[string]string
|
type TemplateContext map[string]string
|
||||||
Reference in new issue
Block a user