Module: Imap::Backup::CLI::Helpers

Included in:
Imap::Backup::CLI, Backup, Local, Local::Check, Remote, Restore, Setup, Single, Stats, Transfer, Utils
Defined in:
lib/imap/backup/cli/helpers.rb

Overview

Provides helper methods for CLI classes

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



14
15
16
17
# File 'lib/imap/backup/cli/helpers.rb', line 14

def self.included(base)
  options = CLI::Options.new(base: base)
  options.define_options
end

Instance Method Details

#account(config, email) ⇒ Account

Returns the Account information for the email address.

Returns:

  • (Account)

    the Account information for the email address

Raises:

  • (RuntimeError)

    if the account does not exist



57
58
59
60
61
62
# File 'lib/imap/backup/cli/helpers.rb', line 57

def (config, email)
   = config.accounts.find { |a| a.username == email }
  raise "#{email} is not a configured account" if !

  
end

#load_config(**options) ⇒ Configuration

Loads the application configuration

Returns:

Raises:



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/imap/backup/cli/helpers.rb', line 42

def load_config(**options)
  path = options[:config]
  require_exists = options.key?(:require_exists) ? options[:require_exists] : true
  if require_exists
    exists = Configuration.exist?(path: path)
    if !exists
      expected = path || Configuration.default_pathname
      raise ConfigurationNotFound, "Configuration file '#{expected}' not found"
    end
  end
  Configuration.new(path: path)
end

#optionsHash

Processes command-line parameters

Returns:

  • (Hash)

    the supplied command-line parameters with with hyphens in keys replaced by underscores and the keys converted to Symbols



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/imap/backup/cli/helpers.rb', line 23

def options
  @symbolized_options ||= # rubocop:disable Naming/MemoizedInstanceVariableName
    begin
      options = super
      options.each.with_object({}) do |(k, v), acc|
        key =
          if k.is_a?(String)
            k.gsub("-", "_").intern
          else
            k
          end
        acc[key] = v
      end
    end
end

#requested_accounts(config) ⇒ Array<Account>

If email addresses have been specified returns the Account configurations for them. If non have been specified, returns all account configurations

Returns:

  • (Array<Account>)

    If email addresses have been specified returns the Account configurations for them. If non have been specified, returns all account configurations



67
68
69
70
71
72
73
74
# File 'lib/imap/backup/cli/helpers.rb', line 67

def requested_accounts(config)
  emails = (options[:accounts] || "").split(",")
  if emails.any?
    config.accounts.filter { |a| emails.include?(a.username) }
  else
    config.accounts
  end
end