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

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/imap/backup/cli/helpers.rb', line 5

def self.included(base)
  base.class_eval do
    def self.config_option
      method_option(
        "config",
        type: :string,
        desc: "supply the configuration file path (default: ~/.imap-backup/config.json)",
        aliases: ["-c"]
      )
    end

    def self.format_option
      method_option(
        "format",
        type: :string,
        desc: "the output type, 'text' for plain text or 'json'",
        aliases: ["-f"]
      )
    end

    def self.quiet_option
      method_option(
        "quiet",
        type: :boolean,
        desc: "silence all output",
        aliases: ["-q"]
      )
    end

    def self.verbose_option
      method_option(
        "verbose",
        type: :boolean,
        desc: "increase the amount of logging",
        aliases: ["-v"]
      )
    end
  end
end

Instance Method Details

#account(config, email) ⇒ Object


74
75
76
77
78
79
# File 'lib/imap/backup/cli/helpers.rb', line 74

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

  
end

#connection(config, email) ⇒ Object


81
82
83
84
85
# File 'lib/imap/backup/cli/helpers.rb', line 81

def connection(config, email)
   = (config, email)

  Account::Connection.new()
end

#each_connection(config, names) ⇒ Object


87
88
89
90
91
92
93
94
95
# File 'lib/imap/backup/cli/helpers.rb', line 87

def each_connection(config, names)
  config.accounts.each do ||
    next if names.any? && !names.include?(.username)

    yield .connection
  end
rescue ConfigurationNotFound
  raise "imap-backup is not configured. Run `imap-backup setup`"
end

#load_config(**options) ⇒ Object


61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/imap/backup/cli/helpers.rb', line 61

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

#optionsObject


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

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