mortar 0.12.6 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -133,10 +133,10 @@ class Mortar::Command::Base
133
133
  end
134
134
  end
135
135
 
136
- def register_project(name)
136
+ def register_project(name, is_private)
137
137
  project_id = nil
138
138
  action("Sending request to register project: #{name}") do
139
- project_id = api.post_project(name).body["project_id"]
139
+ project_id = api.post_project(name, is_private).body["project_id"]
140
140
  end
141
141
 
142
142
  project_result = nil
@@ -60,7 +60,7 @@ class Mortar::Command::Jobs < Mortar::Command::Base
60
60
  #
61
61
  # -c, --clusterid CLUSTERID # Run job on an existing cluster with ID of CLUSTERID (optional)
62
62
  # -s, --clustersize NUMNODES # Run job on a new cluster, with NUMNODES nodes (optional; must be >= 2 if provided)
63
- # -1, --singlejobcluster # Stop the cluster after job completes. (Default: false—-cluster can be used for other jobs, and will shut down after 1 hour of inactivity)
63
+ # -1, --singlejobcluster # Stop the cluster after job completes. (Default: false--cluster can be used for other jobs, and will shut down after 1 hour of inactivity)
64
64
  # -2, --permanentcluster # Don't automatically stop the cluster after it has been idle for an hour (Default: false--cluster will be shut down after 1 hour of inactivity)
65
65
  # -3, --spot # Use spot instances for this cluster (Default: false, only applicable to new clusters)
66
66
  # -p, --parameter NAME=VALUE # Set a pig parameter value in your script.
@@ -80,6 +80,7 @@ class Mortar::Command::Projects < Mortar::Command::Base
80
80
  # Used when you want to start a new Mortar project using Mortar generated code.
81
81
  #
82
82
  # --embedded # Create a Mortar project that is not its own git repo. Your code will still be synced with a git repo in the cloud.
83
+ # --public # Register a public project, which can be viewed and forked by anyone.
83
84
  #
84
85
  def create
85
86
  name = shift_argument
@@ -90,13 +91,20 @@ class Mortar::Command::Projects < Mortar::Command::Base
90
91
  Mortar::Command::run("generate:project", [name])
91
92
 
92
93
  FileUtils.cd(name)
94
+
95
+ args = [name,]
96
+ if options[:public]
97
+ args.push('--public')
98
+ end
99
+
93
100
  if options[:embedded]
94
- Mortar::Command::run("projects:register", [name, "--embedded"])
101
+ args.push("--embedded")
102
+ Mortar::Command::run("projects:register", args)
95
103
  else
96
104
  git.git_init
97
105
  git.git("add .")
98
106
  git.git("commit -m \"Mortar project scaffolding\"")
99
- Mortar::Command::run("projects:register", [name])
107
+ Mortar::Command::run("projects:register", args)
100
108
  display "NOTE: You'll need to change to the new directory to use your project:\n cd #{name}\n\n"
101
109
  end
102
110
  end
@@ -107,6 +115,7 @@ class Mortar::Command::Projects < Mortar::Command::Base
107
115
  # Used when you want to start a new Mortar project using your existing code in the current directory.
108
116
  #
109
117
  # --embedded # Register code that is not its own git repo as a Mortar project. Your code will still be synced with a git repo in the cloud.
118
+ # --public # Register a public project, which can be viewed and forked by anyone.
110
119
  #
111
120
  def register
112
121
  name = shift_argument
@@ -115,11 +124,20 @@ class Mortar::Command::Projects < Mortar::Command::Base
115
124
  end
116
125
  validate_arguments!
117
126
 
127
+ if options[:public]
128
+ unless confirm("Public projects allow anyone to view and fork the code in this project\'s repository. Are you sure? (y/n)")
129
+ error("Mortar project was not registered")
130
+ end
131
+ is_private = false
132
+ else
133
+ is_private = true
134
+ end
135
+
118
136
  if options[:embedded]
119
137
  validate_project_name(name)
120
138
  validate_project_structure()
121
139
 
122
- register_project(name) do |project_result|
140
+ register_project(name, is_private) do |project_result|
123
141
  initialize_embedded_project(project_result)
124
142
  end
125
143
  else
@@ -142,7 +160,7 @@ class Mortar::Command::Projects < Mortar::Command::Base
142
160
  end
143
161
  end
144
162
 
145
- register_project(name) do |project_result|
163
+ register_project(name, is_private) do |project_result|
146
164
  git.remote_add("mortar", project_result['git_url'])
147
165
  git.push_master
148
166
  display "Your project is ready for use. Type 'mortar help' to see the commands you can perform on the project.\n\n"
@@ -16,5 +16,5 @@
16
16
 
17
17
  module Mortar
18
18
  # see http://semver.org/
19
- VERSION = "0.12.6"
19
+ VERSION = "0.13.0"
20
20
  end
@@ -98,7 +98,7 @@ STDOUT
98
98
  project_id = "1234abcd1234abcd1234"
99
99
  project_name = "some_new_project"
100
100
  project_git_url = "git@github.com:mortarcode-dev/#{project_name}"
101
- mock(Mortar::Auth.api).post_project("some_new_project") {Excon::Response.new(:body => {"project_id" => project_id})}
101
+ mock(Mortar::Auth.api).post_project("some_new_project", true) {Excon::Response.new(:body => {"project_id" => project_id})}
102
102
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status" => Mortar::API::Projects::STATUS_ACTIVE,
103
103
  "git_url" => project_git_url})).ordered
104
104
  mock(@git).remotes.with_any_args.returns({})
@@ -171,7 +171,7 @@ STDOUT
171
171
  project_id = "1234abcd1234abcd1234"
172
172
  project_name = "some_new_project"
173
173
  project_git_url = "git@github.com:mortarcode-dev/#{project_name}"
174
- mock(Mortar::Auth.api).post_project("some_new_project") {Excon::Response.new(:body => {"project_id" => project_id})}
174
+ mock(Mortar::Auth.api).post_project("some_new_project", true) {Excon::Response.new(:body => {"project_id" => project_id})}
175
175
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status" => Mortar::API::Projects::STATUS_ACTIVE,
176
176
  "git_url" => project_git_url})).ordered
177
177
 
@@ -258,13 +258,49 @@ STDERR
258
258
  STDERR
259
259
  end
260
260
  end
261
-
261
+
262
+ it "Confirms if user wants to create a public project, exits if not" do
263
+ project_name = "some_new_project"
264
+ any_instance_of(Mortar::Command::Projects) do |base|
265
+ mock(base).ask.with_any_args.times(1) { 'n' }
266
+ end
267
+ stderr, stdout = execute("projects:create #{project_name} --public", nil, @git)
268
+ stderr.should == <<-STDERR
269
+ ! Mortar project was not registered
270
+ STDERR
271
+ end
272
+
273
+ it "Confirms if user wants to create a public project, creates it if so" do
274
+ mock(Mortar::Auth.api).get_projects().returns(Excon::Response.new(:body => {"projects" => [project1, project2]}))
275
+ project_id = "1234abcd1234abcd1234"
276
+ project_name = "some_new_project"
277
+ project_git_url = "git@github.com:mortarcode-dev/#{project_name}"
278
+ mock(Mortar::Auth.api).post_project("some_new_project", false) {Excon::Response.new(:body => {"project_id" => project_id})}
279
+ status = Mortar::API::Projects::STATUS_ACTIVE
280
+ response = Excon::Response.new(:body => {"status" => status, "git_url" => project_git_url})
281
+ mock(Mortar::Auth.api).get_project(project_id).returns(response).ordered
282
+
283
+ mock(@git).has_dot_git?().returns(true)
284
+ mock(@git).remotes.with_any_args.returns({})
285
+ mock(@git).remote_add("mortar", project_git_url)
286
+ mock(@git).push_master
287
+ any_instance_of(Mortar::Command::Projects) do |base|
288
+ mock(base).ask.with_any_args.times(1) { 'y' }
289
+ end
290
+
291
+ stderr, stdout = execute("projects:register #{project_name} --public", nil, @git)
292
+ stdout.should == <<-STDOUT
293
+ Public projects allow anyone to view and fork the code in this project's repository. Are you sure? (y/n) Sending request to register project: some_new_project... done\n\n\r\e[0KStatus: ACTIVE \n\nYour project is ready for use. Type 'mortar help' to see the commands you can perform on the project.\n
294
+ STDOUT
295
+ end
296
+
297
+
262
298
  it "register a new project successfully - with status" do
263
299
  mock(Mortar::Auth.api).get_projects().returns(Excon::Response.new(:body => {"projects" => [project1, project2]}))
264
300
  project_id = "1234abcd1234abcd1234"
265
301
  project_name = "some_new_project"
266
302
  project_git_url = "git@github.com:mortarcode-dev/#{project_name}"
267
- mock(Mortar::Auth.api).post_project("some_new_project") {Excon::Response.new(:body => {"project_id" => project_id})}
303
+ mock(Mortar::Auth.api).post_project("some_new_project", true) {Excon::Response.new(:body => {"project_id" => project_id})}
268
304
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status" => Mortar::API::Projects::STATUS_PENDING})).ordered
269
305
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status" => Mortar::API::Projects::STATUS_CREATING})).ordered
270
306
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status" => Mortar::API::Projects::STATUS_ACTIVE,
@@ -286,7 +322,7 @@ STDOUT
286
322
  project_id = "1234abcd1234abcd1234"
287
323
  project_name = "some_new_project"
288
324
  project_git_url = "git@github.com:mortarcode-dev/#{project_name}"
289
- mock(Mortar::Auth.api).post_project("some_new_project") {Excon::Response.new(:body => {"project_id" => project_id})}
325
+ mock(Mortar::Auth.api).post_project("some_new_project", true) {Excon::Response.new(:body => {"project_id" => project_id})}
290
326
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status_description" => "Pending", "status_code" => Mortar::API::Projects::STATUS_PENDING})).ordered
291
327
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status_description" => "Creating", "status_code" => Mortar::API::Projects::STATUS_CREATING})).ordered
292
328
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status_description" => "Active", "status_code" => Mortar::API::Projects::STATUS_ACTIVE,
@@ -308,7 +344,7 @@ STDOUT
308
344
  project_id = "1234abcd1234abcd1234"
309
345
  project_name = "some_new_project"
310
346
  project_git_url = "git@github.com:mortarcode-dev/#{project_name}"
311
- mock(Mortar::Auth.api).post_project("some_new_project") {Excon::Response.new(:body => {"project_id" => project_id})}
347
+ mock(Mortar::Auth.api).post_project("some_new_project", true) {Excon::Response.new(:body => {"project_id" => project_id})}
312
348
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status_description" => "Pending", "status_code" => Mortar::API::Projects::STATUS_PENDING})).ordered
313
349
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status_description" => "Creating", "status_code" => Mortar::API::Projects::STATUS_CREATING})).ordered
314
350
  mock(Mortar::Auth.api).get_project(project_id).returns(Excon::Response.new(:body => {"status_description" => "Active", "status_code" => Mortar::API::Projects::STATUS_ACTIVE,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mortar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.6
4
+ version: 0.13.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-21 00:00:00.000000000 Z
12
+ date: 2014-01-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ~>
36
36
  - !ruby/object:Gem::Version
37
- version: 0.7.3
37
+ version: 0.8.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- version: 0.7.3
45
+ version: 0.8.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: netrc
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -337,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
337
337
  version: '0'
338
338
  requirements: []
339
339
  rubyforge_project:
340
- rubygems_version: 1.8.23
340
+ rubygems_version: 1.8.24
341
341
  signing_key:
342
342
  specification_version: 3
343
343
  summary: Client library and CLI to interact with the Mortar service.