fabric-samples/full-stack-asset-transfer-guide/applications/trader-go/main.go
nXtCyberNet d42cc27a98 implemented the client in go
Signed-off-by: nXtCyberNet <rohantech2005@gmail.com>
2026-03-11 22:06:35 +05:30

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)
}
}