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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/vagrant-docker-networks-manager/command.rb', line 24
def execute
argv = @argv.dup
@opts = {
quiet: false, no_emoji: false, json: false, yes: false,
lang: nil, with_containers: false, driver: nil, parent: nil
}
UiHelpers.setup_i18n!
OptionParser.new do |o|
o.on("--quiet", "Reduce output (hide info)") { @opts[:quiet] = true }
o.on("--no-emoji", "Disable emojis in output") { @opts[:no_emoji] = true }
o.on("--json", "Normalized JSON output for all commands") { @opts[:json] = true }
o.on("--yes", "-y", "Auto-confirm destructive operations") { @opts[:yes] = true }
o.on("--lang LANG", "Force language: en|fr") { |v| @opts[:lang] = v }
o.on("--driver DRIVER", "init: network driver bridge|macvlan|ipvlan") { |v| @opts[:driver] = v }
o.on("--parent IFACE", "init: parent host interface (macvlan/ipvlan)") { |v| @opts[:parent] = v }
o.on(
'--with-containers',
'When destroying a network, also remove attached containers'
) { @opts[:with_containers] = true }
end.permute!(argv)
begin
if @opts[:lang]
UiHelpers.set_locale!(@opts[:lang])
elsif ENV["VDNM_LANG"]
UiHelpers.set_locale!(ENV["VDNM_LANG"])
else
UiHelpers.setup_i18n!
end
rescue UiHelpers::UnsupportedLocaleError, UiHelpers::MissingTranslationError => ex
err(ex.message)
return 1
end
subcmd = argv[0]
network_name = argv[1]
subnet = argv[2]
needs_docker = %w[init destroy info reload list prune rename].include?(subcmd)
if needs_docker && !Util.docker_available?
return json_or_text("precheck", error: I18n.t('vdnm.errors.docker_unavailable'), code: 2)
end
case subcmd
when "init" then cmd_init(network_name, subnet)
when "destroy" then cmd_destroy(network_name)
when "info" then cmd_info(network_name)
when "reload" then cmd_reload(network_name)
when "prune" then cmd_prune(network_name)
when "list" then cmd_list
when "rename" then cmd_rename(argv)
when "version" then cmd_version
when "help" then UiHelpers.print_topic_help(argv[1]); 0
else json_or_text("unknown", error: I18n.t("vdnm.errors.unknown_command"), code: 1)
end
end
|