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 =
"Some IMAP servers use namespaces (i.e. prefixes like \"INBOX\"),\nwhile others, while others concatenate the names of subfolders\nwith a charater (\"delimiter\") other than \"/\".\n\nIn these cases there are two choices.\n\nYou can use the `--automatic-namespaces` option.\nThis wil query the source and detination servers for their\nnamespace configuration and will adapt paths accordingly.\nThis option requires that both the source and destination\nservers are available and work with the provided parameters\nand authentication.\n\nIf automatic configuration does not work as desired, there are the\n`--source-prefix=`, `--source-delimiter=`,\n`--destination-prefix=` and `--destination-delimiter=` parameters.\nTo check what values you should use, check the output of the\n`imap-backup remote namespaces EMAIL` command.\n".freeze

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