aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/emcoctl/cmd/root.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/emcoctl/cmd/root.go')
-rw-r--r--src/tools/emcoctl/cmd/root.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/src/tools/emcoctl/cmd/root.go b/src/tools/emcoctl/cmd/root.go
new file mode 100644
index 00000000..4c1ac19f
--- /dev/null
+++ b/src/tools/emcoctl/cmd/root.go
@@ -0,0 +1,85 @@
+/*
+Copyright © 2020 Intel Corp
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package cmd
+import (
+ "fmt"
+ "github.com/spf13/cobra"
+ "os"
+
+ homedir "github.com/mitchellh/go-homedir"
+ "github.com/spf13/viper"
+)
+
+var cfgFile string
+
+// rootCmd represents the base command when called without any subcommands
+var rootCmd = &cobra.Command{
+ Use: "emco",
+ Short: "Emcoctl - CLI for EMCO",
+ // Uncomment the following line if your bare application
+ // has an action associated with it:
+ Run: func(cmd *cobra.Command, args []string) {fmt.Println("emcoctl <command> -f file") },
+}
+
+// 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("Test")
+ fmt.Println(err)
+ os.Exit(1)
+ }
+}
+
+func init() {
+ cobra.OnInitialize(initConfig)
+ rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.emco.yaml)")
+
+ // Cobra also supports local flags, which will only run
+ // when this action is called directly.
+ rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
+}
+
+// initConfig reads in config file and ENV variables if set.
+func initConfig() {
+ cfgFile = "emco-cfg.yaml"
+ if cfgFile != "" {
+ // Use config file from the flag.
+ viper.SetConfigFile(cfgFile)
+ } else {
+ // Find home directory.
+ home, err := homedir.Dir()
+ if err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+ fmt.Println(home)
+ // Search config in home directory with name ".emco" (without extension).
+ viper.AddConfigPath(home)
+ viper.SetConfigName(".emco")
+ }
+
+ viper.AutomaticEnv() // read in environment variables that match
+
+ // If a config file is found, read it in.
+ if err := viper.ReadInConfig(); err == nil {
+ fmt.Println("Using config file:", viper.ConfigFileUsed())
+ err := viper.Unmarshal(&Configurations)
+ if err != nil {
+ fmt.Printf("Unable to decode into struct, %v", err)
+ }
+ }
+} \ No newline at end of file