magellan-cli 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +17 -1
  3. data/README.md +14 -80
  4. data/Rakefile +9 -0
  5. data/lib/magellan/cli/base.rb +3 -3
  6. data/lib/magellan/cli/command.rb +8 -2
  7. data/lib/magellan/cli/locales/en.yml +74 -46
  8. data/lib/magellan/cli/locales/ja.yml +74 -46
  9. data/lib/magellan/cli/messaging/base.rb +75 -0
  10. data/lib/magellan/cli/messaging/http.rb +49 -0
  11. data/lib/magellan/cli/messaging/mqtt.rb +21 -0
  12. data/lib/magellan/cli/messaging.rb +18 -0
  13. data/lib/magellan/cli/reference_generator.rb +23 -6
  14. data/lib/magellan/cli/resources/base.rb +11 -10
  15. data/lib/magellan/cli/resources/client_version.rb +3 -2
  16. data/lib/magellan/cli/resources/cloudsql.rb +4 -4
  17. data/lib/magellan/cli/resources/deletable.rb +1 -1
  18. data/lib/magellan/cli/resources/organization.rb +1 -1
  19. data/lib/magellan/cli/resources/project.rb +2 -2
  20. data/lib/magellan/cli/resources/stage.rb +16 -16
  21. data/lib/magellan/cli/resources/team.rb +2 -2
  22. data/lib/magellan/cli/resources/transaction_router.rb +1 -1
  23. data/lib/magellan/cli/resources/worker.rb +5 -4
  24. data/lib/magellan/cli/version.rb +1 -1
  25. data/lib/magellan/cli.rb +2 -0
  26. data/magellan-cli.gemspec +1 -0
  27. data/reference/en/client_version.md +83 -0
  28. data/reference/en/cloudsql.md +93 -0
  29. data/reference/en/container.md +65 -0
  30. data/reference/en/image.md +65 -0
  31. data/reference/en/index.md +63 -0
  32. data/reference/en/organization.md +83 -0
  33. data/reference/en/project.md +92 -0
  34. data/reference/en/stage.md +181 -0
  35. data/reference/en/team.md +74 -0
  36. data/reference/en/worker.md +107 -0
  37. data/reference/ja/client_version.md +83 -0
  38. data/reference/ja/cloudsql.md +93 -0
  39. data/reference/ja/container.md +65 -0
  40. data/reference/ja/image.md +65 -0
  41. data/reference/ja/index.md +63 -0
  42. data/reference/ja/organization.md +83 -0
  43. data/reference/ja/project.md +92 -0
  44. data/reference/ja/stage.md +181 -0
  45. data/reference/ja/team.md +74 -0
  46. data/reference/ja/worker.md +107 -0
  47. data/spec/magellan/cli/messaging/http_headers.json +5 -0
  48. data/spec/magellan/cli/messaging/http_headers.yml +3 -0
  49. data/spec/magellan/cli/messaging/http_spec.rb +43 -0
  50. metadata +45 -1
@@ -0,0 +1,18 @@
1
+ require "magellan/cli"
2
+
3
+ module Magellan
4
+ module Cli
5
+ module Messaging
6
+
7
+ autoload :Base, "magellan/cli/messaging/base"
8
+ autoload :Http, "magellan/cli/messaging/http"
9
+ # autoload :Spdy, "magellan/cli/messaging/spdy"
10
+ autoload :Mqtt, "magellan/cli/messaging/mqtt"
11
+
12
+ MAPPING = {
13
+ "Http" => "http",
14
+ "Mqtt" => "mqtt",
15
+ }
16
+ end
17
+ end
18
+ end
@@ -16,9 +16,13 @@ module Magellan
16
16
  @shell = Thor::Shell::Basic.new
17
17
  change_global_var_temporarily(["$PROGRAM_NAME", "magellan-cli"]) do
18
18
  process(Magellan::Cli::Command, "index.md")
19
- Magellan::Cli::Resources::MAPPING.each do |class_name, res_name|
19
+ Magellan::Cli::Resources::MAPPING.each do |class_name, name|
20
20
  klass = Magellan::Cli::Resources.const_get(class_name)
21
- process(klass, "#{res_name}.md", res_name)
21
+ process(klass, "resources/#{name}.md", name)
22
+ end
23
+ Magellan::Cli::Messaging::MAPPING.each do |class_name, name|
24
+ klass = Magellan::Cli::Messaging.const_get(class_name)
25
+ process(klass, "messaging/#{name}.md", name)
22
26
  end
23
27
  end
24
28
  end
@@ -38,25 +42,37 @@ module Magellan
38
42
  end
39
43
  end
40
44
 
41
- def process(klass, filename, res_name = nil)
45
+ def process(klass, filename, name = nil)
42
46
  if cmd = klass.all_commands["help"]
43
47
  cmd.description = I18n.t(:help, scope: [:base, :cmd])
44
48
  end
45
49
 
46
- path = File.expand_path(File.join(@subdir, filename), @dest)
50
+ rel_path = File.join(@subdir, filename)
51
+ path = File.expand_path(rel_path, @dest)
47
52
  FileUtils.mkdir_p(File.dirname(path))
48
53
  instance = klass.new
49
54
  open(path, "w") do |f|
50
55
  f.puts "---"
51
56
  f.puts "layout: index"
52
- f.puts %!breadcrumb: <a href="/">Top</a> / <a href="/reference">Reference</a> / <a href="/reference/magellan-cli">magellan-cli</a> / #{res_name}!
57
+ version = Magellan::Cli::VERSION.split(/\./)[0,2].join(".")
58
+ f.puts "title: " << [name, "magellan-cli-#{version} (#{I18n.locale})", "Reference"].compact.join(" | ")
59
+ lang_links = I18n.available_locales.map do |locale|
60
+ (locale == I18n.locale) ? locale.to_s :
61
+ begin
62
+ path = rel_path.sub(/\/#{I18n.locale}\//, "/#{locale}/").sub(/\.md\z/, ".html")
63
+ %!<a href="/#{path}">#{locale}</a>!
64
+ end
65
+ end
66
+ f.puts %!breadcrumb: <a href="/">Top</a> / <a href="/reference">Reference</a> / <a href="/reference/magellan-cli/#{I18n.locale}">magellan-cli-#{version}</a> / #{name} #{lang_links.join(' ')}!
53
67
  f.puts "---"
54
68
  f.puts
55
69
 
56
70
  f.puts "## "<< I18n.t(:commands, scope: :reference)
57
71
  f.puts
58
72
  klass.sorted_commands.each do |cmd|
59
- rel_path = Magellan::Cli::Resources::MAPPING.values.include?(cmd.name) ? "./#{cmd.name}.html" : "##{cmd.name}"
73
+ rel_path =
74
+ Magellan::Cli::Resources::MAPPING.values.include?(cmd.name) ? "./resources/#{cmd.name}.html" :
75
+ Magellan::Cli::Messaging::MAPPING.values.include?(cmd.name) ? "./messaging/#{cmd.name}.html" : "##{cmd.name}"
60
76
  f.puts "- [%s](%s)" % [Thor.send(:banner, cmd, false, false), rel_path]
61
77
  end
62
78
  f.puts
@@ -74,6 +90,7 @@ module Magellan
74
90
  f.puts "## " << I18n.t(:details, scope: :reference)
75
91
  klass.sorted_commands.each do |cmd|
76
92
  next if Magellan::Cli::Resources::MAPPING.values.include?(cmd.name)
93
+ next if Magellan::Cli::Messaging::MAPPING.values.include?(cmd.name)
77
94
  f.puts "### <a name=\"#{cmd.name}\"></a>#{cmd.name}"
78
95
  f.puts
79
96
  f.puts "```text"
@@ -46,7 +46,7 @@ module Magellan
46
46
  q = {}
47
47
  (self.class.resource_dependency || {}).each do |f, res|
48
48
  r = sel[res]
49
- raise NotSelected, I18n.t(:not_selected, scope: [:resources_base, :default_query], label: f) unless r
49
+ raise NotSelected, I18n.t(:not_selected, scope: [:resources, :base, :default_query], label: f) unless r
50
50
  q[f] = r["id"]
51
51
  end
52
52
  build_query(q)
@@ -55,13 +55,12 @@ module Magellan
55
55
 
56
56
  def get_first_result!(name, path, query)
57
57
  results = get_json(path, query)
58
- raise NotFound, I18n.t(:not_found, scope: [:resources_base, :get_first_result], name: name, query: query.inspect) if results.blank? || results.first.blank?
58
+ raise NotFound, I18n.t(:not_found, scope: [:resources, :base, :get_first_result], name: name, query: query.inspect) if results.blank? || results.first.blank?
59
59
  results.first
60
60
  end
61
61
 
62
- DEFAULT_SELECTION_FIELDS = %w[id name].freeze
63
-
64
- def update_first_result(name, path, query, fields = DEFAULT_SELECTION_FIELDS)
62
+ def update_first_result(name, path, query, fields = nil)
63
+ fields ||= ["id", self.class.caption_attr].compact
65
64
  r = get_first_result!(name, path, query)
66
65
  obj = fields.each_with_object({}) do |f, d|
67
66
  d[f] = r[f]
@@ -168,7 +167,7 @@ module Magellan
168
167
  end
169
168
 
170
169
  def select(name)
171
- q = build_query("name" => name).update(default_query)
170
+ q = build_query(self.class.caption_attr => name).update(default_query)
172
171
  update_first_result(self.class.parameter_name, "/admin/#{self.class.resource_key}.json", q)
173
172
  end
174
173
 
@@ -204,6 +203,8 @@ module Magellan
204
203
  cattr_accessor :resource_dependency
205
204
  cattr_accessor :field_associations
206
205
  cattr_accessor :hidden_fields, :multiline_fields
206
+ cattr_accessor :caption_attr
207
+ self.caption_attr = "name"
207
208
 
208
209
  def self.parameter_name
209
210
  resource_key.gsub(/~/, "_")
@@ -213,22 +214,22 @@ module Magellan
213
214
  end
214
215
  end
215
216
 
216
- desc "list", "#{I18n.t(:list, scope: [:resources_common, :cmd], res_names: res_name.pluralize)}"
217
+ desc "list", "#{I18n.t(:list, scope: [:resources, :common, :cmd], res_names: res_name.pluralize)}"
217
218
  def list
218
219
  super
219
220
  end
220
221
 
221
- desc "show [ID]", "#{I18n.t(:show, scope: [:resources_common, :cmd], res_name: res_name)}"
222
+ desc "show [ID]", "#{I18n.t(:show, scope: [:resources, :common, :cmd], res_name: res_name)}"
222
223
  def show(id = nil)
223
224
  super(id)
224
225
  end
225
226
 
226
- desc "select NAME", "#{I18n.t(:select, scope: [:resources_common, :cmd], res_name: res_name)}"
227
+ desc "select NAME", "#{I18n.t(:select, scope: [:resources, :common, :cmd], res_name: res_name)}"
227
228
  def select(name)
228
229
  super
229
230
  end
230
231
 
231
- desc "deselect", "#{I18n.t(:deselect, scope: [:resources_common, :cmd], res_name: res_name)}"
232
+ desc "deselect", "#{I18n.t(:deselect, scope: [:resources, :common, :cmd], res_name: res_name)}"
232
233
  def deselect
233
234
  super
234
235
  end
@@ -13,8 +13,9 @@ module Magellan
13
13
  self.field_associations = {
14
14
  "stage_title_id" => {name: "stage", class: "Stage"},
15
15
  }
16
+ self.caption_attr = "version"
16
17
 
17
- desc "create VERSION", I18n.t(:create, scope: [:client_version, :cmd], resource_name: resource_name)
18
+ desc "create VERSION", I18n.t(:create, scope: [:resources, :client_version, :cmd], resource_name: resource_name)
18
19
  def create(version)
19
20
  stage = load_selection!(Stage)
20
21
  params = {
@@ -28,7 +29,7 @@ module Magellan
28
29
  # select(version)
29
30
  end
30
31
 
31
- desc "delete VERSION", I18n.t(:delete, scope: [:client_version, :cmd], resource_name: resource_name)
32
+ desc "delete VERSION", I18n.t(:delete, scope: [:resources, :client_version, :cmd], resource_name: resource_name)
32
33
  def delete(version)
33
34
  q = build_query("version" => version).update(default_query)
34
35
  r = get_first_result!(self.class.resource_name, "/admin/#{resource_key}.json", q)
@@ -12,10 +12,10 @@ module Magellan
12
12
  self.resource_dependency = {"stage" => Stage.parameter_name}
13
13
  self.hidden_fields = %w[cloudsql_instance_id].map(&:freeze).freeze
14
14
 
15
- desc "create NAME", I18n.t(:create, scope: [:resources_common, :cmd], resource_name: "#{resource_name} database")
16
- option :A, type: :boolean, default: false, desc: I18n.t(:async, scope: [:cloudsql, :cmd_create])
17
- option :i, type: :numeric, default: 10, desc: I18n.t(:interval, scope: [:cloudsql, :cmd_create])
18
- option :t, type: :numeric, default: 600, desc: I18n.t(:timeout, scope: [:cloudsql, :cmd_create])
15
+ desc "create NAME", I18n.t(:create, scope: [:resources, :common, :cmd], resource_name: "#{resource_name} database")
16
+ option :A, type: :boolean, default: false, desc: I18n.t(:async, scope: [:resources, :cloudsql, :cmd_create])
17
+ option :i, type: :numeric, default: 10, desc: I18n.t(:interval, scope: [:resources, :cloudsql, :cmd_create])
18
+ option :t, type: :numeric, default: 600, desc: I18n.t(:timeout, scope: [:resources, :cloudsql, :cmd_create])
19
19
  def create(name)
20
20
  o = load_selection!(Stage)
21
21
  params = {
@@ -10,7 +10,7 @@ module Magellan
10
10
  def self.included(klass)
11
11
  klass.module_eval do
12
12
 
13
- desc "delete NAME", I18n.t(:delete, scope: [:resources_common, :cmd], resource_name: resource_name)
13
+ desc "delete NAME", I18n.t(:delete, scope: [:resources, :common, :cmd], resource_name: resource_name)
14
14
  def delete(name)
15
15
  q = build_query("name" => name).update(default_query)
16
16
  r = get_first_result!(self.class.resource_name, "/admin/#{resource_key}.json", q)
@@ -11,7 +11,7 @@ module Magellan
11
11
  self.resource_key = "magellan~auth~organization"
12
12
  # self.field_associations = {"creator_id" => {name: "creator", class: "User"} }
13
13
 
14
- desc "create NAME", I18n.t(:create, scope: [:resources_common, :cmd], resource_name: resource_name)
14
+ desc "create NAME", I18n.t(:create, scope: [:resources, :common, :cmd], resource_name: resource_name)
15
15
  def create(name)
16
16
  params = {
17
17
  parameter_name => {
@@ -13,14 +13,14 @@ module Magellan
13
13
  self.hidden_fields = %w[default_nebula_id created_at updated_at].map(&:freeze).freeze
14
14
  self.field_associations = {"organization_id" => {name: "organization", class: "Organization"} }
15
15
 
16
- desc "update ATTRIBUTES", I18n.t(:update, scope: [:resources_common, :cmd], resource_name: resource_name)
16
+ desc "update ATTRIBUTES", I18n.t(:update, scope: [:resources, :common, :cmd], resource_name: resource_name)
17
17
  def update(attrs)
18
18
  s = load_selection!(self.class)
19
19
  attrs = JSON.parse(File.readable?(attrs) ? File.read(attrs) : attrs)
20
20
  put_json("/admin/project/#{s['id']}/edit", {"project" => attrs})
21
21
  end
22
22
 
23
- desc "create NAME", I18n.t(:create, scope: [:resources_common, :cmd], resource_name: resource_name)
23
+ desc "create NAME", I18n.t(:create, scope: [:resources, :common, :cmd], resource_name: resource_name)
24
24
  def create(name)
25
25
  o = load_selection!(Organization)
26
26
  params = {
@@ -17,8 +17,8 @@ module Magellan
17
17
  VERSION_RESOURCE_KEY = "stage~version".freeze
18
18
  VERSION_PARAMETER_NAME = "stage_version".freeze
19
19
 
20
- desc "create NAME [-t development|staging|production|other]", "Create a new #{resource_name} with Name and Type"
21
- option :t, type: :string, default: "development", desc: "-t development|staging|production. specify Stage Type"
20
+ desc "create NAME [-t development|staging|production|other]", I18n.t(:create, scope: [:resources, :stage, :cmd], resource_name: resource_name)
21
+ option :t, type: :string, default: "development", desc: I18n.t(:type, scope: [:resources, :stage, :cmd_create])
22
22
  def create(name)
23
23
  type = options["t"]
24
24
  unless %w{ development staging production other }.include?(type)
@@ -36,7 +36,7 @@ module Magellan
36
36
  select(name)
37
37
  end
38
38
 
39
- desc "select NAME", I18n.t(:select, scope: [:resources_common, :cmd], res_name: resource_name)
39
+ desc "select NAME", I18n.t(:select, scope: [:resources, :common, :cmd], res_name: resource_name)
40
40
  def select(name)
41
41
  if selected = load_selections[parameter_name]
42
42
  deselect unless selected["name"] == name
@@ -54,7 +54,7 @@ module Magellan
54
54
  update_first_result(VERSION_PARAMETER_NAME, "/admin/stage~version.json", q, %w[id])
55
55
  end
56
56
 
57
- desc "deselect", I18n.t(:deselect, scope: [:resources_common, :cmd], res_name: resource_name)
57
+ desc "deselect", I18n.t(:deselect, scope: [:resources, :common, :cmd], res_name: resource_name)
58
58
  def deselect
59
59
  update_selections! do |s|
60
60
  s.delete(parameter_name)
@@ -63,12 +63,12 @@ module Magellan
63
63
  deselect_dependants
64
64
  end
65
65
 
66
- desc "planning", I18n.t(:planning, scope: [:stage, :cmd])
66
+ desc "planning", I18n.t(:planning, scope: [:resources, :stage, :cmd])
67
67
  def planning
68
68
  switch_version(1)
69
69
  end
70
70
 
71
- desc "current", I18n.t(:current, scope: [:stage, :cmd])
71
+ desc "current", I18n.t(:current, scope: [:resources, :stage, :cmd])
72
72
  def current
73
73
  switch_version(2)
74
74
  end
@@ -81,7 +81,7 @@ module Magellan
81
81
  end
82
82
  end
83
83
 
84
- desc "prepare", I18n.t(:prepare, scope: [:stage, :cmd], containers_name: Container.resource_name.pluralize)
84
+ desc "prepare", I18n.t(:prepare, scope: [:resources, :stage, :cmd], containers_name: Container.resource_name.pluralize)
85
85
  def prepare
86
86
  s = load_selection!(self.class)
87
87
  id = s["id"]
@@ -89,7 +89,7 @@ module Magellan
89
89
  Container.new.show_list(r["result"])
90
90
  end
91
91
 
92
- desc "repair", I18n.t(:repair, scope: [:stage, :cmd], resource_name: resource_name)
92
+ desc "repair", I18n.t(:repair, scope: [:resources, :stage, :cmd], resource_name: resource_name)
93
93
  def repair
94
94
  r = call_repair
95
95
  puts r["success"] ? "\e[32msucceeded to repair stage\e[0m" : "\e[31mfailed to repair stage\e[0m"
@@ -103,17 +103,17 @@ module Magellan
103
103
  end
104
104
  end
105
105
 
106
- desc "update ATTRIBUTES", I18n.t(:update, scope: [:resources_common, :cmd], resource_name: resource_name)
106
+ desc "update ATTRIBUTES", I18n.t(:update, scope: [:resources, :common, :cmd], resource_name: resource_name)
107
107
  def update(attrs)
108
108
  s = load_selection!(self.class)
109
109
  attrs = JSON.parse(File.readable?(attrs) ? File.read(attrs) : attrs)
110
110
  put_json("/admin/stage~title/#{s['id']}/edit", {"stage_title" => attrs})
111
111
  end
112
112
 
113
- desc "release_now", I18n.t(:release_now, scope: [:stage, :cmd])
114
- option :A, type: :boolean, default: false, desc: I18n.t(:async, scope: [:stage, :cmd_release_now])
115
- option :i, type: :numeric, default: 10, desc: I18n.t(:interval, scope: [:stage, :cmd_release_now])
116
- option :t, type: :numeric, default: 600, desc: I18n.t(:timeout, scope: [:stage, :cmd_release_now])
113
+ desc "release_now", I18n.t(:release_now, scope: [:resources, :stage, :cmd])
114
+ option :A, type: :boolean, default: false, desc: I18n.t(:async, scope: [:resources, :stage, :cmd_release_now])
115
+ option :i, type: :numeric, default: 10, desc: I18n.t(:interval, scope: [:resources, :stage, :cmd_release_now])
116
+ option :t, type: :numeric, default: 600, desc: I18n.t(:timeout, scope: [:resources, :stage, :cmd_release_now])
117
117
  def release_now
118
118
  spacer = "\r" << (" " * 20)
119
119
  stage = load_selection!(self.class)
@@ -166,7 +166,7 @@ module Magellan
166
166
  end
167
167
  end
168
168
 
169
- desc "logs", I18n.t(:logs, scope: [:stage, :cmd], workers_name: Worker.resource_name.pluralize)
169
+ desc "logs", I18n.t(:logs, scope: [:resources, :stage, :cmd], workers_name: Worker.resource_name.pluralize)
170
170
  def logs
171
171
  s = load_selection!(self.class)
172
172
  id = s["id"]
@@ -178,7 +178,7 @@ module Magellan
178
178
  end
179
179
  end
180
180
 
181
- desc "set_container_num NUM", I18n.t(:set_container_num, scope: [:stage, :cmd], containers_name: Container.resource_name.pluralize, image_name: Image.resource_name)
181
+ desc "set_container_num NUM", I18n.t(:set_container_num, scope: [:resources, :stage, :cmd], containers_name: Container.resource_name.pluralize, image_name: Image.resource_name)
182
182
  def set_container_num(num)
183
183
  s = load_selection!(self.class)
184
184
  v = load_selection!(VERSION_PARAMETER_NAME)
@@ -186,7 +186,7 @@ module Magellan
186
186
  post_json("/admin/stage~version/#{v["id"]}/set_container_num.json", { container_num: num, container_image_id: i["id"] })
187
187
  end
188
188
 
189
- desc "reload", I18n.t(:reload, scope: [:stage, :cmd])
189
+ desc "reload", I18n.t(:reload, scope: [:resources, :stage, :cmd])
190
190
  def reload
191
191
  s = load_selection!(self.class)
192
192
  select(s["name"])
@@ -10,7 +10,7 @@ module Magellan
10
10
  self.resource_dependency = { "organization" => Organization.parameter_name }
11
11
  self.field_associations = {"organization_id" => {name: "organization", class: "Organization"} }
12
12
 
13
- desc "create NAME ROLE", I18n.t(:create, scope: [:team, :cmd], resource_name: resource_name)
13
+ desc "create NAME ROLE", I18n.t(:create, scope: [:resources, :team, :cmd], resource_name: resource_name)
14
14
  def create(name, role)
15
15
  unless %w{ reader admin }.include?(role)
16
16
  raise "ROLE should be 'reader' or 'admin'"
@@ -28,7 +28,7 @@ module Magellan
28
28
  end
29
29
 
30
30
  =begin
31
- desc "invite EMAIL", I18n.t(:invite, scope: [:team, :cmd], resource_name: resource_name)
31
+ desc "invite EMAIL", I18n.t(:invite, scope: [:resources, :team, :cmd], resource_name: resource_name)
32
32
  def invite(email)
33
33
  o = load_selection!(self.class)
34
34
  params = {
@@ -9,7 +9,7 @@ module Magellan
9
9
  self.resource_key = "functions~transaction_router"
10
10
  self.resource_dependency = {"stage" => Stage.parameter_name}
11
11
 
12
- desc "create NAME", I18n.t(:create, scope: [:resources_common, :cmd], resource_name: resource_name)
12
+ desc "create NAME", I18n.t(:create, scope: [:resources, :common, :cmd], resource_name: resource_name)
13
13
  def create(name)
14
14
  s = load_selection!(Stage::VERSION_PARAMETER_NAME)
15
15
  params = {
@@ -14,8 +14,9 @@ module Magellan
14
14
  self.multiline_fields = %w[migration_command_1 migration_command_2 run_command environment_vars_yaml].map(&:freeze).freeze
15
15
  self.field_associations = {"stage_version_id" => {name: "stage", resource: "stage~version"} }
16
16
 
17
- desc "create NAME IMAGE", I18n.t(:create, scope: [:worker, :cmd], resource_name: resource_name)
18
- method_option :attributes_yaml, aliases: "-A", desc: "path to YAML file which defines attributes"
17
+ desc "create NAME IMAGE", I18n.t(:create, scope: [:resources, :worker, :cmd], resource_name: resource_name)
18
+ method_option :attributes_yaml, aliases: "-A", desc: I18n.t(:attributes_yaml, scope: [:resources, :worker, :cmd_create])
19
+ "path to YAML file which defines attributes"
19
20
  def create(name, image_name)
20
21
  s = load_selection!(Stage::VERSION_PARAMETER_NAME)
21
22
  attrs =
@@ -36,7 +37,7 @@ module Magellan
36
37
  select(name)
37
38
  end
38
39
 
39
- desc "update ATTRIBUTES", I18n.t(:update, scope: [:worker, :cmd], resource_name: resource_name)
40
+ desc "update ATTRIBUTES", I18n.t(:update, scope: [:resources, :worker, :cmd], resource_name: resource_name)
40
41
  def update(attrs)
41
42
  if File.readable?(attrs)
42
43
  attrs = YAML.load_file(attrs)
@@ -52,7 +53,7 @@ module Magellan
52
53
  put_json("/admin/#{resource_key}/#{w["id"]}/edit.js", params)
53
54
  end
54
55
 
55
- desc "prepare_images", I18n.t(:prepare_images, scope: [:worker, :cmd], images_name: Image.resource_name.pluralize, worker_name: Worker.resource_name)
56
+ desc "prepare_images", I18n.t(:prepare_images, scope: [:resources, :worker, :cmd], images_name: Image.resource_name.pluralize, worker_name: Worker.resource_name)
56
57
  def prepare_images
57
58
  s = load_selection!(Worker)
58
59
  id = s["id"]
@@ -1,5 +1,5 @@
1
1
  module Magellan
2
2
  module Cli
3
- VERSION = "0.4.4"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
data/lib/magellan/cli.rb CHANGED
@@ -13,6 +13,8 @@ module Magellan
13
13
  autoload :Login , "magellan/cli/login"
14
14
  autoload :Ssl , "magellan/cli/ssl"
15
15
 
16
+ autoload :Messaging, "magellan/cli/messaging"
17
+
16
18
  autoload :Error , "magellan/cli/errors"
17
19
  autoload :LoginError, "magellan/cli/errors"
18
20
 
data/magellan-cli.gemspec CHANGED
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency "text-table", "~> 1.2.3"
26
26
  spec.add_runtime_dependency "i18n"
27
27
  spec.add_runtime_dependency "psych", ">= 2.0.0", "<= 2.0.8"
28
+ spec.add_runtime_dependency "libmagellan", "~> 0.2.2"
28
29
 
29
30
  spec.add_development_dependency "bundler", "~> 1.6"
30
31
  spec.add_development_dependency "rake", "~> 10.0"
@@ -0,0 +1,83 @@
1
+ ---
2
+ layout: index
3
+ breadcrumb: <a href="/">Top</a> / <a href="/reference">Reference</a> / <a href="/reference/magellan-cli">magellan-cli</a> / client_version
4
+ ---
5
+
6
+ ## Commands
7
+
8
+ - [magellan-cli list](#list)
9
+ - [magellan-cli show [ID]](#show)
10
+ - [magellan-cli select NAME](#select)
11
+ - [magellan-cli deselect](#deselect)
12
+ - [magellan-cli create VERSION](#create)
13
+ - [magellan-cli delete VERSION](#delete)
14
+ - [magellan-cli help [COMMAND]](#help)
15
+
16
+ ## Global Options
17
+
18
+ ```text
19
+ Options:
20
+ -V, [--verbose]
21
+ -D, [--dryrun]
22
+ -v, [--version]
23
+
24
+ ```
25
+
26
+
27
+ ## Details
28
+ ### <a name="list"></a>list
29
+
30
+ ```text
31
+ magellan-cli list
32
+ ```
33
+
34
+ Show a list of the client_versions
35
+
36
+ ### <a name="show"></a>show
37
+
38
+ ```text
39
+ magellan-cli show [ID]
40
+ ```
41
+
42
+ Show the detail of the client_version specified by ID
43
+
44
+ ### <a name="select"></a>select
45
+
46
+ ```text
47
+ magellan-cli select NAME
48
+ ```
49
+
50
+ Select the client_version by NAME
51
+
52
+ ### <a name="deselect"></a>deselect
53
+
54
+ ```text
55
+ magellan-cli deselect
56
+ ```
57
+
58
+ Deselect the client_version
59
+
60
+ ### <a name="create"></a>create
61
+
62
+ ```text
63
+ magellan-cli create VERSION
64
+ ```
65
+
66
+ Create a new client_version with VERSION
67
+
68
+ ### <a name="delete"></a>delete
69
+
70
+ ```text
71
+ magellan-cli delete VERSION
72
+ ```
73
+
74
+ Delete the client_version specified by VERSION
75
+
76
+ ### <a name="help"></a>help
77
+
78
+ ```text
79
+ magellan-cli help [COMMAND]
80
+ ```
81
+
82
+ Describe available commands or one specific command
83
+
@@ -0,0 +1,93 @@
1
+ ---
2
+ layout: index
3
+ breadcrumb: <a href="/">Top</a> / <a href="/reference">Reference</a> / <a href="/reference/magellan-cli">magellan-cli</a> / cloudsql
4
+ ---
5
+
6
+ ## Commands
7
+
8
+ - [magellan-cli list](#list)
9
+ - [magellan-cli show [ID]](#show)
10
+ - [magellan-cli select NAME](#select)
11
+ - [magellan-cli deselect](#deselect)
12
+ - [magellan-cli delete NAME](#delete)
13
+ - [magellan-cli create NAME](#create)
14
+ - [magellan-cli help [COMMAND]](#help)
15
+
16
+ ## Global Options
17
+
18
+ ```text
19
+ Options:
20
+ -V, [--verbose]
21
+ -D, [--dryrun]
22
+ -v, [--version]
23
+
24
+ ```
25
+
26
+
27
+ ## Details
28
+ ### <a name="list"></a>list
29
+
30
+ ```text
31
+ magellan-cli list
32
+ ```
33
+
34
+ Show a list of the cloudsqls
35
+
36
+ ### <a name="show"></a>show
37
+
38
+ ```text
39
+ magellan-cli show [ID]
40
+ ```
41
+
42
+ Show the detail of the cloudsql specified by ID
43
+
44
+ ### <a name="select"></a>select
45
+
46
+ ```text
47
+ magellan-cli select NAME
48
+ ```
49
+
50
+ Select the cloudsql by NAME
51
+
52
+ ### <a name="deselect"></a>deselect
53
+
54
+ ```text
55
+ magellan-cli deselect
56
+ ```
57
+
58
+ Deselect the cloudsql
59
+
60
+ ### <a name="delete"></a>delete
61
+
62
+ ```text
63
+ magellan-cli delete NAME
64
+ ```
65
+
66
+ Delete the cloudsql specified by NAME
67
+
68
+ ### <a name="create"></a>create
69
+
70
+ ```text
71
+ magellan-cli create NAME
72
+ ```
73
+
74
+ ```text
75
+ Options:
76
+ [-A] # -A async mode. release_now returns soon
77
+ [-i=N] # -i polling interval(seconds)
78
+ # Default: 10
79
+ [-t=N] # -t timeout(seconds)
80
+ # Default: 600
81
+
82
+ ```
83
+
84
+ Create a new cloudsql database with NAME
85
+
86
+ ### <a name="help"></a>help
87
+
88
+ ```text
89
+ magellan-cli help [COMMAND]
90
+ ```
91
+
92
+ Describe available commands or one specific command
93
+
@@ -0,0 +1,65 @@
1
+ ---
2
+ layout: index
3
+ breadcrumb: <a href="/">Top</a> / <a href="/reference">Reference</a> / <a href="/reference/magellan-cli">magellan-cli</a> / container
4
+ ---
5
+
6
+ ## Commands
7
+
8
+ - [magellan-cli list](#list)
9
+ - [magellan-cli show [ID]](#show)
10
+ - [magellan-cli select NAME](#select)
11
+ - [magellan-cli deselect](#deselect)
12
+ - [magellan-cli help [COMMAND]](#help)
13
+
14
+ ## Global Options
15
+
16
+ ```text
17
+ Options:
18
+ -V, [--verbose]
19
+ -D, [--dryrun]
20
+ -v, [--version]
21
+
22
+ ```
23
+
24
+
25
+ ## Details
26
+ ### <a name="list"></a>list
27
+
28
+ ```text
29
+ magellan-cli list
30
+ ```
31
+
32
+ Show a list of the containers
33
+
34
+ ### <a name="show"></a>show
35
+
36
+ ```text
37
+ magellan-cli show [ID]
38
+ ```
39
+
40
+ Show the detail of the container specified by ID
41
+
42
+ ### <a name="select"></a>select
43
+
44
+ ```text
45
+ magellan-cli select NAME
46
+ ```
47
+
48
+ Select the container by NAME
49
+
50
+ ### <a name="deselect"></a>deselect
51
+
52
+ ```text
53
+ magellan-cli deselect
54
+ ```
55
+
56
+ Deselect the container
57
+
58
+ ### <a name="help"></a>help
59
+
60
+ ```text
61
+ magellan-cli help [COMMAND]
62
+ ```
63
+
64
+ Describe available commands or one specific command
65
+