Class: KamalBackup::CLI::DrillCLI

Inherits:
CommandBase show all
Defined in:
lib/kamal_backup/cli.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#accessory_name, #accessory_reboot_command, #bridge, #command_env, #confirm!, #confirm_production_restore!, #default_deploy_config?, #deploy_snippet, #deployment_mode?, #direct_app, #ensure_remote_version_match!, #exec_remote, #init_config_root, #local_app, #local_command_config, #local_preferences, #print_remote_version_status, #production_restore_confirmation_config, #production_source_defaults, #prompt_required, #redactor, #remote_command_mode?, #remote_version, #require_typed_confirmation, #shared_config_path, #shared_config_source_defaults, #shared_config_template, #validate_deploy_config, #write_init_file

Class Method Details

.basenameObject



288
289
290
# File 'lib/kamal_backup/cli.rb', line 288

def self.basename
  CLI.basename
end

Instance Method Details

#local(snapshot = "latest") ⇒ Object



294
295
296
297
298
299
# File 'lib/kamal_backup/cli.rb', line 294

def local(snapshot = "latest")
  confirm!("Run a local restore drill for #{snapshot}? This will overwrite local data.")
  result = local_app.drill_on_local_machine(snapshot, check_command: options[:check])
  puts(JSON.pretty_generate(result))
  exit(1) if local_app.drill_failed?(result)
end

#production(snapshot = "latest") ⇒ Object



306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
# File 'lib/kamal_backup/cli.rb', line 306

def production(snapshot = "latest")
  confirm!("Run a production-side restore drill for #{snapshot}? This will restore into scratch targets on production infrastructure.")

  if deployment_mode?
    argv = ["kamal-backup", "drill", "production", snapshot, "--files", options[:files], "--yes"]
    argv.concat(["--database", production_database_name]) if production_database_name
    argv.concat(["--sqlite-path", options[:"sqlite-path"]]) if options[:"sqlite-path"]
    argv.concat(["--check", options[:check]]) if options[:check]
    exec_remote(argv)
  else
    result = direct_app.drill_on_production(
      snapshot,
      database_name: production_database_name,
      sqlite_path: options[:"sqlite-path"],
      file_target: options[:files],
      check_command: options[:check]
    )
    puts(JSON.pretty_generate(result))
    exit(1) if direct_app.drill_failed?(result)
  end
end