77 lines
2.2 KiB
Go
77 lines
2.2 KiB
Go
// Copyright 2022 Listware
|
|
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var log = logrus.New()
|
|
|
|
var (
|
|
version = "v1.0.0"
|
|
release = "dev"
|
|
versionTemplate = `{{printf "%s" .Short}}
|
|
{{printf "Version: %s" .Version}}
|
|
Release: ` + release + `
|
|
`
|
|
)
|
|
|
|
// rootCmd represents the base command when called without any subcommands
|
|
var rootCmd = &cobra.Command{
|
|
Version: version,
|
|
Use: "qdsl QUERY",
|
|
Short: "CMDB query language",
|
|
Long: `CMDB query language for getting information about nodes`,
|
|
Args: func(cmd *cobra.Command, args []string) error {
|
|
if len(args) < 1 {
|
|
return errors.New("requires at least one arg")
|
|
}
|
|
return nil
|
|
},
|
|
Run: qdslQuery,
|
|
}
|
|
|
|
// Execute adds all child commands to the root command and sets flags appropriately.
|
|
// This is called by main.main(). It only needs to happen once to the rootCmd.
|
|
func execute() {
|
|
if err := rootCmd.Execute(); err != nil {
|
|
fmt.Println(err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.SetVersionTemplate(versionTemplate)
|
|
|
|
// Add commands
|
|
rootCmd.AddCommand(autoShellCmd)
|
|
|
|
rootCmd.Flags().BoolVarP(&options.Key, "key", "k", false, "add key to result")
|
|
rootCmd.Flags().BoolVarP(&options.Id, "id", "i", false, "add id to result")
|
|
rootCmd.Flags().BoolVarP(&options.Type, "type", "t", false, `add type to result`)
|
|
rootCmd.Flags().BoolVarP(&options.Object, "object", "o", false, "add object to result")
|
|
rootCmd.Flags().BoolVarP(&options.Link, "link", "l", false, `add link to result`)
|
|
rootCmd.Flags().BoolVarP(&options.LinkId, "linkid", "I", false, "add link id to result")
|
|
rootCmd.Flags().BoolVarP(&options.Name, "name", "n", false, "add name in particular topology to result")
|
|
rootCmd.Flags().BoolVarP(&options.Path, "path", "p", false, `add path to result`)
|
|
|
|
rootCmd.Flags().BoolVarP(&options.Remove, "remove", "r", false, "remove result")
|
|
rootCmd.Flags().BoolVarP(&confirm, "confirm", "y", false, "confirm remove")
|
|
}
|
|
|
|
var autoShellCmd = &cobra.Command{
|
|
Use: "autoshell",
|
|
Short: "Generate bash completion script",
|
|
Long: "Generate bash completion script",
|
|
Hidden: true,
|
|
RunE: func(cmd *cobra.Command, args []string) error {
|
|
return cmd.Root().GenBashCompletionFile("/etc/bash_completion.d/qdsl.sh")
|
|
},
|
|
}
|