class Parameter

Public Class Methods

parse(options) click to toggle source
# File lib/container/parameter.rb, line 4
  def self.parse(options)
    args = {}

    opt_parser = OptionParser.new do |opts|

      opts.banner = <<BANNER

Usage: #{File.basename($0)} [options] container_names

Back up or restore container assets base on docker-compose label configuration
Handles:
  * volumes
  * databases
  * mapped directories

BANNER

      args[:filename] = 'docker-compose.yml'
      opts.on("-f", "--file=DOCKERFILE", "Docker file with backup/restore configuration") do |n|
        args[:filename] = n
      end
      args[:backup] = true
      opts.on("-b", "--backup", "Backup") do |n|
        args[:backup] = n
      end
      args[:directory] = "backup/backup_#{Time.now.strftime('%Y%m%dT%H%M%S')}"
      opts.on("-d", "--directory=BACKUP_DIRECTORY", "Backup") do |n|
        args[:directory] = n
      end
      opts.on("-r", "--restore", "Restore") do |n|
        args[:restore] = n
      end
      opts.on("--review", "Review backup/restore actions") do |n|
        args[:review] = n
      end
      opts.on("--details", "Review backup/restore actions with commands to be executed") do |n|
        args[:details] = n
      end

      opts.on("-h", "--help", "Prints this help") do
        puts opts
        exit
      end
    end

    opt_parser.parse!(options)
    return args.merge({containers: ARGV})
  rescue OptionParser::InvalidOption, OptionParser::MissingArgument => e

    puts ["\nError:\n------\n", e.message, "\n------\n"]
    opt_parser.parse!(['-h'])

  end