Files
mstore/cmd/mstorectl/main.go
T
2026-02-18 16:28:02 +02:00

93 lines
1.8 KiB
Go

/*
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
*
* This work is published and licensed under a Creative Commons
* Attribution-NonCommercial-NoDerivatives 4.0 International License.
*
* Distribution of this work is permitted, but commercial use and
* modifications are strictly prohibited.
*/
package main
import (
"fmt"
"os"
"path/filepath"
"github.com/spf13/cobra"
yaml "go.yaml.in/yaml/v4"
)
func main() {
var err error
util := NewUtil()
err = util.Build()
if err != nil {
os.Exit(1)
}
err = util.Exec(os.Args[1:])
if err != nil {
os.Exit(1)
}
}
type Util struct {
FileUtil
ImageUtil
AccountUtil
GrantUtil
rootCmd cobra.Command
}
func NewUtil() *Util {
return &Util{}
}
func (util *Util) Build() error {
var err error
execName := filepath.Base(os.Args[0])
rootCmd := cobra.Command{
Use: execName,
Short: "\nA brief description the command",
//SilenceUsage: true,
}
rootCmd.CompletionOptions.DisableDefaultCmd = true
rootCmd.AddCommand(util.CreateFileCmds())
rootCmd.AddCommand(util.CreateImageCmds())
rootCmd.AddCommand(util.CreateAccountCmds())
rootCmd.AddCommand(util.CreateGrantCmds())
util.rootCmd = rootCmd
return err
}
func (util *Util) Exec(args []string) error {
var err error
util.rootCmd.SetArgs(args)
err = util.rootCmd.Execute()
return err
}
func (util *Util) Hello(cmd *cobra.Command, args []string) {
fmt.Println("hello, world!")
}
func printResponse(res any, err error) {
type Response struct {
Error bool `yaml:"error" yaml:"error"`
Message string `yaml:"message,omitempty" yaml:"message,omitempty"`
Result any `yaml:"result,omitempty" yaml:"result,omitempty"`
}
resp := Response{}
if err != nil {
resp.Error = true
resp.Message = err.Error()
} else {
resp.Result = res
}
respBytes, _ := yaml.Marshal(resp)
fmt.Printf("---\n%s\n", string(respBytes))
}