Complete package for generating ocds structs (with extensions) in golang
This commit is contained in:
1 parent
da726550d4
commit
35974fa070
47 files changed
+9861
-299
No files matched your search
@@ -0,0 +1,65 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"text/tabwriter"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func newResolveCmd(opts *options) *cobra.Command {
|
||||
var asJSON bool
|
||||
cmd := &cobra.Command{
|
||||
Use: "resolve",
|
||||
Short: "List the extensions the config resolves to, in merge order",
|
||||
Long: `Resolve fetches each extension in the config and its dependencies, and prints
|
||||
them in the order their patches are applied. Dependencies come first. Nothing
|
||||
is generated.`,
|
||||
Args: cobra.NoArgs,
|
||||
RunE: func(cmd *cobra.Command, _ []string) error {
|
||||
cfg, g, err := opts.setup(cmd)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
exts, err := g.Resolve(cfg.Extensions)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if asJSON {
|
||||
type row struct {
|
||||
Name string `json:"name"`
|
||||
URL string `json:"url"`
|
||||
Declared bool `json:"declared"`
|
||||
Dependencies []string `json:"dependencies,omitempty"`
|
||||
}
|
||||
rows := make([]row, len(exts))
|
||||
for i, e := range exts {
|
||||
rows[i] = row{e.Name, e.URL, e.Declared, e.Dependencies}
|
||||
}
|
||||
enc := json.NewEncoder(cmd.OutOrStdout())
|
||||
enc.SetIndent("", " ")
|
||||
if err := enc.Encode(rows); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
w := tabwriter.NewWriter(cmd.OutOrStdout(), 0, 0, 2, ' ', 0)
|
||||
fmt.Fprintln(w, "#\tNAME\tSOURCE\tURL")
|
||||
for i, e := range exts {
|
||||
src := "dependency"
|
||||
if e.Declared {
|
||||
src = "declared"
|
||||
}
|
||||
fmt.Fprintf(w, "%d\t%s\t%s\t%s\n", i+1, e.Name, src, e.URL)
|
||||
}
|
||||
if err := w.Flush(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return opts.finish(g)
|
||||
},
|
||||
}
|
||||
cmd.Flags().BoolVar(&asJSON, "json", false, "print as JSON")
|
||||
return cmd
|
||||
}
|
||||
Reference in new issue
Block a user