1
1
////////////////////////////////////////////////////////////////////////////
2
2
// Program: jsonfiddle
3
3
// Purpose: JSON Fiddling
4
- // Authors: Tong Sun (c) 2017 , All rights reserved
4
+ // Authors: Tong Sun (c) 2019 , All rights reserved
5
5
////////////////////////////////////////////////////////////////////////////
6
6
7
7
package main
8
8
9
9
import (
10
+ // "fmt"
11
+ // "os"
12
+
10
13
"github.com/mkideal/cli"
14
+ // "github.com/mkideal/cli/clis"
11
15
clix "github.com/mkideal/cli/ext"
12
16
)
13
17
@@ -27,8 +31,9 @@ type rootT struct {
27
31
}
28
32
29
33
var 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" ,
32
37
Text : "Tool to fiddle with json strings" ,
33
38
Global : true ,
34
39
Argv : func () interface {} { return new (rootT ) },
@@ -57,7 +62,7 @@ var root = &cli.Command{
57
62
// var (
58
63
// progname = "jsonfiddle"
59
64
// version = "0.1.0"
60
- // date = "2017-09-09 "
65
+ // date = "2019-05-30 "
61
66
62
67
// rootArgv *rootT
63
68
// // Opts store all the configurable options
@@ -69,22 +74,24 @@ var root = &cli.Command{
69
74
70
75
// Function main
71
76
// 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
73
78
// //NOTE: You can set any writer implements io.Writer
74
79
// // default writer is os.Stdout
75
80
// if err := cli.Root(root,
76
81
// cli.Tree(escDef),
77
82
// cli.Tree(fmtDef),
78
83
// 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 {
80
86
// fmt.Fprintln(os.Stderr, err)
87
+ // os.Exit(1)
81
88
// }
82
89
// fmt.Println("")
83
90
// }
84
91
85
92
// Template for main dispatcher starts here
86
93
//==========================================================================
87
- // Main dispatcher
94
+ // Dumb root handler
88
95
89
96
// func jsonfiddle(ctx *cli.Context) error {
90
97
// ctx.JSON(ctx.RootArgv())
@@ -102,9 +109,19 @@ var root = &cli.Command{
102
109
// func escCLI(ctx *cli.Context) error {
103
110
// rootArgv = ctx.RootArgv().(*rootT)
104
111
// 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())
106
114
// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
107
115
// 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")
108
125
// return nil
109
126
// }
110
127
@@ -129,9 +146,19 @@ var escDef = &cli.Command{
129
146
// func fmtCLI(ctx *cli.Context) error {
130
147
// rootArgv = ctx.RootArgv().(*rootT)
131
148
// 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())
133
151
// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
134
152
// 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")
135
162
// return nil
136
163
// }
137
164
@@ -156,9 +183,19 @@ var fmtDef = &cli.Command{
156
183
// func sortCLI(ctx *cli.Context) error {
157
184
// rootArgv = ctx.RootArgv().(*rootT)
158
185
// 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())
160
188
// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
161
189
// 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")
162
199
// return nil
163
200
// }
164
201
@@ -183,9 +220,19 @@ var sortDef = &cli.Command{
183
220
// func j2sCLI(ctx *cli.Context) error {
184
221
// rootArgv = ctx.RootArgv().(*rootT)
185
222
// 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())
187
225
// Opts.Compact, Opts.Prefix, Opts.Indent, Opts.Protect, Opts.Verbose, Opts.Verbose =
188
226
// 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")
189
236
// return nil
190
237
// }
191
238
@@ -207,3 +254,40 @@ var j2sDef = &cli.Command{
207
254
208
255
NumOption : cli .AtLeast (1 ),
209
256
}
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