class Kitsune::Kit::Commands::BootstrapDocker

def execute

def execute
  filled_options = Kitsune::Kit::OptionsBuilder.build(
    options,
    required: [:server_ip],
    defaults: Kitsune::Kit::Defaults.ssh
  )
  if filled_options[:rollback]
    say "🔄 Rolling back full Docker setup...", :yellow
    rollback_sequence(filled_options)
  else
    say "🐳 Running full Docker setup...", :green
    setup_sequence(filled_options)
  end
  say "🎉 Done!", :green
end

def rollback_sequence(filled_options)

def rollback_sequence(filled_options)
  run_cli("postinstall_docker rollback", filled_options)
  run_cli("install_docker_engine rollback", filled_options)
  run_cli("setup_docker_prereqs rollback", filled_options)
end

def run_cli(command, filled_options)

def run_cli(command, filled_options)
  say "\n▶️ Running: kitsune kit #{command} --server-ip #{filled_options[:server_ip]}", :blue
  subcommand, action = command.split(" ", 2)
  Kitsune::Kit::CLI.start([
    subcommand, action,
    "--server-ip", filled_options[:server_ip],
    "--ssh-port",  filled_options[:ssh_port],
    "--ssh-key-path", filled_options[:ssh_key_path]
  ])
rescue SystemExit => e
  abort "❌ Command failed: #{command} (exit #{e.status})"
end

def setup_sequence(filled_options)

def setup_sequence(filled_options)
  run_cli("setup_docker_prereqs create", filled_options)
  run_cli("install_docker_engine create", filled_options)
  run_cli("postinstall_docker create", filled_options)
end