summaryrefslogtreecommitdiff
path: root/go/internal/command/commandargs/base_args.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/internal/command/commandargs/base_args.go')
-rw-r--r--go/internal/command/commandargs/base_args.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/go/internal/command/commandargs/base_args.go b/go/internal/command/commandargs/base_args.go
new file mode 100644
index 0000000..f65373e
--- /dev/null
+++ b/go/internal/command/commandargs/base_args.go
@@ -0,0 +1,34 @@
+package commandargs
+
+import (
+ "errors"
+ "path/filepath"
+)
+
+type BaseArgs struct {
+ arguments []string
+}
+
+func (b *BaseArgs) Parse() error {
+ if b.hasEmptyArguments() {
+ return errors.New("arguments should include the executable")
+ }
+
+ return nil
+}
+
+func (b *BaseArgs) Executable() Executable {
+ if b.hasEmptyArguments() {
+ return Executable("")
+ }
+
+ return Executable(filepath.Base(b.arguments[0]))
+}
+
+func (b *BaseArgs) Arguments() []string {
+ return b.arguments[1:]
+}
+
+func (b *BaseArgs) hasEmptyArguments() bool {
+ return len(b.arguments) == 0
+}