-
Notifications
You must be signed in to change notification settings - Fork 391
/
Copy pathmain.go
87 lines (78 loc) · 1.81 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package main
import (
"os"
"github.com/gnolang/gno/pkgs/command"
"github.com/gnolang/gno/pkgs/errors"
)
func main() {
cmd := command.NewStdCommand()
exec := os.Args[0]
args := os.Args[1:]
err := runMain(cmd, exec, args)
if err != nil {
cmd.ErrPrintfln("%s", err.Error())
// cmd.ErrPrintfln("%#v", err)
os.Exit(1)
}
}
type (
AppItem = command.AppItem
AppList = command.AppList
)
var mainApps AppList = []AppItem{
{
App: buildApp,
Name: "build",
Desc: "build a gno package",
Defaults: defaultBuildOptions,
},
{
App: precompileApp,
Name: "precompile",
Desc: "precompile .gno to .go",
Defaults: defaultPrecompileFlags,
},
{
App: testApp,
Name: "test",
Desc: "test a gno package",
Defaults: defaultTestOptions,
},
{
App: replApp,
Name: "repl",
Desc: "start a GnoVM REPL",
Defaults: defaultReplOptions,
},
// fmt -- gofmt
// clean
// graph
// vendor -- download deps from the chain in vendor/
// list -- list packages
// run -- call render(), or maybe create a new main?
// publish/release
// generate
// doc -- godoc
// "vm" -- starts an in-memory chain that can be interacted with?
// bug -- start a bug report
// version -- show gnodev, golang versions
}
func runMain(cmd *command.Command, exec string, args []string) error {
// show help message.
if len(args) == 0 || args[0] == "help" || args[0] == "--help" {
cmd.Println("available subcommands:")
for _, appItem := range mainApps {
cmd.Printf(" %s - %s\n", appItem.Name, appItem.Desc)
}
return nil
}
// switch on first argument.
for _, appItem := range mainApps {
if appItem.Name == args[0] {
err := cmd.Run(appItem.App, args[1:], appItem.Defaults)
return err // done
}
}
// unknown app command!
return errors.New("unknown command " + args[0])
}