asimov-construct-cli 25.0.0.dev.4

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 (4) hide show
  1. checksums.yaml +7 -0
  2. data/VERSION +1 -0
  3. data/bin/asimov-construct +125 -0
  4. metadata +131 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 91cd88edf78536d9d35e6c0e6c5dba5efff2d9787fa86cd231025f4d6d95a198
4
+ data.tar.gz: 55f41bb22a58208916ab481ed7021a226358037871ebf21f4fcf89a2a21a8cc0
5
+ SHA512:
6
+ metadata.gz: c823179d0f008dc8cf5c9de509e4e55898760e8138efac057e8f140a8b677d5478f3eb71e1bdefb4b8117241f5da7e45903d98e991bc2be99f846d8b78bc59e4
7
+ data.tar.gz: adb9a20b1129358e018a48fc675f4a6e5f5802d845b1046d85056bdd456f29dde9b069180201ca65dd83b30b91ba9f1f98ba5154e351d09e062962fd1317762e
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 25.0.0.dev.4
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env ruby
2
+ require "bundler/setup"
3
+
4
+ require "asimov/config"
5
+ require "asimov/construct"
6
+ require "dry/cli"
7
+
8
+ trap(:SIGINT) { abort "" }
9
+
10
+ class ASIMOV::Construct; end
11
+
12
+ class ASIMOV::Construct::CLI
13
+ extend Dry::CLI::Registry
14
+
15
+ class Help < Dry::CLI::Command
16
+ desc "Print help"
17
+
18
+ argument :command, type: :string, desc: "Command"
19
+ option :format, type: :string, default: "text", aliases: %w(-o), values: %w(text json), desc: "Format"
20
+
21
+ def call(command: nil, format:, **)
22
+ # TODO
23
+ end
24
+ end # Help
25
+
26
+ class Clone < Dry::CLI::Command
27
+ desc "Clone a construct"
28
+
29
+ argument :id, type: :string, required: true, desc: "Construct ID"
30
+
31
+ def call(id:, **)
32
+ # TODO
33
+ end
34
+ end # Clone
35
+
36
+ class Create < Dry::CLI::Command
37
+ desc "Create a construct"
38
+
39
+ argument :id, type: :string, required: true, desc: "Construct ID"
40
+
41
+ def call(id:, **)
42
+ # TODO
43
+ end
44
+ end # Create
45
+
46
+ class Edit < Dry::CLI::Command
47
+ desc "Edit a construct"
48
+
49
+ argument :id, type: :string, required: true, desc: "Construct ID"
50
+
51
+ def call(id:, **)
52
+ # TODO
53
+ end
54
+ end # Edit
55
+
56
+ class Export < Dry::CLI::Command
57
+ desc "Export a construct"
58
+
59
+ argument :id, type: :string, required: true, desc: "Construct ID"
60
+ option :format, type: :string, default: "kdl", aliases: %w(-o), values: %w(json kdl yaml), desc: "Format"
61
+
62
+ def call(id:, format: nil, **)
63
+ construct = ASIMOV::Construct.open(id)
64
+ raise ArgumentError, "unknown construct: #{id}" unless construct
65
+
66
+ output = case (format || :kdl).to_sym
67
+ when :json then construct.to_json
68
+ when :kdl then construct.to_kdl.inspect
69
+ when :yaml then construct.to_yaml
70
+ else raise ArgumentError, "invalid output format: #{format}"
71
+ end
72
+ puts output
73
+ end
74
+ end # Export
75
+
76
+ class Import < Dry::CLI::Command
77
+ desc "Import a construct"
78
+
79
+ def call(**)
80
+ # TODO
81
+ end
82
+ end # Import
83
+
84
+ class List < Dry::CLI::Command
85
+ desc "List available constructs"
86
+
87
+ def call(**)
88
+ ASIMOV::Construct.each do |construct|
89
+ puts [construct.id, construct.name].join("\t")
90
+ end
91
+ end
92
+ end # List
93
+
94
+ class Remove < Dry::CLI::Command
95
+ desc "Remove a construct"
96
+
97
+ argument :id, type: :string, required: true, desc: "Construct ID"
98
+
99
+ def call(id:, **)
100
+ # TODO
101
+ end
102
+ end # Remove
103
+
104
+ class Rename < Dry::CLI::Command
105
+ desc "Rename a construct"
106
+
107
+ argument :id, type: :string, required: true, desc: "Construct ID"
108
+
109
+ def call(id:, **)
110
+ # TODO
111
+ end
112
+ end # Rename
113
+
114
+ register :help.to_s, Help, aliases: %w()
115
+ register :clone.to_s, Clone, aliases: %w(cp copy)
116
+ register :create.to_s, Create, aliases: %w(new)
117
+ register :edit.to_s, Edit, aliases: %w()
118
+ register :export.to_s, Export, aliases: %w(show info describe)
119
+ register :import.to_s, Import, aliases: %w(download)
120
+ register :list.to_s, List, aliases: %w(ls dir)
121
+ register :remove.to_s, Remove, aliases: %w(rm)
122
+ register :rename.to_s, Rename, aliases: %w(mv)
123
+ end # ASIMOV::Construct::CLI
124
+
125
+ Dry::CLI.new(ASIMOV::Construct::CLI).call
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: asimov-construct-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 25.0.0.dev.4
5
+ platform: ruby
6
+ authors:
7
+ - ASIMOV Protocol
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-02-15 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rake
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '13'
19
+ type: :development
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '13'
26
+ - !ruby/object:Gem::Dependency
27
+ name: rspec
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '3.12'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '3.12'
40
+ - !ruby/object:Gem::Dependency
41
+ name: yard
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0.9'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0.9'
54
+ - !ruby/object:Gem::Dependency
55
+ name: asimov-config
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - '='
59
+ - !ruby/object:Gem::Version
60
+ version: 25.0.0.dev.4
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '='
66
+ - !ruby/object:Gem::Version
67
+ version: 25.0.0.dev.4
68
+ - !ruby/object:Gem::Dependency
69
+ name: asimov-construct
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 25.0.0.dev.4
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '='
80
+ - !ruby/object:Gem::Version
81
+ version: 25.0.0.dev.4
82
+ - !ruby/object:Gem::Dependency
83
+ name: dry-cli
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.2'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.2'
96
+ description: ''
97
+ email: support@asimov.so
98
+ executables:
99
+ - asimov-construct
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - VERSION
104
+ - bin/asimov-construct
105
+ homepage: https://cli.asimov.so
106
+ licenses:
107
+ - Unlicense
108
+ metadata:
109
+ bug_tracker_uri: https://github.com/asimov-platform/asimov-cli/issues
110
+ changelog_uri: https://github.com/asimov-platform/asimov-cli/blob/master/CHANGES.md
111
+ documentation_uri: https://github.com/asimov-platform/asimov-cli/blob/master/README.md
112
+ homepage_uri: https://cli.asimov.so
113
+ source_code_uri: https://github.com/asimov-platform/asimov-cli
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '3.2'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubygems_version: 3.6.2
129
+ specification_version: 4
130
+ summary: ASIMOV Command-Line Interface (CLI)
131
+ test_files: []