11////////////////////////////////////////////////////////////////////////////
22// Program: jsonfiddle
33// Purpose: JSON Fiddling
4- // Authors: Tong Sun (c) 2017 , All rights reserved
4+ // Authors: Tong Sun (c) 2019 , All rights reserved
55////////////////////////////////////////////////////////////////////////////
66
77package main
88
99import (
10+ // "fmt"
11+ // "os"
12+
1013 "github.com/mkideal/cli"
14+ // "github.com/mkideal/cli/clis"
1115 clix "github.com/mkideal/cli/ext"
1216)
1317
@@ -27,8 +31,9 @@ type rootT struct {
2731}
2832
2933var root = & cli.Command {
30- Name : "jsonfiddle" ,
31- Desc : "JSON Fiddling\n Version " + version + " built on " + date ,
34+ Name : "jsonfiddle" ,
35+ Desc : "JSON Fiddling\n Version " + version + " built on " + date +
36+ "\n Copyright (C) 2019, Tong Sun" ,
3237 Text : "Tool to fiddle with json strings" ,
3338 Global : true ,
3439 Argv : func () interface {} { return new (rootT ) },
@@ -57,7 +62,7 @@ var root = &cli.Command{
5762// var (
5863// progname = "jsonfiddle"
5964// version = "0.1.0"
60- // date = "2017-09-09 "
65+ // date = "2019-05-30 "
6166
6267// rootArgv *rootT
6368// // Opts store all the configurable options
@@ -69,22 +74,24 @@ var root = &cli.Command{
6974
7075// Function main
7176// func main() {
72- // cli.SetUsageStyle(cli.ManualStyle ) // up-down , for left-right , use NormalStyle
77+ // cli.SetUsageStyle(cli.DenseNormalStyle ) // left-right , for up-down , use ManualStyle
7378// //NOTE: You can set any writer implements io.Writer
7479// // default writer is os.Stdout
7580// if err := cli.Root(root,
7681// cli.Tree(escDef),
7782// cli.Tree(fmtDef),
7883// cli.Tree(sortDef),
79- // cli.Tree(j2sDef)).Run(os.Args[1:]); err != nil {
84+ // cli.Tree(j2sDef),
85+ // cli.Tree(x2jDef)).Run(os.Args[1:]); err != nil {
8086// fmt.Fprintln(os.Stderr, err)
87+ // os.Exit(1)
8188// }
8289// fmt.Println("")
8390// }
8491
8592// Template for main dispatcher starts here
8693//==========================================================================
87- // Main dispatcher
94+ // Dumb root handler
8895
8996// func jsonfiddle(ctx *cli.Context) error {
9097// ctx.JSON(ctx.RootArgv())
@@ -102,9 +109,19 @@ var root = &cli.Command{
102109// func escCLI(ctx *cli.Context) error {
103110// rootArgv = ctx.RootArgv().(*rootT)
104111// argv := ctx.Argv().(*escT)
105- // fmt.Printf("[esc]:\n %+v\n %+v\n %v\n", rootArgv, argv, ctx.Args())
112+ // clis.Setup(progname, rootArgv.Verbose.Value())
113+ // clis.Verbose(2, "<%s> -\n %+v\n %+v\n %v\n", ctx.Path(), rootArgv, argv, ctx.Args())
106114// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
107115// rootArgv.Compact, rootArgv.Prefix, rootArgv.Indent, rootArgv.Protect, rootArgv.Verbose, rootArgv.Verbose.Value()
116+ // // argv.Filei, argv.Fileo,
117+ // //return nil
118+ // return DoEsc()
119+ // }
120+ //
121+ // DoEsc implements the business logic of command `esc`
122+ // func DoEsc() error {
123+ // fmt.Fprintf(os.Stderr, "%s v%s. esc - Escape json string\n", progname, version)
124+ // // fmt.Fprintf(os.Stderr, "Copyright (C) 2019, Tong Sun\n\n")
108125// return nil
109126// }
110127
@@ -129,9 +146,19 @@ var escDef = &cli.Command{
129146// func fmtCLI(ctx *cli.Context) error {
130147// rootArgv = ctx.RootArgv().(*rootT)
131148// argv := ctx.Argv().(*fmtT)
132- // fmt.Printf("[fmt]:\n %+v\n %+v\n %v\n", rootArgv, argv, ctx.Args())
149+ // clis.Setup(progname, rootArgv.Verbose.Value())
150+ // clis.Verbose(2, "<%s> -\n %+v\n %+v\n %v\n", ctx.Path(), rootArgv, argv, ctx.Args())
133151// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
134152// rootArgv.Compact, rootArgv.Prefix, rootArgv.Indent, rootArgv.Protect, rootArgv.Verbose, rootArgv.Verbose.Value()
153+ // // argv.Filei, argv.Fileo,
154+ // //return nil
155+ // return DoFmt()
156+ // }
157+ //
158+ // DoFmt implements the business logic of command `fmt`
159+ // func DoFmt() error {
160+ // fmt.Fprintf(os.Stderr, "%s v%s. fmt - Format json string\n", progname, version)
161+ // // fmt.Fprintf(os.Stderr, "Copyright (C) 2019, Tong Sun\n\n")
135162// return nil
136163// }
137164
@@ -156,9 +183,19 @@ var fmtDef = &cli.Command{
156183// func sortCLI(ctx *cli.Context) error {
157184// rootArgv = ctx.RootArgv().(*rootT)
158185// argv := ctx.Argv().(*sortT)
159- // fmt.Printf("[sort]:\n %+v\n %+v\n %v\n", rootArgv, argv, ctx.Args())
186+ // clis.Setup(progname, rootArgv.Verbose.Value())
187+ // clis.Verbose(2, "<%s> -\n %+v\n %+v\n %v\n", ctx.Path(), rootArgv, argv, ctx.Args())
160188// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
161189// rootArgv.Compact, rootArgv.Prefix, rootArgv.Indent, rootArgv.Protect, rootArgv.Verbose, rootArgv.Verbose.Value()
190+ // // argv.Filei, argv.Fileo,
191+ // //return nil
192+ // return DoSort()
193+ // }
194+ //
195+ // DoSort implements the business logic of command `sort`
196+ // func DoSort() error {
197+ // fmt.Fprintf(os.Stderr, "%s v%s. sort - Sort json fields recursively\n", progname, version)
198+ // // fmt.Fprintf(os.Stderr, "Copyright (C) 2019, Tong Sun\n\n")
162199// return nil
163200// }
164201
@@ -183,9 +220,19 @@ var sortDef = &cli.Command{
183220// func j2sCLI(ctx *cli.Context) error {
184221// rootArgv = ctx.RootArgv().(*rootT)
185222// argv := ctx.Argv().(*j2sT)
186- // fmt.Printf("[j2s]:\n %+v\n %+v\n %v\n", rootArgv, argv, ctx.Args())
223+ // clis.Setup(progname, rootArgv.Verbose.Value())
224+ // clis.Verbose(2, "<%s> -\n %+v\n %+v\n %v\n", ctx.Path(), rootArgv, argv, ctx.Args())
187225// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
188226// rootArgv.Compact, rootArgv.Prefix, rootArgv.Indent, rootArgv.Protect, rootArgv.Verbose, rootArgv.Verbose.Value()
227+ // // argv.FmtType, argv.Filei, argv.Fileo, argv.Name, argv.Pkg, argv.SubStruct,
228+ // //return nil
229+ // return DoJ2s()
230+ // }
231+ //
232+ // DoJ2s implements the business logic of command `j2s`
233+ // func DoJ2s() error {
234+ // fmt.Fprintf(os.Stderr, "%s v%s. j2s - JSON to struct\n", progname, version)
235+ // // fmt.Fprintf(os.Stderr, "Copyright (C) 2019, Tong Sun\n\n")
189236// return nil
190237// }
191238
@@ -207,3 +254,40 @@ var j2sDef = &cli.Command{
207254
208255 NumOption : cli .AtLeast (1 ),
209256}
257+
258+ ////////////////////////////////////////////////////////////////////////////
259+ // x2j
260+
261+ // func x2jCLI(ctx *cli.Context) error {
262+ // rootArgv = ctx.RootArgv().(*rootT)
263+ // argv := ctx.Argv().(*x2jT)
264+ // clis.Setup(progname, rootArgv.Verbose.Value())
265+ // clis.Verbose(2, "<%s> -\n %+v\n %+v\n %v\n", ctx.Path(), rootArgv, argv, ctx.Args())
266+ // Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
267+ // rootArgv.Compact, rootArgv.Prefix, rootArgv.Indent, rootArgv.Protect, rootArgv.Verbose, rootArgv.Verbose.Value()
268+ // // argv.Filei, argv.Fileo,
269+ // //return nil
270+ // return DoX2j()
271+ // }
272+ //
273+ // DoX2j implements the business logic of command `x2j`
274+ // func DoX2j() error {
275+ // fmt.Fprintf(os.Stderr, "%s v%s. x2j - XML to JSON\n", progname, version)
276+ // // fmt.Fprintf(os.Stderr, "Copyright (C) 2019, Tong Sun\n\n")
277+ // return nil
278+ // }
279+
280+ type x2jT struct {
281+ Filei * clix.Reader `cli:"*i,input" usage:"the source of the input JSON (mandatory)"`
282+ Fileo * clix.Writer `cli:"o,output" usage:"the output (default: stdout)"`
283+ }
284+
285+ var x2jDef = & cli.Command {
286+ Name : "x2j" ,
287+ Desc : "XML to JSON" ,
288+
289+ Argv : func () interface {} { return new (x2jT ) },
290+ Fn : x2jCLI ,
291+
292+ NumOption : cli .AtLeast (1 ),
293+ }
0 commit comments