class Rustic::CommandBuilder

Public Class Methods

new(command, config) click to toggle source
# File lib/rustic/command_builder.rb, line 9
def initialize(command, config)
  @command = command
  @config = config
end

Public Instance Methods

build() click to toggle source
# File lib/rustic/command_builder.rb, line 14
def build
  @args = []
  @env_variables = {}

  add_repository_path!
  add_password!

  config = add_command!

  [[@config.restic_path, *@args], @env_variables, config] # TODO: properly handle spaces in paths
end

Private Instance Methods

add_command!() click to toggle source
# File lib/rustic/command_builder.rb, line 37
def add_command!
  command_builder = Rustic::CommandBuilders.const_get(@command.capitalize).new(@config)
  @args.concat(command_builder.build)
  command_builder.config
rescue NameError
  raise UnknownCommandError, "Unknown command #{@command}"
end
add_password!() click to toggle source
# File lib/rustic/command_builder.rb, line 30
def add_password!
  return @env_variables.merge!("RESTIC_PASSWORD" => @config.password) if @config.password
  return @env_variables.merge!("RESTIC_PASSWORD_FILE" => @config.password_file) if @config.password_file

  raise UnknownPasswordMethodError
end
add_repository_path!(= @args.concat(["-r", @config.repository])) click to toggle source
# File lib/rustic/command_builder.rb, line 28
  def add_repository_path! = @args.concat(["-r", @config.repository])

  def add_password!
    return @env_variables.merge!("RESTIC_PASSWORD" => @config.password) if @config.password
    return @env_variables.merge!("RESTIC_PASSWORD_FILE" => @config.password_file) if @config.password_file

    raise UnknownPasswordMethodError
  end

  def add_command!
    command_builder = Rustic::CommandBuilders.const_get(@command.capitalize).new(@config)
    @args.concat(command_builder.build)
    command_builder.config
  rescue NameError
    raise UnknownCommandError, "Unknown command #{@command}"
  end
end