asimov-construct-cli 25.0.0.dev.4

Sign up to get free protection for your applications and to get access to all the features.
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: []