Module: Imap::Backup::CLI::Helpers
- Included in:
- Imap::Backup::CLI, Backup, Local, Local::Check, Migrate, Mirror, Remote, Restore, Setup, Single, Stats, Transfer, Utils
- Defined in:
- lib/imap/backup/cli/helpers.rb
Overview
Provides helper methods for CLI classes
Constant Summary collapse
- NAMESPACE_CONFIGURATION_DESCRIPTION =
Returns a description of the namespace configuration.
<<~DESC.freeze Some IMAP servers use namespaces (i.e. prefixes like "INBOX"), 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 will 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
-
#account(config, email) ⇒ Account
The Account information for the email address.
-
#load_config(**options) ⇒ Configuration
Loads the application configuration.
-
#options ⇒ Hash
Processes command-line parameters.
-
#requested_accounts(config) ⇒ Array<Account>
If email addresses have been specified returns the Account configurations for them.
Class Method Details
Instance Method Details
#account(config, email) ⇒ Account
Returns the Account information for the email address.
95 96 97 98 99 100 |
# File 'lib/imap/backup/cli/helpers.rb', line 95 def account(config, email) account = config.accounts.find { |a| a.username == email } raise I18n.t("cli.helpers.account_not_configured", email: email) if !account account end |
#load_config(**options) ⇒ Configuration
Loads the application configuration
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/imap/backup/cli/helpers.rb', line 70 def load_config(**) config_path = [:config] erb_config_path = [:erb_configuration] # Check mutual exclusivity raise I18n.t("cli.helpers.config_mutual_exclusivity") if config_path && erb_config_path # Handle ERB configuration return load_erb_config(erb_config_path, ) if erb_config_path # Handle regular JSON configuration path = config_path require_exists = .key?(:require_exists) ? [:require_exists] : true if require_exists exists = Configuration.exist?(path: path) if !exists expected = path || Configuration.default_pathname raise ConfigurationNotFound, I18n.t("cli.helpers.config_not_found", path: expected) end end Configuration.new(path: path) end |
#options ⇒ Hash
Processes command-line parameters
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/imap/backup/cli/helpers.rb', line 48 def @symbolized_options ||= # rubocop:disable Naming/MemoizedInstanceVariableName begin = super .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
105 106 107 108 109 110 111 112 |
# File 'lib/imap/backup/cli/helpers.rb', line 105 def requested_accounts(config) emails = ([:accounts] || "").split(",") if emails.any? config.accounts.filter { |a| emails.include?(a.username) } else config.accounts end end |