Merge pull request #84 from ucan-wg/args-minor
args: add simple value accessor
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
package args
|
package args
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"iter"
|
"iter"
|
||||||
"sort"
|
"sort"
|
||||||
@@ -18,6 +19,8 @@ import (
|
|||||||
"github.com/ucan-wg/go-ucan/pkg/policy/literal"
|
"github.com/ucan-wg/go-ucan/pkg/policy/literal"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var ErrNotFound = errors.New("key not found in meta")
|
||||||
|
|
||||||
// Args are the Command's arguments when an invocation Token is processed by the executor.
|
// Args are the Command's arguments when an invocation Token is processed by the executor.
|
||||||
// This also serves as a way to construct the underlying IPLD data with minimum allocations
|
// This also serves as a way to construct the underlying IPLD data with minimum allocations
|
||||||
// and transformations, while hiding the IPLD complexity from the caller.
|
// and transformations, while hiding the IPLD complexity from the caller.
|
||||||
@@ -36,6 +39,16 @@ func New() *Args {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetNode retrieves a value as a raw IPLD node.
|
||||||
|
// Returns ErrNotFound if the given key is missing.
|
||||||
|
func (a *Args) GetNode(key string) (ipld.Node, error) {
|
||||||
|
v, ok := a.Values[key]
|
||||||
|
if !ok {
|
||||||
|
return nil, ErrNotFound
|
||||||
|
}
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Add inserts a key/value pair in the Args set.
|
// Add inserts a key/value pair in the Args set.
|
||||||
//
|
//
|
||||||
// Accepted types for val are any CBOR compatible type, or directly IPLD values.
|
// Accepted types for val are any CBOR compatible type, or directly IPLD values.
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ type ReadOnly struct {
|
|||||||
args *Args
|
args *Args
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r ReadOnly) GetNode(key string) (ipld.Node, error) {
|
||||||
|
return r.args.GetNode(key)
|
||||||
|
}
|
||||||
|
|
||||||
func (r ReadOnly) Iter() iter.Seq2[string, ipld.Node] {
|
func (r ReadOnly) Iter() iter.Seq2[string, ipld.Node] {
|
||||||
return r.args.Iter()
|
return r.args.Iter()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,7 +121,6 @@ func (m *Meta) GetEncryptedBytes(key string, encryptionKey []byte) ([]byte, erro
|
|||||||
|
|
||||||
// GetNode retrieves a value as a raw IPLD node.
|
// GetNode retrieves a value as a raw IPLD node.
|
||||||
// Returns ErrNotFound if the given key is missing.
|
// Returns ErrNotFound if the given key is missing.
|
||||||
// Returns datamodel.ErrWrongKind if the value has the wrong type.
|
|
||||||
func (m *Meta) GetNode(key string) (ipld.Node, error) {
|
func (m *Meta) GetNode(key string) (ipld.Node, error) {
|
||||||
v, ok := m.Values[key]
|
v, ok := m.Values[key]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|||||||
Reference in New Issue
Block a user