mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"sort"
|
|
)
|
|
|
|
func main() {
|
|
if err := run(); err != nil {
|
|
var expectedErr *ExpectedError
|
|
if errors.As(err, &expectedErr) {
|
|
fmt.Println(err)
|
|
} else {
|
|
fmt.Fprintf(os.Stderr, "\nUnexpected application error: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
}
|
|
|
|
func run() error {
|
|
args := os.Args[1:]
|
|
if len(args) == 0 {
|
|
printUsage()
|
|
return fmt.Errorf("no command specified")
|
|
}
|
|
|
|
commandName := args[0]
|
|
commandArgs := args[1:]
|
|
|
|
command, ok := commands[commandName]
|
|
if !ok {
|
|
printUsage()
|
|
return fmt.Errorf("unknown command: %s", commandName)
|
|
}
|
|
|
|
grpcConn, err := newGrpcConnection()
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create gRPC connection: %w", err)
|
|
}
|
|
defer grpcConn.Close()
|
|
|
|
gw, err := newGatewayConnection(grpcConn)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to connect to gateway: %w", err)
|
|
}
|
|
defer gw.Close()
|
|
|
|
return command(gw, commandArgs)
|
|
}
|
|
|
|
func printUsage() {
|
|
names := make([]string, 0, len(commands))
|
|
for name := range commands {
|
|
names = append(names, name)
|
|
}
|
|
sort.Strings(names)
|
|
|
|
fmt.Println("Arguments: <command> [<arg1> ...]")
|
|
fmt.Println("Available commands:")
|
|
for _, name := range names {
|
|
fmt.Printf("\t%s\n", name)
|
|
}
|
|
}
|