smp_tool-cli 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +16 -0
  3. data/.vscode/launch.json +21 -0
  4. data/CHANGELOG.md +3 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +83 -0
  7. data/Rakefile +16 -0
  8. data/exe/smp_tool +16 -0
  9. data/lib/smp_tool/cli/autoloader.rb +24 -0
  10. data/lib/smp_tool/cli/commands/base_command.rb +26 -0
  11. data/lib/smp_tool/cli/commands/delete.rb +28 -0
  12. data/lib/smp_tool/cli/commands/extract.rb +35 -0
  13. data/lib/smp_tool/cli/commands/extract_all.rb +28 -0
  14. data/lib/smp_tool/cli/commands/info.rb +22 -0
  15. data/lib/smp_tool/cli/commands/input_command.rb +17 -0
  16. data/lib/smp_tool/cli/commands/new.rb +80 -0
  17. data/lib/smp_tool/cli/commands/push.rb +29 -0
  18. data/lib/smp_tool/cli/commands/rename.rb +34 -0
  19. data/lib/smp_tool/cli/commands/resize.rb +28 -0
  20. data/lib/smp_tool/cli/commands/squeeze.rb +22 -0
  21. data/lib/smp_tool/cli/commands/version.rb +19 -0
  22. data/lib/smp_tool/cli/commands/volume_operation.rb +23 -0
  23. data/lib/smp_tool/cli/commands.rb +25 -0
  24. data/lib/smp_tool/cli/executor/base.rb +65 -0
  25. data/lib/smp_tool/cli/executor/bin_write_mixin.rb +56 -0
  26. data/lib/smp_tool/cli/executor/creator.rb +30 -0
  27. data/lib/smp_tool/cli/executor/deleter.rb +16 -0
  28. data/lib/smp_tool/cli/executor/extracter_base.rb +41 -0
  29. data/lib/smp_tool/cli/executor/extracter_txt.rb +22 -0
  30. data/lib/smp_tool/cli/executor/extracter_txt_all.rb +20 -0
  31. data/lib/smp_tool/cli/executor/informer.rb +78 -0
  32. data/lib/smp_tool/cli/executor/operator.rb +19 -0
  33. data/lib/smp_tool/cli/executor/pusher.rb +39 -0
  34. data/lib/smp_tool/cli/executor/renamer.rb +16 -0
  35. data/lib/smp_tool/cli/executor/resizer.rb +28 -0
  36. data/lib/smp_tool/cli/executor/squeezer.rb +16 -0
  37. data/lib/smp_tool/cli/executor/vol_read_operator.rb +69 -0
  38. data/lib/smp_tool/cli/executor/vol_read_write_operator.rb +25 -0
  39. data/lib/smp_tool/cli/executor.rb +10 -0
  40. data/lib/smp_tool/cli/logger.rb +67 -0
  41. data/lib/smp_tool/cli/version.rb +7 -0
  42. data/lib/smp_tool/cli/volume_specs_interface.rb +63 -0
  43. data/lib/smp_tool/cli.rb +30 -0
  44. data/sig/smp_tool/cli.rbs +6 -0
  45. data/smp_tool-cli.gemspec +39 -0
  46. metadata +172 -0
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SMPTool
4
+ module CLI
5
+ class VolumeSpecsInterface
6
+ def initialize(basic:, n_clusters:, n_dir_segs:, n_cls_per_dir_seg:, bootloader:)
7
+ @basic = basic.downcase
8
+ @n_clusters = n_clusters.to_i
9
+ @n_dir_segs = n_dir_segs.to_i
10
+ @n_cls_per_dir_seg = n_cls_per_dir_seg.to_i
11
+ @bootloader = bootloader.downcase
12
+
13
+ @namespace = _basic_namespace
14
+ end
15
+
16
+ def bootloader
17
+ _choose_bootloader
18
+ end
19
+
20
+ def home_block
21
+ @namespace::HOME_BLOCK
22
+ end
23
+
24
+ def volume_params
25
+ _volume_params
26
+ end
27
+
28
+ private
29
+
30
+ def _choose_bootloader
31
+ if AUTO_BL_LBL.include?(@bootloader)
32
+ @namespace::AUTO_BOOTLOADER
33
+ elsif DEF_BL_LBL.include?(@bootloader)
34
+ @namespace::DEFAULT_BOOTLOADER
35
+ else
36
+ raise ArgumentError, "Unknown bootloader type, supported values are: "\
37
+ "#{AUTO_BL_LBL}, #{DEF_BOOTLOADER}"
38
+ end
39
+ end
40
+
41
+ def _basic_namespace
42
+ if BAS_1_OPT.include?(@basic)
43
+ SMPTool::Basic10
44
+ elsif BAS_2_OPT.include?(@basic)
45
+ SMPTool::Basic20
46
+ else
47
+ raise ArgumentError, "Unknown BASIC version, supported values are: "\
48
+ "#{BAS_1_OPT}, #{BAS_2_OPT}"
49
+ end
50
+ end
51
+
52
+ def _volume_params
53
+ SMPTool::VirtualVolume::VolumeParams.new(
54
+ n_clusters_allocated: @n_clusters,
55
+ n_extra_bytes_per_entry: @namespace::N_EXTRA_BYTES_PER_ENTRY,
56
+ n_dir_segs: @n_dir_segs,
57
+ n_clusters_per_dir_seg: @n_cls_per_dir_seg,
58
+ extra_word: @namespace::ENTRY_EXTRA_WORD
59
+ )
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/cli"
4
+ require "dry/files"
5
+ require "smp_tool"
6
+ require "zeitwerk"
7
+
8
+ require_relative "cli/autoloader"
9
+ require_relative "cli/version"
10
+
11
+ SMPTool::CLI::Autoloader.setup
12
+
13
+ module SMPTool
14
+ module CLI
15
+ class Error < StandardError; end
16
+ AUTO_BL_LBL = "auto"
17
+ DEF_BL_LBL = "default"
18
+
19
+ DEF_N_CLUSTERS = 20
20
+ DEF_N_DIR_SEGS = 1
21
+ DEF_N_CLS_PER_DIR_SEG = 2
22
+ DEF_BOOTLOADER = DEF_BL_LBL
23
+
24
+ BAS_1_OPT = %w[1 1.0 one].freeze
25
+ BAS_2_OPT = %w[2 2.0 two].freeze
26
+
27
+ AUTO_BL_OPT = ["a", AUTO_BL_LBL].freeze
28
+ DEF_BL_OPT = ["d", "def", DEF_BL_LBL].freeze
29
+ end
30
+ end
@@ -0,0 +1,6 @@
1
+ module SMPTool
2
+ module CLI
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/smp_tool/cli/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "smp_tool-cli"
7
+ spec.version = SMPTool::CLI::VERSION
8
+ spec.authors = ["8bit-m8"]
9
+ spec.email = ["you@example.com"]
10
+
11
+ spec.summary = "CLI for the smp_tool lib."
12
+ spec.homepage = "https://github.com/8bit-mate/smp_tool-cli.rb"
13
+ spec.license = "MIT"
14
+ spec.required_ruby_version = ">= 3.0.0"
15
+
16
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
17
+
18
+ spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["source_code_uri"] = spec.homepage
20
+ spec.metadata["changelog_uri"] = spec.homepage
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(__dir__) do
25
+ `git ls-files -z`.split("\x0").reject do |f|
26
+ (File.expand_path(f) == __FILE__) ||
27
+ f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor Gemfile])
28
+ end
29
+ end
30
+
31
+ spec.bindir = "exe"
32
+ spec.executables = ["smp_tool"]
33
+ spec.require_paths = ["lib"]
34
+
35
+ spec.add_dependency "dry-cli", "~> 1.0", ">= 1.0.0"
36
+ spec.add_dependency "dry-files", "~> 1.1", ">= 1.1.0"
37
+ spec.add_dependency "smp_tool", "~> 0.1", ">= 0.1.0"
38
+ spec.add_dependency "zeitwerk", "~> 2.6", ">= 2.6.12"
39
+ end
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: smp_tool-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - 8bit-m8
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-03-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dry-cli
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: dry-files
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.1'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.1.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.1'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.1.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: smp_tool
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.1'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.1.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.1'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.1.0
73
+ - !ruby/object:Gem::Dependency
74
+ name: zeitwerk
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '2.6'
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 2.6.12
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.6'
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 2.6.12
93
+ description:
94
+ email:
95
+ - you@example.com
96
+ executables:
97
+ - smp_tool
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - ".rubocop.yml"
102
+ - ".vscode/launch.json"
103
+ - CHANGELOG.md
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - exe/smp_tool
108
+ - lib/smp_tool/cli.rb
109
+ - lib/smp_tool/cli/autoloader.rb
110
+ - lib/smp_tool/cli/commands.rb
111
+ - lib/smp_tool/cli/commands/base_command.rb
112
+ - lib/smp_tool/cli/commands/delete.rb
113
+ - lib/smp_tool/cli/commands/extract.rb
114
+ - lib/smp_tool/cli/commands/extract_all.rb
115
+ - lib/smp_tool/cli/commands/info.rb
116
+ - lib/smp_tool/cli/commands/input_command.rb
117
+ - lib/smp_tool/cli/commands/new.rb
118
+ - lib/smp_tool/cli/commands/push.rb
119
+ - lib/smp_tool/cli/commands/rename.rb
120
+ - lib/smp_tool/cli/commands/resize.rb
121
+ - lib/smp_tool/cli/commands/squeeze.rb
122
+ - lib/smp_tool/cli/commands/version.rb
123
+ - lib/smp_tool/cli/commands/volume_operation.rb
124
+ - lib/smp_tool/cli/executor.rb
125
+ - lib/smp_tool/cli/executor/base.rb
126
+ - lib/smp_tool/cli/executor/bin_write_mixin.rb
127
+ - lib/smp_tool/cli/executor/creator.rb
128
+ - lib/smp_tool/cli/executor/deleter.rb
129
+ - lib/smp_tool/cli/executor/extracter_base.rb
130
+ - lib/smp_tool/cli/executor/extracter_txt.rb
131
+ - lib/smp_tool/cli/executor/extracter_txt_all.rb
132
+ - lib/smp_tool/cli/executor/informer.rb
133
+ - lib/smp_tool/cli/executor/operator.rb
134
+ - lib/smp_tool/cli/executor/pusher.rb
135
+ - lib/smp_tool/cli/executor/renamer.rb
136
+ - lib/smp_tool/cli/executor/resizer.rb
137
+ - lib/smp_tool/cli/executor/squeezer.rb
138
+ - lib/smp_tool/cli/executor/vol_read_operator.rb
139
+ - lib/smp_tool/cli/executor/vol_read_write_operator.rb
140
+ - lib/smp_tool/cli/logger.rb
141
+ - lib/smp_tool/cli/version.rb
142
+ - lib/smp_tool/cli/volume_specs_interface.rb
143
+ - sig/smp_tool/cli.rbs
144
+ - smp_tool-cli.gemspec
145
+ homepage: https://github.com/8bit-mate/smp_tool-cli.rb
146
+ licenses:
147
+ - MIT
148
+ metadata:
149
+ allowed_push_host: https://rubygems.org
150
+ homepage_uri: https://github.com/8bit-mate/smp_tool-cli.rb
151
+ source_code_uri: https://github.com/8bit-mate/smp_tool-cli.rb
152
+ changelog_uri: https://github.com/8bit-mate/smp_tool-cli.rb
153
+ post_install_message:
154
+ rdoc_options: []
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: 3.0.0
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ requirements: []
168
+ rubygems_version: 3.4.10
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: CLI for the smp_tool lib.
172
+ test_files: []