shelly 0.1.27 → 0.1.28

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.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.1.28 / 2012-09-21
2
+
3
+ * [feature] Singular form of all subcommands with possibility to invoke them with plural form
4
+
5
+ ```shelly user list``` and ```shelly users list``` works the same
6
+
1
7
  ## 0.1.27 / 2012-09-12
2
8
 
3
9
  * [bug] shelly check - wrong method for retrieving databases from Cloudfile
@@ -3,7 +3,7 @@ require "shelly/cli/command"
3
3
  module Shelly
4
4
  module CLI
5
5
  class Config < Command
6
- include Thor::Actions
6
+ namespace :config
7
7
  include Helpers
8
8
 
9
9
  before_hook :logged_in?, :only => [:list, :show, :create, :new, :edit, :update, :delete]
@@ -11,7 +11,7 @@ module Shelly
11
11
 
12
12
  desc "list", "List configuration files"
13
13
  def list
14
- app = multiple_clouds(options[:cloud], "list")
14
+ app = multiple_clouds(options[:cloud], "config list")
15
15
  configs = app.configs
16
16
  unless configs.empty?
17
17
  say "Configuration files for #{app}", :green
@@ -34,7 +34,7 @@ module Shelly
34
34
 
35
35
  desc "show PATH", "View configuration file"
36
36
  def show(path)
37
- app = multiple_clouds(options[:cloud], "show #{path}")
37
+ app = multiple_clouds(options[:cloud], "config show #{path}")
38
38
  config = app.config(path)
39
39
  say "Content of #{config["path"]}:", :green
40
40
  say config["content"]
@@ -62,7 +62,7 @@ module Shelly
62
62
  desc "edit PATH", "Edit configuration file"
63
63
  def edit(path = nil)
64
64
  say_error "No configuration file specified" unless path
65
- app = multiple_clouds(options[:cloud], "edit #{path}")
65
+ app = multiple_clouds(options[:cloud], "config edit #{path}")
66
66
  config = app.config(path)
67
67
  content = open_editor(config["path"], config["content"])
68
68
  app.update_config(path, content)
@@ -80,7 +80,7 @@ module Shelly
80
80
 
81
81
  desc "delete PATH", "Delete configuration file"
82
82
  def delete(path)
83
- app = multiple_clouds(options[:cloud], "delete #{path}")
83
+ app = multiple_clouds(options[:cloud], "config delete #{path}")
84
84
  answer = yes?("Are you sure you want to delete 'path' (yes/no): ")
85
85
  if answer
86
86
  app.delete_config(path)
@@ -105,17 +105,17 @@ module Shelly
105
105
  def open_editor(path, output = "")
106
106
  filename = "shelly-edit-"
107
107
  0.upto(20) { filename += rand(9).to_s }
108
- filename << File.extname(path)
109
- filename = File.join(Dir.tmpdir, filename)
110
- tf = File.open(filename, "w")
108
+ filename << ::File.extname(path)
109
+ filename = ::File.join(Dir.tmpdir, filename)
110
+ tf = ::File.open(filename, "w")
111
111
  tf.sync = true
112
112
  tf.puts output
113
113
  tf.close
114
114
  no_editor unless system("#{ENV['EDITOR']} #{tf.path}")
115
- tf = File.open(filename, "r")
115
+ tf = ::File.open(filename, "r")
116
116
  output = tf.gets(nil)
117
117
  tf.close
118
- File.unlink(filename)
118
+ ::File.unlink(filename)
119
119
  output
120
120
  end
121
121
 
@@ -3,8 +3,8 @@ require "time"
3
3
 
4
4
  module Shelly
5
5
  module CLI
6
- class Deploys < Command
7
- namespace :deploys
6
+ class Deploy < Command
7
+ namespace :deploy
8
8
  include Helpers
9
9
 
10
10
  before_hook :logged_in?, :only => [:list, :show]
@@ -12,7 +12,7 @@ module Shelly
12
12
 
13
13
  desc "list", "Lists deploy logs"
14
14
  def list
15
- app = multiple_clouds(options[:cloud], "deploys list")
15
+ app = multiple_clouds(options[:cloud], "deploy list")
16
16
  logs = app.deploy_logs
17
17
  unless logs.empty?
18
18
  say "Available deploy logs", :green
@@ -33,7 +33,7 @@ module Shelly
33
33
  desc "show LOG", "Show specific deploy log"
34
34
  def show(log = nil)
35
35
  specify_log(log)
36
- app = multiple_clouds(options[:cloud], "deploys show #{log}")
36
+ app = multiple_clouds(options[:cloud], "deploy show #{log}")
37
37
  content = app.deploy_log(log)
38
38
  say "Log for deploy done on #{content["created_at"]}", :green
39
39
  if content["bundle_install"]
@@ -2,8 +2,8 @@ require "shelly/cli/command"
2
2
 
3
3
  module Shelly
4
4
  module CLI
5
- class Files < Command
6
- namespace :files
5
+ class File < Command
6
+ namespace :file
7
7
  include Helpers
8
8
 
9
9
  before_hook :logged_in?, :only => [:upload, :download]
@@ -12,7 +12,7 @@ module Shelly
12
12
 
13
13
  desc "upload PATH", "Upload files to persistent data storage"
14
14
  def upload(path)
15
- app = multiple_clouds(options[:cloud], "upload #{path}")
15
+ app = multiple_clouds(options[:cloud], "file upload #{path}")
16
16
  app.upload(path)
17
17
  rescue Client::ConflictException
18
18
  say_error "Cloud #{app} is not running. Cannot upload files."
@@ -25,7 +25,7 @@ module Shelly
25
25
  DEST_PATH - optional destination where files should be saved. By default is current working directory.
26
26
  }
27
27
  def download(relative_source = ".", destination = ".")
28
- app = multiple_clouds(options[:cloud], "download #{relative_source} #{destination}")
28
+ app = multiple_clouds(options[:cloud], "file download #{relative_source} #{destination}")
29
29
  app.download(relative_source, destination)
30
30
  rescue Client::ConflictException
31
31
  say_error "Cloud #{app} is not running. Cannot download files."
@@ -2,20 +2,18 @@
2
2
  require "shelly/cli/command"
3
3
  require "shelly/cli/user"
4
4
  require "shelly/cli/backup"
5
- require "shelly/cli/deploys"
5
+ require "shelly/cli/deploy"
6
6
  require "shelly/cli/config"
7
- require "shelly/cli/files"
7
+ require "shelly/cli/file"
8
8
 
9
9
  module Shelly
10
10
  module CLI
11
11
  class Main < Command
12
- include Thor::Actions
13
-
14
- register(User, "user", "user <command>", "Manage collaborators")
15
- register(Backup, "backup", "backup <command>", "Manage database backups")
16
- register(Deploys, "deploys", "deploys <command>", "View deploy logs")
17
- register(Config, "config", "config <command>", "Manage application configuration files")
18
- register(Files, "files", "files <command>", "Upload and download files to and from persistent storage")
12
+ register_subcommand(User, "user", "user <command>", "Manage collaborators")
13
+ register_subcommand(Backup, "backup", "backup <command>", "Manage database backups")
14
+ register_subcommand(Deploy, "deploy", "deploy <command>", "View deploy logs")
15
+ register_subcommand(Config, "config", "config <command>", "Manage application configuration files")
16
+ register_subcommand(File, "file", "file <command>", "Upload and download files to and from persistent storage")
19
17
 
20
18
  check_unknown_options!(:except => :rake)
21
19
 
@@ -11,7 +11,7 @@ module Shelly
11
11
 
12
12
  desc "list", "List users with access to clouds defined in Cloudfile"
13
13
  def list
14
- app = multiple_clouds(options[:cloud], "list")
14
+ app = multiple_clouds(options[:cloud], "user list")
15
15
  say "Cloud #{app}:"
16
16
  app.active_collaborations.each { |c| say " #{c["email"]}" }
17
17
  app.inactive_collaborations.each { |c|
@@ -21,7 +21,7 @@ module Shelly
21
21
  desc "add [EMAIL]", "Add new developer to clouds defined in Cloudfile"
22
22
  def add(email = nil)
23
23
  user = Shelly::User.new
24
- app = multiple_clouds(options[:cloud], "add")
24
+ app = multiple_clouds(options[:cloud], "user add")
25
25
  user_email = email || ask_for_email({:guess_email => false})
26
26
  user.send_invitation(app.to_s, user_email)
27
27
  say "Sending invitation to #{user_email} to work on #{app}", :green
@@ -37,7 +37,7 @@ module Shelly
37
37
  desc "delete [EMAIL]", "Remove developer from clouds defined in Cloudfile"
38
38
  def delete(email = nil)
39
39
  user = Shelly::User.new
40
- app = multiple_clouds(options[:cloud], "delete")
40
+ app = multiple_clouds(options[:cloud], "user delete")
41
41
  user_email = email || ask_for_email({:guess_email => false})
42
42
  user.delete_collaboration(app.to_s, user_email)
43
43
  say "User #{user_email} deleted from cloud #{app}"
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.1.27"
2
+ VERSION = "0.1.28"
3
3
  end
data/lib/thor/basic.rb CHANGED
@@ -1,9 +1,7 @@
1
1
  class Thor
2
2
  module Shell
3
-
4
3
  def print_wrapped(*args)
5
4
  shell.print_wrapped(*args)
6
5
  end
7
-
8
6
  end
9
7
  end
data/lib/thor/thor.rb CHANGED
@@ -1,5 +1,11 @@
1
1
  class Thor
2
2
  class << self
3
+ def register_subcommand(klass, subcommand, usage, description, options = {})
4
+ register(klass, subcommand, usage, description, options)
5
+ # This could be done with ActiveSupport::Inflector module but is this necessary?
6
+ register(klass, subcommand + "s", usage, description, :hide => true)
7
+ end
8
+
3
9
  def before_hook(method, options = {})
4
10
  @hook = {} unless @hook
5
11
  @hook[method] = options
@@ -1,11 +1,11 @@
1
1
  require "spec_helper"
2
- require "shelly/cli/deploys"
2
+ require "shelly/cli/deploy"
3
3
 
4
- describe Shelly::CLI::Deploys do
4
+ describe Shelly::CLI::Deploy do
5
5
  before do
6
6
  FileUtils.stub(:chmod)
7
- @deploys = Shelly::CLI::Deploys.new
8
- Shelly::CLI::Deploys.stub(:new).and_return(@deploys)
7
+ @deploys = Shelly::CLI::Deploy.new
8
+ Shelly::CLI::Deploy.stub(:new).and_return(@deploys)
9
9
  @client = mock
10
10
  Shelly::Client.stub(:new).and_return(@client)
11
11
  $stdout.stub(:puts)
@@ -1,10 +1,10 @@
1
1
  require "spec_helper"
2
- require "shelly/cli/files"
2
+ require "shelly/cli/file"
3
3
 
4
- describe Shelly::CLI::Files do
4
+ describe Shelly::CLI::File do
5
5
  before do
6
6
  FileUtils.stub(:chmod)
7
- @cli_files = Shelly::CLI::Files.new
7
+ @cli_files = Shelly::CLI::File.new
8
8
  @client = mock
9
9
  Shelly::Client.stub(:new).and_return(@client)
10
10
  @client.stub(:token).and_return("abc")
@@ -27,29 +27,29 @@ describe Shelly::CLI::Main do
27
27
  it "should display available commands" do
28
28
  out = IO.popen("bin/shelly --debug").read.strip
29
29
  out.should include("Tasks:")
30
- out.should include("shelly add # Add a new cloud")
31
- out.should include("shelly backup <command> # Manage database backups")
32
- out.should include("shelly check # Check if application fulfills Shelly Cloud requirements")
33
- out.should include("shelly config <command> # Manage application configuration files")
34
- out.should include("shelly console # Open application console")
35
- out.should include("shelly dbconsole # Run rails dbconsole")
36
- out.should include("shelly delete # Delete the cloud")
37
- out.should include("shelly deploys <command> # View deploy logs")
38
- out.should include("shelly files <command> # Upload and download files to and from persistent storage")
39
- out.should include("shelly help [TASK] # Describe available tasks or one specific task")
40
- out.should include("shelly info # Show basic information about cloud")
41
- out.should include("shelly list # List available clouds")
42
- out.should include("shelly login [EMAIL] # Log into Shelly Cloud")
43
- out.should include("shelly logout # Logout from Shelly Cloud")
44
- out.should include("shelly logs # Show latest application logs")
45
- out.should include("shelly open # Open application page in browser")
46
- out.should include("shelly rake TASK # Run rake task")
47
- out.should include("shelly redeploy # Redeploy application")
48
- out.should include("shelly register [EMAIL] # Register new account")
49
- out.should include("shelly setup # Set up git remotes for deployment on Shelly Cloud")
50
- out.should include("shelly start # Start the cloud")
51
- out.should include("shelly stop # Shutdown the cloud")
52
- out.should include("shelly user <command> # Manage collaborators")
30
+ out.should include("shelly add # Add a new cloud")
31
+ out.should include("shelly backup <command> # Manage database backups")
32
+ out.should include("shelly check # Check if application fulfills Shelly Cloud requirements")
33
+ out.should include("shelly config <command> # Manage application configuration files")
34
+ out.should include("shelly console # Open application console")
35
+ out.should include("shelly dbconsole # Run rails dbconsole")
36
+ out.should include("shelly delete # Delete the cloud")
37
+ out.should include("shelly deploy <command> # View deploy logs")
38
+ out.should include("shelly file <command> # Upload and download files to and from persistent storage")
39
+ out.should include("shelly help [TASK] # Describe available tasks or one specific task")
40
+ out.should include("shelly info # Show basic information about cloud")
41
+ out.should include("shelly list # List available clouds")
42
+ out.should include("shelly login [EMAIL] # Log into Shelly Cloud")
43
+ out.should include("shelly logout # Logout from Shelly Cloud")
44
+ out.should include("shelly logs # Show latest application logs")
45
+ out.should include("shelly open # Open application page in browser")
46
+ out.should include("shelly rake TASK # Run rake task")
47
+ out.should include("shelly redeploy # Redeploy application")
48
+ out.should include("shelly register [EMAIL] # Register new account")
49
+ out.should include("shelly setup # Set up git remotes for deployment on Shelly Cloud")
50
+ out.should include("shelly start # Start the cloud")
51
+ out.should include("shelly stop # Shutdown the cloud")
52
+ out.should include("shelly user <command> # Manage collaborators")
53
53
  out.should include("Options")
54
54
  out.should include("[--debug] # Show debug information")
55
55
  out.should include("-h, [--help] # Describe available tasks or one specific task")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.27
4
+ version: 0.1.28
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: 2012-09-12 00:00:00.000000000 Z
12
+ date: 2012-09-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -292,8 +292,8 @@ files:
292
292
  - lib/shelly/cli/backup.rb
293
293
  - lib/shelly/cli/command.rb
294
294
  - lib/shelly/cli/config.rb
295
- - lib/shelly/cli/deploys.rb
296
- - lib/shelly/cli/files.rb
295
+ - lib/shelly/cli/deploy.rb
296
+ - lib/shelly/cli/file.rb
297
297
  - lib/shelly/cli/main.rb
298
298
  - lib/shelly/cli/runner.rb
299
299
  - lib/shelly/cli/user.rb
@@ -318,8 +318,8 @@ files:
318
318
  - spec/shelly/backup_spec.rb
319
319
  - spec/shelly/cli/backup_spec.rb
320
320
  - spec/shelly/cli/config_spec.rb
321
- - spec/shelly/cli/deploys_spec.rb
322
- - spec/shelly/cli/files_spec.rb
321
+ - spec/shelly/cli/deploy_spec.rb
322
+ - spec/shelly/cli/file_spec.rb
323
323
  - spec/shelly/cli/main_spec.rb
324
324
  - spec/shelly/cli/runner_spec.rb
325
325
  - spec/shelly/cli/user_spec.rb
@@ -362,8 +362,8 @@ test_files:
362
362
  - spec/shelly/backup_spec.rb
363
363
  - spec/shelly/cli/backup_spec.rb
364
364
  - spec/shelly/cli/config_spec.rb
365
- - spec/shelly/cli/deploys_spec.rb
366
- - spec/shelly/cli/files_spec.rb
365
+ - spec/shelly/cli/deploy_spec.rb
366
+ - spec/shelly/cli/file_spec.rb
367
367
  - spec/shelly/cli/main_spec.rb
368
368
  - spec/shelly/cli/runner_spec.rb
369
369
  - spec/shelly/cli/user_spec.rb