summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-18 18:41:03 +0200
committerPaul Buetow <paul@buetow.org>2026-03-18 18:41:03 +0200
commitbc7c64c601626e6a9fcd2c1e21a07a2e26e12e4d (patch)
tree1e8f946914bb99d80ad147a9aa0a529a15163af2
parentdfff40fba437841722e38bb2df0980f9b99c89af (diff)
fix: refactor CLI help to DRY up duplicated code
-rwxr-xr-xsnippets/hyperstack/hyperstack.rb47
1 files changed, 20 insertions, 27 deletions
diff --git a/snippets/hyperstack/hyperstack.rb b/snippets/hyperstack/hyperstack.rb
index 85b766f..d5b409b 100755
--- a/snippets/hyperstack/hyperstack.rb
+++ b/snippets/hyperstack/hyperstack.rb
@@ -1922,48 +1922,41 @@ module HyperstackVM
class CLI
def initialize(argv)
@argv = argv.dup
+ @config_path = File.join(__dir__, 'hyperstack-vm.toml')
end
- def run
- global = {
- config_path: File.join(__dir__, 'hyperstack-vm.toml')
- }
+ def show_help
+ puts @global_parser
+ puts
+ puts 'Commands:'
+ puts ' create [--replace] [--dry-run] [--vllm|--no-vllm] [--ollama|--no-ollama] [--model PRESET]'
+ puts ' delete [--vm-id ID] [--dry-run]'
+ puts ' status'
+ puts ' test'
+ puts ' model list'
+ puts ' model switch PRESET [--dry-run]'
+ end
- global_parser = OptionParser.new do |opts|
+ def run
+ @global_parser = OptionParser.new do |opts|
opts.banner = 'Usage: ruby hyperstack.rb [--config path] <create|delete|status> [options]'
- opts.on('--config PATH', "Path to TOML config (default: #{global[:config_path]})") do |value|
- global[:config_path] = value
+ opts.on('--config PATH', "Path to TOML config (default: #{@config_path})") do |value|
+ @config_path = value
end
opts.on('-h', '--help', 'Show help') do
- puts opts
- puts
- puts 'Commands:'
- puts ' create [--replace] [--dry-run] [--vllm|--no-vllm] [--ollama|--no-ollama] [--model PRESET]'
- puts ' delete [--vm-id ID] [--dry-run]'
- puts ' status'
- puts ' test'
- puts ' model list'
- puts ' model switch PRESET [--dry-run]'
+ show_help
exit 0
end
end
- global_parser.order!(@argv)
+ @global_parser.order!(@argv)
command = @argv.shift
if command.nil?
- puts global_parser
- puts
- puts 'Commands:'
- puts ' create [--replace] [--dry-run] [--vllm|--no-vllm] [--ollama|--no-ollama] [--model PRESET]'
- puts ' delete [--vm-id ID] [--dry-run]'
- puts ' status'
- puts ' test'
- puts ' model list'
- puts ' model switch PRESET [--dry-run]'
+ show_help
exit 0
end
- config_loader = ConfigLoader.load(global[:config_path])
+ config_loader = ConfigLoader.load(@config_path)
state_store = StateStore.new(config_loader.config.state_file)
client = HyperstackClient.new(base_url: config_loader.config.api_base_url, api_key: config_loader.config.api_key)
local_wireguard = LocalWireGuard.new(