Class: BoringBackup::CLI

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/boring_backup/cli.rb

Constant Summary collapse

INITIALIZER =
"config/initializers/boring_backup.rb"
RECURRING =
"config/recurring.yml"
BINSTUB =
"bin/bb"
DEFAULT_SCHEDULE =
"every day at 3am"
PRODUCTION_ANCHOR =
/^production:[ \t]*\r?\n/
SPINNER =
%w[         ].freeze
REDRAW_INTERVAL =
0.1

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


22
# File 'lib/boring_backup/cli.rb', line 22

def self.exit_on_failure? = true

.source_rootObject



24
# File 'lib/boring_backup/cli.rb', line 24

def self.source_root = File.expand_path("templates", __dir__)

Instance Method Details

#backupObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/boring_backup/cli.rb', line 27

def backup
  spinner("Booting") { BoringBackup.prepare! }

  say "  #{pastel.bold("Boring Backup")}  #{pastel.dim(BoringBackup.config.pg_env["PGDATABASE"])}"

  result = stream_backup

  result.store_results.each { |store_result| say "  #{store_line(store_result)}" }
  say "\n  #{verdict(result)}\n"

  exit 1 unless result.success?
rescue => e
  say "  #{pastel.red("")} #{e.message}\n"
  exit 1
end

#doctorObject



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/boring_backup/cli.rb', line 44

def doctor
  spinner("Booting") { BoringBackup.prepare! }

  say "  #{pastel.bold("Boring Backup")}  #{pastel.dim("doctor · #{BoringBackup.environment}")}"

  result = spinner("Running checks") { BoringBackup::Commands::Doctor.execute }

  width = result.checks.map { |check| check.name.length }.max

  result.checks.each { |check| say "  #{check_line(check, width)}" }
  say "\n  #{doctor_verdict(result)}\n"

  exit 1 unless result.success?
rescue => e
  say "  #{pastel.red("")} #{e.message}\n"
  exit 1
end

#installObject



63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/boring_backup/cli.rb', line 63

def install
  say "\n  #{pastel.bold("Boring Backup")}\n\n"

  preflight

  store = configure_store
  write_initializer(store)
  install_schedule
  install_binstub

  say_next_steps
end