create alias instruction
This commit is contained in:
parent
ff458d83da
commit
492835a67a
|
@ -0,0 +1,37 @@
|
||||||
|
package instruction
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type alias struct {
|
||||||
|
raw string
|
||||||
|
// Name of the alias
|
||||||
|
Name string
|
||||||
|
// Value to resolve to
|
||||||
|
Value string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *alias) Raw() string { return strings.Join([]string{"alias", d.raw}, " ") }
|
||||||
|
|
||||||
|
func (d *alias) Build(_args string) error {
|
||||||
|
|
||||||
|
// 1. extract action fields ()
|
||||||
|
split := strings.SplitN(_args, " ", 2)
|
||||||
|
|
||||||
|
// 2. check syntax
|
||||||
|
if len(split) != 2 {
|
||||||
|
return ErrInvalidSyntax
|
||||||
|
}
|
||||||
|
|
||||||
|
d.Name = split[0]
|
||||||
|
d.Value = split[1]
|
||||||
|
d.raw = _args
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d alias) Exec(ctx ExecutionContext) ([]byte, error) {
|
||||||
|
ctx.Alias[d.Name] = d.Value
|
||||||
|
return nil, nil
|
||||||
|
}
|
|
@ -40,6 +40,10 @@ func Parse(raw string) (T, error) {
|
||||||
i := &set{}
|
i := &set{}
|
||||||
err := i.Build(split[1])
|
err := i.Build(split[1])
|
||||||
return i, err
|
return i, err
|
||||||
|
case "alias":
|
||||||
|
i := &alias{}
|
||||||
|
err := i.Build(split[1])
|
||||||
|
return i, err
|
||||||
default:
|
default:
|
||||||
return nil, ErrUnknownInstruction
|
return nil, ErrUnknownInstruction
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue