fabric-samples/off_chain_data/application-go/app.go
Stanislav Jakuschevskij 6a5e5ddc12
Add off-chain-data go client application (#1269)
Signed-off-by: Stanislav Jakuschevskij <stas@two-giants.com>
2025-03-05 17:26:33 +00:00

66 lines
1.1 KiB
Go

package main
import (
"errors"
"fmt"
"os"
"strings"
"google.golang.org/grpc"
)
type command func(grpc.ClientConnInterface) error
var allCommands = map[string]command{
"getAllAssets": getAllAssets,
"transact": transact,
"listen": listen,
}
func main() {
commands := os.Args[1:]
if len(commands) == 0 {
printUsage()
panic(errors.New("missing command"))
}
for _, name := range commands {
if _, exists := allCommands[name]; !exists {
printUsage()
panic(fmt.Errorf("unknown command: %s", name))
}
fmt.Println("command:", name)
}
client := newGrpcConnection()
defer client.Close()
for _, name := range commands {
command := allCommands[name]
if err := command(client); err != nil {
if errors.Is(err, errExpected) {
fmt.Println(err)
return
}
panic(err)
}
}
}
func printUsage() {
fmt.Println("Arguments: <command1> [<command2> ...]")
fmt.Println("Available commands:", availableCommands())
}
func availableCommands() string {
result := make([]string, len(allCommands))
i := 0
for command := range allCommands {
result[i] = command
i++
}
return strings.Join(result, ", ")
}