foobara-sh-cli-connector 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d178ae7c8cb4da43e12cd56a3c3fac65dd337f43a99769312aa65db91c1383a
4
- data.tar.gz: d49bc4d7519b53c994ded1a8a25159e2a81253da5f53fa752b49e429d663d490
3
+ metadata.gz: 4b1018788f796d0bfc6ae3756d69ad14784d53f5e71a8a9858fe7b6911c79b9b
4
+ data.tar.gz: a629294b8364e4ba86fa1031f52e11266c835e2cfb371ecc479082d8f832afd9
5
5
  SHA512:
6
- metadata.gz: 9f0e8c3f9d4502411f16040ed9aa0ce1973c1cdaa9b1c35d4924ef9300369b594517ef01d14343c4d68577fb2b9f7add74993fcbb467ab4d5bdb0d6c8da80d80
7
- data.tar.gz: ce1ff601a3485f1e727a530bfe7463086bfbd5d30e355ff2fd1ffa092caeb45493d6cc21b39aeb2fa1ff4cde4348d3c1e95974645b775362cc5952e19ef1a6cd
6
+ metadata.gz: 983515e65dcdbdc13c2a63c64fda3524bfc383275b80a7a3950f94acd84cd84bb52a2e2e073b688fc6410f3e6d5f7f11d7fae843b7503c32e7935872c4cd8ca8
7
+ data.tar.gz: 186305f0c99bc81f8093ca8cb987defe85afd879a29ec9eb653804e96498301b02a2e59cc388512f742d7363c103bbd958b6dca02d0ba48ac9f78f67fe59b1c0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [0.0.2]
2
+
3
+ * Add single command mode
4
+
1
5
  ## [0.0.1]
2
6
 
3
7
  * Add Apache-2.0 license, resulting in a dual-licensed project
@@ -5,6 +5,8 @@ module Foobara
5
5
 
6
6
  class Request < CommandConnectors::Request
7
7
  attr_accessor :argv,
8
+ :single_command_mode,
9
+ :command,
8
10
  :globalish_options,
9
11
  :inputs_argv,
10
12
  :action,
@@ -15,7 +17,8 @@ module Foobara
15
17
  :stderr,
16
18
  :exit
17
19
 
18
- def initialize(argv, exit: true, stdout: $stdout, stderr: $stderr, stdin: $stdin)
20
+ def initialize(argv, command:, exit: true, stdout: $stdout, stderr: $stderr, stdin: $stdin)
21
+ self.command = command
19
22
  self.argv = argv
20
23
  self.exit = exit
21
24
  self.stdin = stdin
@@ -31,6 +34,10 @@ module Foobara
31
34
  super()
32
35
  end
33
36
 
37
+ def single_command_mode?
38
+ !!command
39
+ end
40
+
34
41
  def input_serializer
35
42
  @input_serializer ||= begin
36
43
  input_format = globalish_options[:input_format]
@@ -86,6 +93,37 @@ module Foobara
86
93
  private
87
94
 
88
95
  def parse!
96
+ if single_command_mode?
97
+ parse_single_command!
98
+ else
99
+ parse_multi_command!
100
+ end
101
+
102
+ if action == "help"
103
+ globalish_options[:output_format] = "noop"
104
+ elsif action == "list"
105
+ globalish_options[:output_format] = "cli_tabular"
106
+ end
107
+
108
+ validate_parse_result!
109
+
110
+ set_serializers
111
+ end
112
+
113
+ def parse_single_command!
114
+ self.globalish_options = {}
115
+
116
+ if argv == ["--help"]
117
+ self.action = "help"
118
+ else
119
+ self.action = "run"
120
+ # TODO: needs to be the only registered command
121
+ self.argument = command
122
+ self.inputs_argv = argv
123
+ end
124
+ end
125
+
126
+ def parse_multi_command!
89
127
  if argv.empty?
90
128
  self.action = "help"
91
129
  self.globalish_options = {}
@@ -103,16 +141,6 @@ module Foobara
103
141
  self.action_options = result.parsed
104
142
  self.inputs_argv = result.remainder
105
143
  end
106
-
107
- if action == "help"
108
- globalish_options[:output_format] = "noop"
109
- elsif action == "list"
110
- globalish_options[:output_format] = "cli_tabular"
111
- end
112
-
113
- validate_parse_result!
114
-
115
- set_serializers
116
144
  end
117
145
 
118
146
  def validate_parse_result!
@@ -1,15 +1,36 @@
1
1
  module Foobara
2
2
  module CommandConnectors
3
+ class AlreadyHasAConnectedCommand < StandardError; end
4
+
3
5
  class ShCliConnector < CommandConnector
4
- attr_accessor :program_name
6
+ attr_accessor :program_name, :single_command_mode
5
7
 
6
- def initialize(*, program_name: File.basename($PROGRAM_NAME), **, &)
8
+ def initialize(*, program_name: File.basename($PROGRAM_NAME), single_command_mode: false, **, &)
7
9
  self.program_name = program_name
10
+ self.single_command_mode = single_command_mode
8
11
  super(*, **, &)
9
12
 
10
13
  # add_default_inputs_transformer ModelsToAttributesInputsTransformer
11
14
  end
12
15
 
16
+ def connect(...)
17
+ super.tap do
18
+ if single_command_mode
19
+ if command_registry.size > 1
20
+ raise AlreadyHasAConnectedCommand, "Can't have more than one command in single command mode"
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def build_request(*, **, &)
27
+ command = if single_command_mode
28
+ command_registry.foobara_all_command.first
29
+ end
30
+
31
+ self.class::Request.new(*, **, command:, &)
32
+ end
33
+
13
34
  # TODO: this needs a better name... it's doing more than building.
14
35
  def build_response(request)
15
36
  response = super
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara-sh-cli-connector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-16 00:00:00.000000000 Z
11
+ date: 2024-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: foobara
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description:
27
+ description:
28
28
  email:
29
29
  - azimux@gmail.com
30
30
  executables: []
@@ -59,7 +59,7 @@ metadata:
59
59
  source_code_uri: https://github.com/foobara/sh-cli-connector
60
60
  changelog_uri: https://github.com/foobara/sh-cli-connector/blob/main/CHANGELOG.md
61
61
  rubygems_mfa_required: 'true'
62
- post_install_message:
62
+ post_install_message:
63
63
  rdoc_options: []
64
64
  require_paths:
65
65
  - lib
@@ -74,8 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  requirements: []
77
- rubygems_version: 3.4.10
78
- signing_key:
77
+ rubygems_version: 3.5.18
78
+ signing_key:
79
79
  specification_version: 4
80
80
  summary: Command-line connector for Foobara
81
81
  test_files: []