Class: Imap::Backup::CLI

Inherits:
Thor
  • Object
show all
Includes:
Helpers
Defined in:
lib/imap/backup/cli.rb

Defined Under Namespace

Modules: Helpers Classes: Backup, FolderEnumerator, Local, Migrate, Mirror, Remote, Restore, Setup, Stats, Utils

Constant Summary collapse

VERSION_ARGUMENTS =
%w(-v --version).freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#account, #connection, #each_connection, included, #load_config, #options

Class Method Details

.accounts_optionObject



52
53
54
55
56
57
58
59
# File 'lib/imap/backup/cli.rb', line 52

def self.accounts_option
  method_option(
    "accounts",
    type: :string,
    desc: "a comma-separated list of accounts (defaults to all configured accounts)",
    aliases: ["-a"]
  )
end

.exit_on_failure?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/imap/backup/cli.rb', line 48

def self.exit_on_failure?
  true
end

.start(*args) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/imap/backup/cli.rb', line 27

def self.start(*args)
  version_argument = ARGV & VERSION_ARGUMENTS
  if version_argument.any?
    new.version
    exit 0
  end

  # By default, commands like `imap-backup help foo bar`
  # are handled by listing all `foo` methods, whereas the user
  # probably wants the detailed help for the `bar` method.
  # Move initial "help" argument to after any subcommand,
  # so we get help for the requested subcommand method.
  first_argument_is_help = ARGV[0] == "help"
  second_argument_is_subcommand = subcommands.include?(ARGV[1])
  if first_argument_is_help && second_argument_is_subcommand
    help, subcommand = ARGV.shift(2)
    ARGV.unshift(subcommand, help)
  end
  super
end

Instance Method Details

#backupObject



79
80
81
82
# File 'lib/imap/backup/cli.rb', line 79

def backup
  non_logging_options = Imap::Backup::Logger.setup_logging(options)
  Backup.new(non_logging_options).run
end

#migrate(source_email, destination_email) ⇒ Object



136
137
138
139
# File 'lib/imap/backup/cli.rb', line 136

def migrate(source_email, destination_email)
  non_logging_options = Imap::Backup::Logger.setup_logging(options)
  Migrate.new(source_email, destination_email, **non_logging_options).run
end

#mirror(source_email, destination_email) ⇒ Object



186
187
188
189
# File 'lib/imap/backup/cli.rb', line 186

def mirror(source_email, destination_email)
  non_logging_options = Imap::Backup::Logger.setup_logging(options)
  Mirror.new(source_email, destination_email, **non_logging_options).run
end

#restore(email = nil) ⇒ Object



203
204
205
206
# File 'lib/imap/backup/cli.rb', line 203

def restore(email = nil)
  non_logging_options = Imap::Backup::Logger.setup_logging(options)
  Restore.new(email, non_logging_options).run
end

#setupObject



216
217
218
219
# File 'lib/imap/backup/cli.rb', line 216

def setup
  non_logging_options = Imap::Backup::Logger.setup_logging(options)
  Setup.new(non_logging_options).run
end

#stats(email) ⇒ Object



231
232
233
234
# File 'lib/imap/backup/cli.rb', line 231

def stats(email)
  non_logging_options = Imap::Backup::Logger.setup_logging(options)
  Stats.new(email, non_logging_options).run
end

#versionObject



240
241
242
# File 'lib/imap/backup/cli.rb', line 240

def version
  Kernel.puts "imap-backup #{Imap::Backup::VERSION}"
end