Module: Bitfab::ReplayCommand
- Defined in:
- lib/bitfab/replay_cli.rb
Overview
Installed command that loads a project-owned registry module.
Constant Summary collapse
- USAGE =
"Usage: bitfab-replay --registry <path> <pipeline> [replay options]"- HELP =
"#{USAGE}\nRun bitfab-replay --registry <path> --help to list replay options."
Class Method Summary collapse
- .load_registry(path) ⇒ Object
- .main(argv: ARGV, stdout: $stdout, stderr: $stderr) ⇒ Object
- .parse(argv) ⇒ Object
- .run(argv: ARGV, stdout: $stdout, stderr: $stderr, registry_loader: nil) ⇒ Object
Class Method Details
.load_registry(path) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/bitfab/replay_cli.rb', line 46 def load_registry(path) container = Module.new container.module_eval(File.read(path), path) registry = container.const_get(:REGISTRY, false) if container.const_defined?(:REGISTRY, false) unless registry.is_a?(ReplayRegistry) raise ArgumentError, "Replay registry '#{path}' must define REGISTRY as a Bitfab::ReplayRegistry." end registry end |
.main(argv: ARGV, stdout: $stdout, stderr: $stderr) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/bitfab/replay_cli.rb', line 20 def main(argv: ARGV, stdout: $stdout, stderr: $stderr) if (argv.include?("--help") || argv.include?("-h")) && !argv.include?("--registry") stdout.puts HELP return 0 end run(argv:, stdout:, stderr:) 0 rescue => error stderr.puts error. 1 end |
.parse(argv) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/bitfab/replay_cli.rb', line 32 def parse(argv) values = argv.dup registry_index = values.index("--registry") registry_path = values[registry_index + 1] if registry_index unless registry_path && !registry_path.start_with?("--") raise OptionParser::MissingArgument, USAGE end values.slice!(registry_index, 2) raise OptionParser::MissingArgument, USAGE if values.empty? [File.(registry_path), values] end |
.run(argv: ARGV, stdout: $stdout, stderr: $stderr, registry_loader: nil) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/bitfab/replay_cli.rb', line 13 def run(argv: ARGV, stdout: $stdout, stderr: $stderr, registry_loader: nil) registry_path, replay_argv = parse(argv) loader = registry_loader || method(:load_registry) registry = loader.call(registry_path) ReplayCli.run(registry, argv: replay_argv, stdout:, stderr:) end |