Class: Imap::Backup::CLI

Inherits:
Thor
  • Object
show all
Includes:
Helpers
Defined in:
lib/imap/backup/cli.rb,
lib/imap/backup/cli/local.rb,
lib/imap/backup/cli/setup.rb,
lib/imap/backup/cli/utils.rb,
lib/imap/backup/cli/backup.rb,
lib/imap/backup/cli/remote.rb,
lib/imap/backup/cli/helpers.rb,
lib/imap/backup/cli/restore.rb,
lib/imap/backup/cli/local/check.rb,
lib/imap/backup/cli/folder_enumerator.rb

Defined Under Namespace

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

Constant Summary collapse

NAMESPACE_CONFIGURATION_DESCRIPTION =
<<~DESC.freeze
  Some IMAP servers use namespaces (i.e. prefixes like "INBOX"),
  while others, while others concatenate the names of subfolders
  with a charater ("delimiter") other than "/".

  In these cases there are two choices.

  You can use the `--automatic-namespaces` option.
  This wil query the source and detination servers for their
  namespace configuration and will adapt paths accordingly.
  This option requires that both the source and destination
  servers are available and work with the provided parameters
  and authentication.

  If automatic configuration does not work as desired, there are the
  `--source-prefix=`, `--source-delimiter=`,
  `--destination-prefix=` and `--destination-delimiter=` parameters.
  To check what values you should use, check the output of the
  `imap-backup remote namespaces EMAIL` command.
DESC

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#account, included, #load_config, #options, #requested_accounts

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/imap/backup/cli.rb', line 66

def self.exit_on_failure?
  true
end

.start(args) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/imap/backup/cli.rb', line 46

def self.start(args)
  if args.include?("--version")
    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



88
89
90
91
# File 'lib/imap/backup/cli.rb', line 88

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

#migrate(source_email, destination_email) ⇒ Object



148
149
150
151
# File 'lib/imap/backup/cli.rb', line 148

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

#mirror(source_email, destination_email) ⇒ Object



207
208
209
210
# File 'lib/imap/backup/cli.rb', line 207

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

#restore(email = nil) ⇒ Object



224
225
226
227
# File 'lib/imap/backup/cli.rb', line 224

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

#setupObject



237
238
239
240
# File 'lib/imap/backup/cli.rb', line 237

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

#stats(email) ⇒ Object



257
258
259
260
# File 'lib/imap/backup/cli.rb', line 257

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

#versionObject



266
267
268
# File 'lib/imap/backup/cli.rb', line 266

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