Skip to content

Commit b61a016

Browse files
Merge pull request #3 from actionforge/core/secret
Add core/secret-set and core/secret-get
2 parents 9ea8184 + f23a8db commit b61a016

27 files changed

Lines changed: 218 additions & 144 deletions

.github/workflows/graphs/build-test-publish.act

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -657,28 +657,28 @@ nodes:
657657
inputs:
658658
value: actrun-notarization-macos.zip
659659
- id: secret-v1-red-pineapple-guava
660-
type: core/secret@v1
660+
type: core/secret-get@v1
661661
position:
662662
x: 3620
663663
y: 2680
664664
inputs:
665665
name: APPLE_ID
666666
- id: secret-v1-monkey-silver-boysenberry
667-
type: core/secret@v1
667+
type: core/secret-get@v1
668668
position:
669669
x: 3620
670670
y: 2790
671671
inputs:
672672
name: APPLE_ID_PASSWORD
673673
- id: secret-v1-kiwano-pineapple-bear
674-
type: core/secret@v1
674+
type: core/secret-get@v1
675675
position:
676676
x: 2220
677677
y: 2190
678678
inputs:
679679
name: APPLE_TEAM_IDENTITY
680680
- id: secret-v1-cherry-pear-cranberry
681-
type: core/secret@v1
681+
type: core/secret-get@v1
682682
position:
683683
x: 3620
684684
y: 2570
@@ -1281,7 +1281,7 @@ nodes:
12811281
substitutes[0]: null
12821282
fmt: '%s.pkg'
12831283
- id: secret-v1-giraffe-snake-tiger
1284-
type: core/secret@v1
1284+
type: core/secret-get@v1
12851285
position:
12861286
x: 10050
12871287
y: 3000
@@ -1928,7 +1928,7 @@ nodes:
19281928
description: ''
19291929
label: MacOS CodeSign
19301930
- id: secret-v1-cranberry-watermelon-starfruit
1931-
type: core/secret@v1
1931+
type: core/secret-get@v1
19321932
position:
19331933
x: 11090
19341934
y: 2200
@@ -2139,21 +2139,21 @@ nodes:
21392139
description: ''
21402140
label: MacOS Notarization
21412141
- id: secret-v1-persimmon-jackfruit-gold
2142-
type: core/secret@v1
2142+
type: core/secret-get@v1
21432143
position:
21442144
x: 11570
21452145
y: 2680
21462146
inputs:
21472147
name: APPLE_ID
21482148
- id: secret-v1-date-cow-shark
2149-
type: core/secret@v1
2149+
type: core/secret-get@v1
21502150
position:
21512151
x: 11570
21522152
y: 2790
21532153
inputs:
21542154
name: APPLE_ID_PASSWORD
21552155
- id: secret-v1-watermelon-gray-pineapple
2156-
type: core/secret@v1
2156+
type: core/secret-get@v1
21572157
position:
21582158
x: 11570
21592159
y: 2570
@@ -5058,7 +5058,7 @@ nodes:
50585058
x: 13840
50595059
y: 1090
50605060
- id: secret-v1-raspberry-apple-giraffe
5061-
type: core/secret@v1
5061+
type: core/secret-get@v1
50625062
position:
50635063
x: 13670
50645064
y: 2340

core/base.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ type NodeTypeDefinitionBasic struct {
353353
Label string `yaml:"label,omitempty" json:"label,omitempty" bson:"label,omitempty"`
354354
Compact bool `yaml:"compact,omitempty" json:"compact,omitempty" bson:"compact,omitempty"`
355355
GhMeta GhMetadata `yaml:"gh_meta" json:"gh_meta" bson:"gh_meta"`
356+
Aliases []string `yaml:"aliases,omitempty" json:"aliases,omitempty" bson:"aliases,omitempty"`
356357

357358
// Used by the gateway to indicate errors when being retreived
358359
Error string `yaml:"error,omitempty" json:"error,omitempty" bson:"error,omitempty"`
@@ -561,6 +562,17 @@ func RegisterNodeFactory(nodeDefStr string, fn nodeFactoryFunc) error {
561562
nodeDef.FactoryFn = fn
562563
registries[id] = nodeDef
563564

565+
for _, alias := range nodeDef.Aliases {
566+
if strings.Contains(alias, "_") {
567+
return CreateErr(nil, nil, "alias '%v' must not contain underscores", alias)
568+
}
569+
aliasId := fmt.Sprintf("%v@v%v", alias, nodeDef.Version)
570+
if _, exists := registries[aliasId]; exists {
571+
return CreateErr(nil, nil, "alias '%v' already registered", aliasId)
572+
}
573+
registries[aliasId] = nodeDef
574+
}
575+
564576
return nil
565577
}
566578

core/errors.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (e *LeafError) Error() string {
6868
func (e *LeafError) ErrorWithCauses() string {
6969
var lines []string
7070

71-
// 1. Top level error (no prefix)
71+
// top level error (no prefix)
7272
// iterate backwards for high-level first
7373
for i := len(e.ErrorStack) - 1; i >= 0; i-- {
7474
prefix := ""

core/inputs.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,11 +362,12 @@ func (n *Inputs) InputValueById(ec *ExecutionState, host NodeWithInputs, inputId
362362

363363
ec.PushNodeVisit(dataSource.SrcNode, false)
364364
v, err := dataSource.SrcNodeOutputs.OutputValueById(ec, OutputId(outputCacheId))
365-
ec.PopNodeVisit()
366365
if err != nil {
367366
return nil, err
368367
}
369368

369+
ec.PopNodeVisit()
370+
370371
// handle slice indexing
371372
if dataSource.SrcIndexOutputInfo != nil {
372373
slice := reflect.ValueOf(v)

node_interfaces/interface_core_random-number_v1.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node_interfaces/interface_core_secret-get_v1.go

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node_interfaces/interface_core_secret-set_v1.go

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
ni "github.com/actionforge/actrun-cli/node_interfaces"
99
)
1010

11-
//go:embed secret@v1.yml
11+
//go:embed secret-get@v1.yml
1212
var secretDefinition string
1313

1414
type SecretNode struct {
@@ -18,12 +18,12 @@ type SecretNode struct {
1818
}
1919

2020
func (n *SecretNode) OutputValueById(c *core.ExecutionState, outputId core.OutputId) (any, error) {
21-
secretName, err := core.InputValueById[string](c, n, ni.Core_secret_v1_Input_name)
21+
secretName, err := core.InputValueById[string](c, n, ni.Core_secret_get_v1_Input_name)
2222
if err != nil {
2323
return nil, err
2424
}
2525

26-
prefix, err := core.InputValueById[string](c, n, ni.Core_secret_v1_Input_prefix)
26+
prefix, err := core.InputValueById[string](c, n, ni.Core_secret_get_v1_Input_prefix)
2727
if err != nil {
2828
return nil, err
2929
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
yaml-version: 3.0
22

3-
id: core/secret
3+
id: core/secret-get
44
version: 1
5-
name: Secret
5+
aliases:
6+
- core/secret
7+
name: Get Secret
68
icon: octKey
79
category: system
810
short_desc: A node to read key secrets.

nodes/secret-set@v1.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package nodes
2+
3+
import (
4+
_ "embed"
5+
6+
"github.com/actionforge/actrun-cli/core"
7+
ni "github.com/actionforge/actrun-cli/node_interfaces"
8+
)
9+
10+
//go:embed secret-set@v1.yml
11+
var setSecretDefinition string
12+
13+
type SetSecretNode struct {
14+
core.NodeBaseComponent
15+
core.Executions
16+
core.Inputs
17+
core.Outputs
18+
}
19+
20+
func (n *SetSecretNode) ExecuteImpl(c *core.ExecutionState, inputId core.InputId, prevError error) error {
21+
secretName, err := core.InputValueById[string](c, n, ni.Core_secret_set_v1_Input_name)
22+
if err != nil {
23+
return err
24+
}
25+
26+
secretValue, err := core.InputValueById[string](c, n, ni.Core_secret_set_v1_Input_value)
27+
if err != nil {
28+
return err
29+
}
30+
31+
c.Secrets[secretName] = secretValue
32+
33+
return n.Execute(ni.Core_secret_set_v1_Output_exec_success, c, nil)
34+
}
35+
36+
func init() {
37+
err := core.RegisterNodeFactory(setSecretDefinition, func(ctx any, parent core.NodeBaseInterface, parentId string, nodeDef map[string]any, validate bool) (core.NodeBaseInterface, []error) {
38+
return &SetSecretNode{}, nil
39+
})
40+
if err != nil {
41+
panic(err)
42+
}
43+
}

0 commit comments

Comments
 (0)