Skip to content

Commit 20d88e7

Browse files
committed
Add canister id option to generator.
1 parent 19b99da commit 20d88e7

File tree

5 files changed

+71
-19
lines changed

5 files changed

+71
-19
lines changed

cmd/goic/main.go

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,14 @@ var root = cmd.NewCommandFork(
7171
Name: "packageName",
7272
HasValue: true,
7373
},
74+
{
75+
Name: "agentName",
76+
HasValue: true,
77+
},
78+
{
79+
Name: "canisterID",
80+
HasValue: true,
81+
},
7482
{
7583
Name: "indirect",
7684
HasValue: false,
@@ -94,8 +102,22 @@ var root = cmd.NewCommandFork(
94102
packageName = p
95103
}
96104

105+
var agentName string
106+
if a, ok := options["agentName"]; ok {
107+
agentName = a
108+
}
109+
110+
var canisterID *principal.Principal
111+
if cID, ok := options["canisterID"]; ok {
112+
p, err := principal.Decode(cID)
113+
if err != nil {
114+
return err
115+
}
116+
canisterID = &p
117+
}
118+
97119
_, indirect := options["indirect"]
98-
return writeDID(canisterName, packageName, path, []rune(string(rawDID)), indirect)
120+
return writeDID(agentName, canisterName, canisterID, packageName, path, []rune(string(rawDID)), indirect)
99121
},
100122
),
101123
cmd.NewCommand(
@@ -111,18 +133,22 @@ var root = cmd.NewCommandFork(
111133
Name: "packageName",
112134
HasValue: true,
113135
},
136+
{
137+
Name: "agentName",
138+
HasValue: true,
139+
},
114140
{
115141
Name: "indirect",
116142
HasValue: false,
117143
},
118144
},
119145
func(args []string, options map[string]string) error {
120146
id := args[0]
121-
canisterId, err := principal.Decode(id)
147+
canisterID, err := principal.Decode(id)
122148
if err != nil {
123149
return err
124150
}
125-
rawDID, err := fetchDID(canisterId)
151+
rawDID, err := fetchDID(canisterID)
126152
if err != nil {
127153
return err
128154
}
@@ -138,8 +164,13 @@ var root = cmd.NewCommandFork(
138164
packageName = p
139165
}
140166

167+
var agentName string
168+
if a, ok := options["agentName"]; ok {
169+
agentName = a
170+
}
171+
141172
_, indirect := options["indirect"]
142-
return writeDID(canisterName, packageName, path, []rune(string(rawDID)), indirect)
173+
return writeDID(agentName, canisterName, &canisterID, packageName, path, []rune(string(rawDID)), indirect)
143174
},
144175
),
145176
),
@@ -167,14 +198,17 @@ func main() {
167198
}
168199
}
169200

170-
func writeDID(canisterName, packageName, outputPath string, rawDID []rune, indirect bool) error {
171-
g, err := gen.NewGenerator("", canisterName, packageName, rawDID)
201+
func writeDID(agentName, canisterName string, canisterID *principal.Principal, packageName, outputPath string, rawDID []rune, indirect bool) error {
202+
g, err := gen.NewGenerator(agentName, canisterName, packageName, rawDID)
172203
if err != nil {
173204
return err
174205
}
175206
if indirect {
176207
g.Indirect()
177208
}
209+
if canisterID != nil {
210+
g.WithCanisterID(canisterID)
211+
}
178212
raw, err := g.Generate()
179213
if err != nil {
180214
return err

gen/generator.go

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"unicode"
1212

1313
"github.com/aviate-labs/agent-go/candid/did"
14+
"github.com/aviate-labs/agent-go/principal"
1415
)
1516

1617
const (
@@ -72,6 +73,7 @@ type Generator struct {
7273
AgentName string
7374
ModulePath string
7475
CanisterName string
76+
CanisterID *principal.Principal
7577
PackageName string
7678
ServiceDescription did.Description
7779
usedIDL bool
@@ -159,12 +161,14 @@ func (g *Generator) Generate() ([]byte, error) {
159161
}
160162
var tmpl bytes.Buffer
161163
if err := t.Execute(&tmpl, agentArgs{
162-
AgentName: g.AgentName,
163-
CanisterName: g.CanisterName,
164-
PackageName: g.PackageName,
165-
UsedIDL: g.usedIDL,
166-
Definitions: definitions,
167-
Methods: methods,
164+
AgentName: g.AgentName,
165+
AgentNameUpper: strings.ToUpper(g.AgentName),
166+
CanisterName: g.CanisterName,
167+
CanisterID: g.CanisterID,
168+
PackageName: g.PackageName,
169+
UsedIDL: g.usedIDL,
170+
Definitions: definitions,
171+
Methods: methods,
168172
}); err != nil {
169173
return nil, err
170174
}
@@ -177,6 +181,11 @@ func (g *Generator) Indirect() *Generator {
177181
return g
178182
}
179183

184+
func (g *Generator) WithCanisterID(canisterID *principal.Principal) *Generator {
185+
g.CanisterID = canisterID
186+
return g
187+
}
188+
180189
func (g *Generator) dataToString(prefix string, data did.Data) string {
181190
switch t := data.(type) {
182191
case did.Blob:
@@ -325,12 +334,14 @@ func (g *Generator) dataToString(prefix string, data did.Data) string {
325334
}
326335

327336
type agentArgs struct {
328-
AgentName string
329-
CanisterName string
330-
PackageName string
331-
UsedIDL bool
332-
Definitions []agentArgsDefinition
333-
Methods []agentArgsMethod
337+
AgentName string
338+
AgentNameUpper string
339+
CanisterName string
340+
CanisterID *principal.Principal
341+
PackageName string
342+
UsedIDL bool
343+
Definitions []agentArgsDefinition
344+
Methods []agentArgsMethod
334345
}
335346

336347
type agentArgsDefinition struct {

gen/templates/agent.gotmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import (
77
"github.com/aviate-labs/agent-go/candid/idl"{{ end }}
88
"github.com/aviate-labs/agent-go/principal"
99
)
10+
{{- if .CanisterID }}
11+
12+
var {{ if .AgentNameUpper }}{{ .AgentNameUpper }}_{{ end }}CANISTER_ID = principal.MustDecode("{{ .CanisterID.String }}"){{ end }}
1013

1114
{{- range .Definitions }}
1215

gen/templates/agent_indirect.gotmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import (
77
"github.com/aviate-labs/agent-go/candid/idl"{{ end }}
88
"github.com/aviate-labs/agent-go/principal"
99
)
10+
{{- if .CanisterID }}
11+
12+
var {{ if .AgentNameUpper }}{{ .AgentNameUpper }}_{{ end }}CANISTER_ID = principal.MustDecode("{{ .CanisterID.String }}"){{ end }}
1013

1114
{{- range .Definitions }}
1215

subnet_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package agent
22

33
import (
4+
"testing"
5+
46
"github.com/aviate-labs/agent-go/certification"
57
"github.com/aviate-labs/agent-go/principal"
6-
"testing"
78
)
89

910
func TestAgent_GetSubnetMetrics(t *testing.T) {

0 commit comments

Comments
 (0)