func main() { // For environment variables. viper.SetEnvPrefix(cmdRoot) viper.AutomaticEnv() replacer := strings.NewReplacer(".", "_") viper.SetEnvKeyReplacer(replacer) // Define command-line flags that are valid for all peer commands and // subcommands. mainFlags := mainCmd.PersistentFlags() mainFlags.BoolVarP(&versionFlag, "version", "v", false, "Display current version of fabric peer server") mainFlags.String("logging-level", "", "Default logging level and overrides, see core.yaml for full syntax") viper.BindPFlag("logging_level", mainFlags.Lookup("logging-level")) testCoverProfile := "" mainFlags.StringVarP(&testCoverProfile, "test.coverprofile", "", "coverage.cov", "Done") var alternativeCfgPath = os.Getenv("PEER_CFG_PATH") if alternativeCfgPath != "" { logger.Infof("User defined config file path: %s", alternativeCfgPath) viper.AddConfigPath(alternativeCfgPath) // Path to look for the config file in } else { viper.AddConfigPath("./") // Path to look for the config file in // Path to look for the config file in based on GOPATH gopath := os.Getenv("GOPATH") for _, p := range filepath.SplitList(gopath) { peerpath := filepath.Join(p, "src/github.com/hyperledger/fabric/peer") viper.AddConfigPath(peerpath) } } // Now set the configuration file. viper.SetConfigName(cmdRoot) // Name of config file (without extension) err := viper.ReadInConfig() // Find and read the config file if err != nil { // Handle errors reading the config file panic(fmt.Errorf("Fatal error when reading %s config file: %s\n", cmdRoot, err)) } mainCmd.AddCommand(version.Cmd()) mainCmd.AddCommand(node.Cmd()) mainCmd.AddCommand(network.Cmd()) mainCmd.AddCommand(chaincode.Cmd()) runtime.GOMAXPROCS(viper.GetInt("peer.gomaxprocs")) // Init the crypto layer if err := crypto.Init(); err != nil { panic(fmt.Errorf("Failed to initialize the crypto layer: %s", err)) } // On failure Cobra prints the usage message and error string, so we only // need to exit with a non-0 status if mainCmd.Execute() != nil { os.Exit(1) } logger.Info("Exiting.....") }
func main() { // For environment variables. viper.SetEnvPrefix(cmdRoot) viper.AutomaticEnv() replacer := strings.NewReplacer(".", "_") viper.SetEnvKeyReplacer(replacer) // Define command-line flags that are valid for all peer commands and // subcommands. mainFlags := mainCmd.PersistentFlags() mainFlags.BoolVarP(&versionFlag, "version", "v", false, "Display current version of fabric peer server") mainFlags.String("logging-level", "", "Default logging level and overrides, see core.yaml for full syntax") viper.BindPFlag("logging_level", mainFlags.Lookup("logging-level")) testCoverProfile := "" mainFlags.StringVarP(&testCoverProfile, "test.coverprofile", "", "coverage.cov", "Done") var alternativeCfgPath = os.Getenv("PEER_CFG_PATH") if alternativeCfgPath != "" { logger.Infof("User defined config file path: %s", alternativeCfgPath) viper.AddConfigPath(alternativeCfgPath) // Path to look for the config file in } else { viper.AddConfigPath("./") // Path to look for the config file in // Path to look for the config file in based on GOPATH gopath := os.Getenv("GOPATH") for _, p := range filepath.SplitList(gopath) { peerpath := filepath.Join(p, "src/github.com/hyperledger/fabric/peer") viper.AddConfigPath(peerpath) } } // Now set the configuration file. viper.SetConfigName(cmdRoot) // Name of config file (without extension) err := viper.ReadInConfig() // Find and read the config file if err != nil { // Handle errors reading the config file panic(fmt.Errorf("Fatal error when reading %s config file: %s\n", cmdRoot, err)) } mainCmd.AddCommand(version.Cmd()) mainCmd.AddCommand(node.Cmd()) mainCmd.AddCommand(chaincode.Cmd(nil)) mainCmd.AddCommand(clilogging.Cmd()) runtime.GOMAXPROCS(viper.GetInt("peer.gomaxprocs")) // Init the crypto layer //TODO: integrate new crypto / idp code primitives.SetSecurityLevel("SHA2", 256) // Init the MSP // TODO: determine the location of this config file var mspMgrConfigDir string if alternativeCfgPath != "" { mspMgrConfigDir = alternativeCfgPath + "/msp/sampleconfig/" } else if _, err := os.Stat("./msp/sampleconfig/"); err == nil { mspMgrConfigDir = "./msp/sampleconfig/" } else { mspMgrConfigDir = os.Getenv("GOPATH") + "/src/github.com/hyperledger/fabric/msp/sampleconfig/" } // FIXME: when this peer joins a chain, it should get the // config for that chain with the list of MSPs that the // chain uses; however this is not yet implemented. // Additionally, we might always want to have an MSP for // the local test chain so that we can run tests with the // peer CLI. This is why we create this fake setup here for now err = mspmgmt.LoadFakeSetupWithLocalMspAndTestChainMsp(mspMgrConfigDir) if err != nil { panic(fmt.Errorf("Fatal error when setting up MSP from directory %s: err %s\n", mspMgrConfigDir, err)) } // On failure Cobra prints the usage message and error string, so we only // need to exit with a non-0 status if mainCmd.Execute() != nil { os.Exit(1) } logger.Info("Exiting.....") }