4
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
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# 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
|