space-architect 8.0.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +54 -0
  3. data/README.md +53 -243
  4. data/lib/space_architect/bug_report.rb +2 -1
  5. data/lib/space_architect/cli/architect.rb +20 -7
  6. data/lib/space_architect/cli.rb +9 -14
  7. data/lib/space_architect/session_sync/bin_path.rb +1 -1
  8. data/lib/space_architect/session_sync/cursor.rb +1 -1
  9. data/lib/space_architect/session_sync/plist.rb +1 -1
  10. data/lib/{space_core → space_architect}/version.rb +2 -2
  11. data/lib/space_architect.rb +1 -1
  12. data/skill/architect/SKILL.md +3 -2
  13. data/skill/architect-vocabulary/SKILL.md +2 -2
  14. metadata +18 -177
  15. data/exe/space +0 -13
  16. data/exe/src +0 -13
  17. data/lib/space_architect/cli/space.rb +0 -29
  18. data/lib/space_architect/cli/src.rb +0 -38
  19. data/lib/space_core/atomic_write.rb +0 -21
  20. data/lib/space_core/cli/base_command.rb +0 -19
  21. data/lib/space_core/cli/build.rb +0 -27
  22. data/lib/space_core/cli/config.rb +0 -49
  23. data/lib/space_core/cli/current.rb +0 -16
  24. data/lib/space_core/cli/help.rb +0 -195
  25. data/lib/space_core/cli/helpers.rb +0 -115
  26. data/lib/space_core/cli/init.rb +0 -29
  27. data/lib/space_core/cli/list.rb +0 -24
  28. data/lib/space_core/cli/loop_status.rb +0 -47
  29. data/lib/space_core/cli/new.rb +0 -38
  30. data/lib/space_core/cli/pack.rb +0 -29
  31. data/lib/space_core/cli/path.rb +0 -16
  32. data/lib/space_core/cli/repeatable_options.rb +0 -84
  33. data/lib/space_core/cli/repo.rb +0 -76
  34. data/lib/space_core/cli/run.rb +0 -44
  35. data/lib/space_core/cli/shell.rb +0 -125
  36. data/lib/space_core/cli/show.rb +0 -21
  37. data/lib/space_core/cli/status.rb +0 -74
  38. data/lib/space_core/cli/use.rb +0 -17
  39. data/lib/space_core/cli.rb +0 -177
  40. data/lib/space_core/commands.rb +0 -51
  41. data/lib/space_core/config.rb +0 -152
  42. data/lib/space_core/errors.rb +0 -14
  43. data/lib/space_core/git_client.rb +0 -49
  44. data/lib/space_core/mise_client.rb +0 -37
  45. data/lib/space_core/oci_builder.rb +0 -56
  46. data/lib/space_core/oci_packer.rb +0 -103
  47. data/lib/space_core/oci_runner.rb +0 -89
  48. data/lib/space_core/paths.rb +0 -58
  49. data/lib/space_core/repo_reference.rb +0 -19
  50. data/lib/space_core/repo_resolver.rb +0 -167
  51. data/lib/space_core/shell_integration.rb +0 -438
  52. data/lib/space_core/slugger.rb +0 -16
  53. data/lib/space_core/space.rb +0 -174
  54. data/lib/space_core/space_store.rb +0 -319
  55. data/lib/space_core/state.rb +0 -86
  56. data/lib/space_core/templates/oci/dockerfile.erb +0 -73
  57. data/lib/space_core/templates/oci/dockerignore.erb +0 -17
  58. data/lib/space_core/templates/oci/entrypoint.sh.erb +0 -16
  59. data/lib/space_core/terminal.rb +0 -161
  60. data/lib/space_core/warnings.rb +0 -13
  61. data/lib/space_core/xdg.rb +0 -33
  62. data/lib/space_core.rb +0 -26
  63. data/lib/space_src/cli/clone.rb +0 -54
  64. data/lib/space_src/cli/config.rb +0 -65
  65. data/lib/space_src/cli/daemon.rb +0 -362
  66. data/lib/space_src/cli/options.rb +0 -21
  67. data/lib/space_src/cli/org.rb +0 -199
  68. data/lib/space_src/cli/repo.rb +0 -169
  69. data/lib/space_src/cli/shell.rb +0 -121
  70. data/lib/space_src/cli/status.rb +0 -75
  71. data/lib/space_src/cli/sync.rb +0 -161
  72. data/lib/space_src/cli.rb +0 -159
  73. data/lib/space_src/cloner.rb +0 -77
  74. data/lib/space_src/config/contract.rb +0 -54
  75. data/lib/space_src/config/duration.rb +0 -79
  76. data/lib/space_src/config/model.rb +0 -49
  77. data/lib/space_src/config/store.rb +0 -156
  78. data/lib/space_src/forge/client.rb +0 -31
  79. data/lib/space_src/forge/github.rb +0 -98
  80. data/lib/space_src/launchd/agent.rb +0 -195
  81. data/lib/space_src/launchd/plist.rb +0 -129
  82. data/lib/space_src/log_rotator.rb +0 -46
  83. data/lib/space_src/migration.rb +0 -43
  84. data/lib/space_src/nav.rb +0 -99
  85. data/lib/space_src/paths.rb +0 -72
  86. data/lib/space_src/scm/client.rb +0 -87
  87. data/lib/space_src/scm/git.rb +0 -232
  88. data/lib/space_src/scm/status.rb +0 -24
  89. data/lib/space_src/shell.rb +0 -90
  90. data/lib/space_src/shell_integration.rb +0 -321
  91. data/lib/space_src/state/lock.rb +0 -59
  92. data/lib/space_src/state/store.rb +0 -140
  93. data/lib/space_src/sync/engine.rb +0 -503
  94. data/lib/space_src/sync/repo_plan.rb +0 -215
  95. data/lib/space_src/sync/report.rb +0 -18
  96. data/lib/space_src/ui/interactive_reporter.rb +0 -280
  97. data/lib/space_src/ui/json_reporter.rb +0 -39
  98. data/lib/space_src/ui/mode.rb +0 -68
  99. data/lib/space_src/ui/plain_reporter.rb +0 -53
  100. data/lib/space_src/ui/reporter.rb +0 -48
  101. data/lib/space_src/version.rb +0 -7
  102. data/lib/space_src.rb +0 -38
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: space-architect
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Jacobs
@@ -10,47 +10,47 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: async
13
+ name: space-cadet
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '2.39'
18
+ version: '9.1'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '2.39'
25
+ version: '9.1'
26
26
  - !ruby/object:Gem::Dependency
27
- name: async-process
27
+ name: async-http
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '1.4'
32
+ version: '0.95'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.4'
39
+ version: '0.95'
40
40
  - !ruby/object:Gem::Dependency
41
- name: async-http
41
+ name: async-process
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.95'
46
+ version: '1.4'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.95'
53
+ version: '1.4'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: protocol-http
56
56
  requirement: !ruby/object:Gem::Requirement
@@ -107,48 +107,6 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '1.10'
110
- - !ruby/object:Gem::Dependency
111
- name: dry-schema
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '1.16'
117
- type: :runtime
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: '1.16'
124
- - !ruby/object:Gem::Dependency
125
- name: dry-struct
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '1.8'
131
- type: :runtime
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '1.8'
138
- - !ruby/object:Gem::Dependency
139
- name: dry-types
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '1.9'
145
- type: :runtime
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '1.9'
152
110
  - !ruby/object:Gem::Dependency
153
111
  name: dry-validation
154
112
  requirement: !ruby/object:Gem::Requirement
@@ -163,34 +121,6 @@ dependencies:
163
121
  - - "~>"
164
122
  - !ruby/object:Gem::Version
165
123
  version: '1.11'
166
- - !ruby/object:Gem::Dependency
167
- name: xdg
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: '10.2'
173
- type: :runtime
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: '10.2'
180
- - !ruby/object:Gem::Dependency
181
- name: tty-cursor
182
- requirement: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: '0.7'
187
- type: :runtime
188
- prerelease: false
189
- version_requirements: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '0.7'
194
124
  - !ruby/object:Gem::Dependency
195
125
  name: minitest
196
126
  requirement: !ruby/object:Gem::Requirement
@@ -233,16 +163,15 @@ dependencies:
233
163
  - - "~>"
234
164
  - !ruby/object:Gem::Version
235
165
  version: '13.0'
236
- description: 'A dry-cli CLI for spaces: date-prefixed directories with a YAML identity
237
- file, $PWD-based current-space resolution, and XDG config/state. Provisions repos
238
- at copy-on-write speed from evergreen checkouts, concurrently on fibers. Ships fish
239
- shell integration and completions.'
166
+ description: 'A dry-cli CLI for the Architect Loop: iterations, briefs, freezes, verdicts,
167
+ lane worktrees, and headless pi dispatch — the judgment loop that runs inside space-cadet''s
168
+ task-scoped workspaces. Depends on the space-cadet gem for the spaces substrate
169
+ (hard) and the repo-tender gem for the session-sync launchd agent (soft, install
170
+ at will).'
240
171
  email:
241
172
  - eric@ebj.dev
242
173
  executables:
243
174
  - architect
244
- - space
245
- - src
246
175
  extensions: []
247
176
  extra_rdoc_files: []
248
177
  files:
@@ -250,16 +179,12 @@ files:
250
179
  - LICENSE.txt
251
180
  - README.md
252
181
  - exe/architect
253
- - exe/space
254
- - exe/src
255
182
  - lib/space_architect.rb
256
183
  - lib/space_architect/architect_project.rb
257
184
  - lib/space_architect/bug_report.rb
258
185
  - lib/space_architect/cli.rb
259
186
  - lib/space_architect/cli/architect.rb
260
187
  - lib/space_architect/cli/research.rb
261
- - lib/space_architect/cli/space.rb
262
- - lib/space_architect/cli/src.rb
263
188
  - lib/space_architect/conversations_client.rb
264
189
  - lib/space_architect/gate_evaluator.rb
265
190
  - lib/space_architect/gate_lint.rb
@@ -284,91 +209,7 @@ files:
284
209
  - lib/space_architect/templates/architect.md.erb
285
210
  - lib/space_architect/templates/brief.md.erb
286
211
  - lib/space_architect/templates/iteration.md.erb
287
- - lib/space_core.rb
288
- - lib/space_core/atomic_write.rb
289
- - lib/space_core/cli.rb
290
- - lib/space_core/cli/base_command.rb
291
- - lib/space_core/cli/build.rb
292
- - lib/space_core/cli/config.rb
293
- - lib/space_core/cli/current.rb
294
- - lib/space_core/cli/help.rb
295
- - lib/space_core/cli/helpers.rb
296
- - lib/space_core/cli/init.rb
297
- - lib/space_core/cli/list.rb
298
- - lib/space_core/cli/loop_status.rb
299
- - lib/space_core/cli/new.rb
300
- - lib/space_core/cli/pack.rb
301
- - lib/space_core/cli/path.rb
302
- - lib/space_core/cli/repeatable_options.rb
303
- - lib/space_core/cli/repo.rb
304
- - lib/space_core/cli/run.rb
305
- - lib/space_core/cli/shell.rb
306
- - lib/space_core/cli/show.rb
307
- - lib/space_core/cli/status.rb
308
- - lib/space_core/cli/use.rb
309
- - lib/space_core/commands.rb
310
- - lib/space_core/config.rb
311
- - lib/space_core/errors.rb
312
- - lib/space_core/git_client.rb
313
- - lib/space_core/mise_client.rb
314
- - lib/space_core/oci_builder.rb
315
- - lib/space_core/oci_packer.rb
316
- - lib/space_core/oci_runner.rb
317
- - lib/space_core/paths.rb
318
- - lib/space_core/repo_reference.rb
319
- - lib/space_core/repo_resolver.rb
320
- - lib/space_core/shell_integration.rb
321
- - lib/space_core/slugger.rb
322
- - lib/space_core/space.rb
323
- - lib/space_core/space_store.rb
324
- - lib/space_core/state.rb
325
- - lib/space_core/templates/oci/dockerfile.erb
326
- - lib/space_core/templates/oci/dockerignore.erb
327
- - lib/space_core/templates/oci/entrypoint.sh.erb
328
- - lib/space_core/terminal.rb
329
- - lib/space_core/version.rb
330
- - lib/space_core/warnings.rb
331
- - lib/space_core/xdg.rb
332
- - lib/space_src.rb
333
- - lib/space_src/cli.rb
334
- - lib/space_src/cli/clone.rb
335
- - lib/space_src/cli/config.rb
336
- - lib/space_src/cli/daemon.rb
337
- - lib/space_src/cli/options.rb
338
- - lib/space_src/cli/org.rb
339
- - lib/space_src/cli/repo.rb
340
- - lib/space_src/cli/shell.rb
341
- - lib/space_src/cli/status.rb
342
- - lib/space_src/cli/sync.rb
343
- - lib/space_src/cloner.rb
344
- - lib/space_src/config/contract.rb
345
- - lib/space_src/config/duration.rb
346
- - lib/space_src/config/model.rb
347
- - lib/space_src/config/store.rb
348
- - lib/space_src/forge/client.rb
349
- - lib/space_src/forge/github.rb
350
- - lib/space_src/launchd/agent.rb
351
- - lib/space_src/launchd/plist.rb
352
- - lib/space_src/log_rotator.rb
353
- - lib/space_src/migration.rb
354
- - lib/space_src/nav.rb
355
- - lib/space_src/paths.rb
356
- - lib/space_src/scm/client.rb
357
- - lib/space_src/scm/git.rb
358
- - lib/space_src/scm/status.rb
359
- - lib/space_src/shell.rb
360
- - lib/space_src/shell_integration.rb
361
- - lib/space_src/state/lock.rb
362
- - lib/space_src/state/store.rb
363
- - lib/space_src/sync/engine.rb
364
- - lib/space_src/sync/repo_plan.rb
365
- - lib/space_src/sync/report.rb
366
- - lib/space_src/ui/interactive_reporter.rb
367
- - lib/space_src/ui/json_reporter.rb
368
- - lib/space_src/ui/mode.rb
369
- - lib/space_src/ui/plain_reporter.rb
370
- - lib/space_src/ui/reporter.rb
371
- - lib/space_src/version.rb
212
+ - lib/space_architect/version.rb
372
213
  - skill/architect-research/SKILL.md
373
214
  - skill/architect-research/lanes.md
374
215
  - skill/architect-vocabulary/SKILL.md
@@ -397,6 +238,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
397
238
  requirements: []
398
239
  rubygems_version: 4.0.10
399
240
  specification_version: 4
400
- summary: Task-scoped project workspaces (repos · notes · artifacts under one self-describing
401
- root)
241
+ summary: The Architect Loop — structured judgment-and-build cycles for humans and
242
+ headless AI builders
402
243
  test_files: []
data/exe/space DELETED
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- source_gemfile = File.expand_path("../Gemfile", __dir__)
5
- if File.exist?(source_gemfile)
6
- ENV["BUNDLE_GEMFILE"] ||= source_gemfile
7
- require "bundler/setup"
8
- $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
9
- end
10
-
11
- require "space_core"
12
-
13
- Space::Core::CLI.run(ARGV, $stdout, $stderr)
data/exe/src DELETED
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- source_gemfile = File.expand_path("../Gemfile", __dir__)
5
- if File.exist?(source_gemfile)
6
- ENV["BUNDLE_GEMFILE"] ||= source_gemfile
7
- require "bundler/setup"
8
- $LOAD_PATH.unshift(File.expand_path("../lib", __dir__))
9
- end
10
-
11
- require "space_src"
12
-
13
- Space::Src::CLI.run(ARGV, $stdout, $stderr)
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "space_core/cli"
4
-
5
- module Space::Architect
6
- module CLI
7
- # Exit-code bridge to the Space::Core CLI engine.
8
- # `architect space <args>` (and `exe/space <args>` via Space::Core::CLI directly)
9
- # hands the raw remainder to Space::Core's own dry-cli registry and translates
10
- # Space::Core's recorded Outcome into the host exit code.
11
- # Space::Core has its own Registry, Outcome, and :space_core_cli_outcome thread-local;
12
- # this is the seam between the two registries (NOT a re-registration).
13
- def self.dispatch_space(rest, out = $stdout, err = $stderr)
14
- if ::Space::Core::CLI::TOP_LEVEL_HELP.include?(rest)
15
- out.puts Dry::CLI::Usage.call(::Space::Core::CLI::Registry.get([]))
16
- return 0
17
- end
18
-
19
- if ::Space::Core::CLI::VERSION_REQUEST.include?(rest)
20
- out.puts ::Space::Core::VERSION
21
- return 0
22
- end
23
-
24
- Thread.current[:space_core_cli_outcome] = nil
25
- Dry::CLI.new(::Space::Core::CLI::Registry).call(arguments: rest, out: out, err: err)
26
- ::Space::Core::CLI.last_outcome&.exit_code || 0
27
- end
28
- end
29
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "space_src/cli"
4
-
5
- module Space::Architect
6
- module CLI
7
- # Exit-code bridge to the Space::Src CLI engine.
8
- # `architect src <args>` hands the raw remainder to Space::Src's own dry-cli
9
- # registry and translates Space::Src's recorded Outcome into the host exit code.
10
- # Space::Src has its own Registry, Outcome, and :space_src_cli_* thread-locals;
11
- # this is the seam between the two registries (NOT a re-registration). Space::Src's
12
- # top-level help/version interceptors call Kernel.exit, so we reproduce that
13
- # interception here against the injected IO instead of delegating to them.
14
- # dry-cli's internal exit on a bare group / unknown command propagates as
15
- # SystemExit — same as the host's own bare groups (e.g. `space repo`) — and is
16
- # intentionally NOT rescued (accepted behavior change).
17
- def self.dispatch_src(rest, out = $stdout, err = $stderr)
18
- if ::Space::Src::CLI::TOP_LEVEL_HELP.include?(rest)
19
- out.puts Dry::CLI::Usage.call(::Space::Src::CLI::Registry.get([]))
20
- return 0
21
- end
22
- if ::Space::Src::CLI::VERSION_REQUEST.include?(rest)
23
- out.puts ::Space::Src::VERSION
24
- return 0
25
- end
26
-
27
- if ::Space::Src::CLI.bare_query?(rest)
28
- paths = ::Space::Src::CLI.make_paths
29
- config = ::Space::Src::Config::Store.load(paths.config_file).success
30
- return ::Space::Src::Nav.dispatch(rest[0], out, err, config.base_dir)
31
- end
32
-
33
- Thread.current[:space_src_cli_outcome] = nil
34
- Dry::CLI.new(::Space::Src::CLI::Registry).call(arguments: rest, out: out, err: err)
35
- ::Space::Src::CLI.last_outcome&.exit_code || 0
36
- end
37
- end
38
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "fileutils"
4
-
5
- module Space::Core
6
- module AtomicWrite
7
- module_function
8
-
9
- def write(path, content)
10
- path = path.to_s
11
- dir = File.dirname(path)
12
- FileUtils.mkdir_p(dir)
13
- tmp_path = File.join(dir, ".#{File.basename(path)}.#{Process.pid}.tmp")
14
-
15
- File.write(tmp_path, content)
16
- File.rename(tmp_path, path)
17
- ensure
18
- FileUtils.rm_f(tmp_path) if defined?(tmp_path) && tmp_path && File.exist?(tmp_path)
19
- end
20
- end
21
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dry/cli"
4
-
5
- module Space::Core::CLI
6
- # Base for every space/architect command. dry-cli (>= 0.7.0) copies a
7
- # superclass's options to its subclasses, so the global colour options are
8
- # declared once here and inherited everywhere instead of being mixed in per
9
- # command. Helpers (terminal/store/render) ride along by inheritance too.
10
- #
11
- # The `src` binary has its own output-mode system (--plain/--json) and does
12
- # NOT inherit from this base.
13
- class BaseCommand < Dry::CLI::Command
14
- include Helpers
15
-
16
- option :color, type: :string, default: "auto", desc: "Color output: auto, always, never"
17
- option :colors, type: :string, desc: "Alias for --color"
18
- end
19
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "../oci_packer"
4
- require_relative "../oci_builder"
5
-
6
- module Space::Core::CLI
7
- class Build < BaseCommand
8
- desc "Build (and tag) the OCI image for the current space"
9
-
10
- def call(**opts)
11
- setup_terminal(**opts.slice(:color, :colors))
12
- handle_errors do
13
- result = store.current.bind do |space|
14
- out_dir = space.path.join("build", "oci")
15
- Space::Core::OciPacker.new(space: space, output_dir: out_dir).generate.bind do
16
- Space::Core::OciBuilder.new(space: space, output_dir: out_dir).command
17
- end
18
- end
19
- render(result) do |argv|
20
- terminal.say "Building: #{argv.join(' ')}"
21
- out.flush
22
- Kernel.exec(*argv)
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Space::Core::CLI
4
- module Config
5
- class Show < BaseCommand
6
- desc "Show current config"
7
-
8
- def call(**opts)
9
- setup_terminal(**opts.slice(:color, :colors))
10
- handle_errors do
11
- rows = Space::Core::Config::EDITABLE_KEYS.map do |key|
12
- value = project_config.data[key]
13
- [key, value.nil? ? "" : value.to_s]
14
- end
15
- terminal.say terminal.table(%w[Key Value], rows)
16
- CLI.record_outcome(Outcome.new(exit_code: 0))
17
- end
18
- end
19
- end
20
-
21
- class ConfigPath < BaseCommand
22
- desc "Print the config file path"
23
-
24
- def call(**opts)
25
- setup_terminal(**opts.slice(:color, :colors))
26
- handle_errors do
27
- terminal.say terminal.path(project_config.path)
28
- CLI.record_outcome(Outcome.new(exit_code: 0))
29
- end
30
- end
31
- end
32
-
33
- class Set < BaseCommand
34
- desc "Set a config key"
35
- argument :key, required: true, desc: "Config key"
36
- argument :value, required: true, desc: "Config value"
37
-
38
- def call(key:, value:, **opts)
39
- setup_terminal(**opts.slice(:color, :colors))
40
- handle_errors do
41
- project_config.set(key, value)
42
- stored = project_config.data[key]
43
- terminal.success "Set #{key}=#{stored.nil? ? '' : stored.to_s}"
44
- CLI.record_outcome(Outcome.new(exit_code: 0))
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Space::Core::CLI
4
- class Current < BaseCommand
5
- desc "Show the current space"
6
-
7
- def call(**opts)
8
- setup_terminal(**opts.slice(:color, :colors))
9
- render(store.find) do |space|
10
- terminal.say space.id.to_s
11
- terminal.say terminal.path(space.path)
12
- CLI.record_outcome(Outcome.new(exit_code: 0))
13
- end
14
- end
15
- end
16
- end