bbcloud 0.11.2 → 0.12.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 (198) hide show
  1. data/.gitignore +3 -2
  2. data/Gemfile +3 -0
  3. data/README +11 -1
  4. data/README.rdoc +11 -1
  5. data/Rakefile +12 -0
  6. data/bbcloud.gemspec +10 -10
  7. data/bin/brightbox-accounts +7 -2
  8. data/bin/brightbox-cloudips +7 -2
  9. data/bin/brightbox-config +7 -2
  10. data/bin/brightbox-images +7 -2
  11. data/bin/brightbox-lbs +7 -2
  12. data/bin/brightbox-servers +7 -2
  13. data/bin/brightbox-types +7 -2
  14. data/bin/brightbox-users +7 -2
  15. data/bin/brightbox-zones +7 -2
  16. data/lib/bbcloud.rb +43 -0
  17. data/lib/bbcloud/accounts.rb +5 -3
  18. data/lib/bbcloud/command_generator.rb +50 -0
  19. data/lib/bbcloud/commands/accounts-list.rb +13 -11
  20. data/lib/bbcloud/commands/accounts-reset-ftp-password.rb +26 -23
  21. data/lib/bbcloud/commands/accounts-show.rb +20 -16
  22. data/lib/bbcloud/commands/cloudips-create.rb +16 -14
  23. data/lib/bbcloud/commands/cloudips-destroy.rb +29 -26
  24. data/lib/bbcloud/commands/cloudips-list.rb +13 -11
  25. data/lib/bbcloud/commands/cloudips-map.rb +48 -46
  26. data/lib/bbcloud/commands/cloudips-show.rb +15 -12
  27. data/lib/bbcloud/commands/cloudips-unmap.rb +28 -25
  28. data/lib/bbcloud/commands/config-client-add.rb +33 -31
  29. data/lib/bbcloud/commands/config-client-default.rb +18 -16
  30. data/lib/bbcloud/commands/config-client-list.rb +19 -16
  31. data/lib/bbcloud/commands/config-client-remove.rb +18 -16
  32. data/lib/bbcloud/commands/images-destroy.rb +18 -16
  33. data/lib/bbcloud/commands/images-list.rb +20 -18
  34. data/lib/bbcloud/commands/images-register.rb +21 -19
  35. data/lib/bbcloud/commands/images-show.rb +17 -15
  36. data/lib/bbcloud/commands/lbs-add-nodes.rb +15 -13
  37. data/lib/bbcloud/commands/lbs-create.rb +65 -63
  38. data/lib/bbcloud/commands/lbs-destroy.rb +13 -11
  39. data/lib/bbcloud/commands/lbs-list.rb +13 -11
  40. data/lib/bbcloud/commands/lbs-remove-nodes.rb +15 -13
  41. data/lib/bbcloud/commands/lbs-show.rb +15 -13
  42. data/lib/bbcloud/commands/lbs-update.rb +59 -57
  43. data/lib/bbcloud/commands/servers-activate-cloud.rb +18 -16
  44. data/lib/bbcloud/commands/servers-create.rb +80 -77
  45. data/lib/bbcloud/commands/servers-destroy.rb +17 -15
  46. data/lib/bbcloud/commands/servers-list.rb +14 -14
  47. data/lib/bbcloud/commands/servers-show.rb +39 -37
  48. data/lib/bbcloud/commands/servers-shutdown.rb +14 -12
  49. data/lib/bbcloud/commands/servers-snapshot.rb +14 -12
  50. data/lib/bbcloud/commands/servers-start.rb +15 -13
  51. data/lib/bbcloud/commands/servers-stop.rb +14 -12
  52. data/lib/bbcloud/commands/types-list.rb +13 -11
  53. data/lib/bbcloud/commands/types-show.rb +18 -16
  54. data/lib/bbcloud/commands/users-list.rb +13 -11
  55. data/lib/bbcloud/commands/users-show.rb +17 -15
  56. data/lib/bbcloud/commands/users-update.rb +27 -25
  57. data/lib/bbcloud/commands/zones-list.rb +13 -11
  58. data/lib/bbcloud/config.rb +125 -111
  59. data/lib/bbcloud/error_parser.rb +34 -0
  60. data/lib/bbcloud/fog_extensions.rb +19 -0
  61. data/lib/bbcloud/gli_global_hooks.rb +56 -0
  62. data/lib/bbcloud/logging.rb +40 -0
  63. data/lib/bbcloud/ruby_core_ext.rb +9 -0
  64. data/lib/bbcloud/servers.rb +7 -2
  65. data/lib/bbcloud/tables.rb +78 -73
  66. data/lib/bbcloud/vendor/gli/.gitignore +10 -0
  67. data/lib/bbcloud/vendor/gli/.rvmrc +1 -0
  68. data/lib/bbcloud/vendor/gli/Gemfile +5 -0
  69. data/lib/bbcloud/vendor/gli/LICENSE.txt +201 -0
  70. data/lib/bbcloud/vendor/gli/README.rdoc +54 -0
  71. data/lib/bbcloud/vendor/gli/Rakefile +84 -0
  72. data/lib/bbcloud/vendor/gli/bin/gli +72 -0
  73. data/lib/bbcloud/vendor/gli/bin/report_on_rake_results +10 -0
  74. data/lib/bbcloud/vendor/gli/bin/test_all_rubies.sh +2 -0
  75. data/lib/bbcloud/vendor/gli/features/gli_executable.feature +88 -0
  76. data/lib/bbcloud/vendor/gli/features/gli_init.feature +122 -0
  77. data/lib/bbcloud/vendor/gli/features/step_definitions/gli_executable_steps.rb +12 -0
  78. data/lib/bbcloud/vendor/gli/features/step_definitions/gli_init_steps.rb +4 -0
  79. data/lib/bbcloud/vendor/gli/features/support/env.rb +21 -0
  80. data/lib/bbcloud/vendor/gli/gli.cheat +80 -0
  81. data/lib/bbcloud/vendor/gli/gli.gemspec +46 -0
  82. data/lib/bbcloud/vendor/gli/gli.rdoc +51 -0
  83. data/lib/bbcloud/vendor/gli/lib/gli.rb +560 -0
  84. data/lib/bbcloud/vendor/gli/lib/gli/command.rb +124 -0
  85. data/lib/bbcloud/vendor/gli/lib/gli/command_line_token.rb +58 -0
  86. data/lib/bbcloud/vendor/gli/lib/gli/copy_options_to_aliases.rb +33 -0
  87. data/lib/bbcloud/vendor/gli/lib/gli/exceptions.rb +45 -0
  88. data/lib/bbcloud/vendor/gli/lib/gli/flag.rb +67 -0
  89. data/lib/bbcloud/vendor/gli/lib/gli/options.rb +19 -0
  90. data/lib/bbcloud/vendor/gli/lib/gli/switch.rb +63 -0
  91. data/lib/bbcloud/vendor/gli/lib/gli/terminal.rb +79 -0
  92. data/lib/bbcloud/vendor/gli/lib/gli_version.rb +3 -0
  93. data/lib/bbcloud/vendor/gli/lib/support/help.rb +180 -0
  94. data/lib/bbcloud/vendor/gli/lib/support/initconfig.rb +34 -0
  95. data/lib/bbcloud/vendor/gli/lib/support/rdoc.rb +119 -0
  96. data/lib/bbcloud/vendor/gli/lib/support/scaffold.rb +284 -0
  97. data/lib/bbcloud/vendor/gli/test/config.yaml +9 -0
  98. data/lib/bbcloud/vendor/gli/test/gli.reek +116 -0
  99. data/lib/bbcloud/vendor/gli/test/roodi.yaml +9 -0
  100. data/lib/bbcloud/vendor/gli/test/tc_command.rb +329 -0
  101. data/lib/bbcloud/vendor/gli/test/tc_flag.rb +67 -0
  102. data/lib/bbcloud/vendor/gli/test/tc_gli.rb +429 -0
  103. data/lib/bbcloud/vendor/gli/test/tc_options.rb +31 -0
  104. data/lib/bbcloud/vendor/gli/test/tc_parsing.rb +279 -0
  105. data/lib/bbcloud/vendor/gli/test/tc_switch.rb +80 -0
  106. data/lib/bbcloud/vendor/gli/test/tc_terminal.rb +91 -0
  107. data/lib/bbcloud/version.rb +1 -1
  108. data/pkg/bbcloud-0.12.0.gem +0 -0
  109. data/spec/fixtures/vcr_cassettes/server_list.yml +117 -0
  110. data/spec/servers_spec.rb +36 -0
  111. data/spec/spec_helper.rb +24 -0
  112. data/spec/support/common_helpers.rb +47 -0
  113. metadata +129 -135
  114. data/lib/bbcloud/cli.rb +0 -160
  115. data/lib/bbcloud/vendor/fog/lib/fog.rb +0 -14
  116. data/lib/bbcloud/vendor/fog/lib/fog/compute.rb +0 -43
  117. data/lib/bbcloud/vendor/fog/lib/fog/compute/brightbox.rb +0 -162
  118. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/account.rb +0 -51
  119. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ip.rb +0 -47
  120. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ips.rb +0 -34
  121. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavor.rb +0 -33
  122. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavors.rb +0 -28
  123. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/image.rb +0 -56
  124. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/images.rb +0 -28
  125. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancer.rb +0 -50
  126. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancers.rb +0 -28
  127. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/server.rb +0 -108
  128. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/servers.rb +0 -29
  129. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/user.rb +0 -39
  130. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/users.rb +0 -29
  131. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zone.rb +0 -21
  132. data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zones.rb +0 -29
  133. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/activate_console_server.rb +0 -20
  134. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +0 -20
  135. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +0 -20
  136. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_api_client.rb +0 -19
  137. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +0 -19
  138. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_image.rb +0 -19
  139. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_load_balancer.rb +0 -19
  140. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_server.rb +0 -19
  141. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_api_client.rb +0 -20
  142. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +0 -20
  143. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_image.rb +0 -20
  144. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +0 -20
  145. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_server.rb +0 -20
  146. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_account.rb +0 -19
  147. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_api_client.rb +0 -20
  148. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +0 -20
  149. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_image.rb +0 -20
  150. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_interface.rb +0 -20
  151. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_load_balancer.rb +0 -20
  152. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server.rb +0 -20
  153. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server_type.rb +0 -20
  154. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_user.rb +0 -20
  155. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_zone.rb +0 -20
  156. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_api_clients.rb +0 -19
  157. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +0 -19
  158. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_images.rb +0 -19
  159. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_load_balancers.rb +0 -19
  160. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_server_types.rb +0 -19
  161. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_servers.rb +0 -19
  162. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_users.rb +0 -19
  163. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_zones.rb +0 -19
  164. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +0 -20
  165. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +0 -20
  166. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +0 -20
  167. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +0 -19
  168. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/resize_server.rb +0 -19
  169. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/shutdown_server.rb +0 -20
  170. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/snapshot_server.rb +0 -20
  171. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/start_server.rb +0 -20
  172. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/stop_server.rb +0 -20
  173. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +0 -20
  174. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_account.rb +0 -20
  175. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_api_client.rb +0 -21
  176. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_image.rb +0 -21
  177. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_load_balancer.rb +0 -21
  178. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_server.rb +0 -21
  179. data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_user.rb +0 -21
  180. data/lib/bbcloud/vendor/fog/lib/fog/core.rb +0 -32
  181. data/lib/bbcloud/vendor/fog/lib/fog/core/attributes.rb +0 -178
  182. data/lib/bbcloud/vendor/fog/lib/fog/core/collection.rb +0 -127
  183. data/lib/bbcloud/vendor/fog/lib/fog/core/connection.rb +0 -35
  184. data/lib/bbcloud/vendor/fog/lib/fog/core/credentials.rb +0 -92
  185. data/lib/bbcloud/vendor/fog/lib/fog/core/deprecation.rb +0 -23
  186. data/lib/bbcloud/vendor/fog/lib/fog/core/errors.rb +0 -20
  187. data/lib/bbcloud/vendor/fog/lib/fog/core/hmac.rb +0 -48
  188. data/lib/bbcloud/vendor/fog/lib/fog/core/mock.rb +0 -68
  189. data/lib/bbcloud/vendor/fog/lib/fog/core/model.rb +0 -57
  190. data/lib/bbcloud/vendor/fog/lib/fog/core/parser.rb +0 -99
  191. data/lib/bbcloud/vendor/fog/lib/fog/core/provider.rb +0 -18
  192. data/lib/bbcloud/vendor/fog/lib/fog/core/scp.rb +0 -67
  193. data/lib/bbcloud/vendor/fog/lib/fog/core/service.rb +0 -175
  194. data/lib/bbcloud/vendor/fog/lib/fog/core/ssh.rb +0 -120
  195. data/lib/bbcloud/vendor/fog/lib/fog/core/time.rb +0 -27
  196. data/lib/bbcloud/vendor/fog/lib/fog/core/wait_for.rb +0 -17
  197. data/lib/bbcloud/vendor/fog/lib/fog/providers.rb +0 -9
  198. data/lib/bbcloud/vendor/fog/lib/fog/providers/brightbox.rb +0 -9
@@ -0,0 +1,54 @@
1
+ = Git-Like Interface Command Line Parser
2
+
3
+ Author:: Dave Copeland (mailto:davetron5000 at g mail dot com)
4
+ Copyright:: Copyright (c) 2010 by Dave Copeland
5
+ License:: Distributes under the Apache License, see LICENSE.txt in the source distro
6
+
7
+ This is a DSL you can use to create a command line interface like git, gem or svn, in that the first argument is a command, and there are global and command specific flags.
8
+
9
+ * {Source on Github}[http://github.com/davetron5000/gli]
10
+ * RDoc[http://davetron5000.github.com/gli]
11
+
12
+ == Use
13
+
14
+ Install if you need to:
15
+
16
+ gem install gli
17
+
18
+ The simplest way to get started is to create a scaffold project
19
+
20
+ gli init my_proj command_name other_command_name
21
+
22
+ This will create a basic scaffold project in <tt>./my_proj</tt> with:
23
+
24
+ * executable in <tt>./my_proj/bin/my_proj</tt>. This file demonstrates most of what you need to describe your command line interface.
25
+ * an empty test in <tt>./my_proj/test/tc_nothing.rb</tt> that can bootstrap your tests
26
+ * a gemspec shell
27
+ * a README shell
28
+ * Rakefile that can generate RDoc, package your Gem and run tests
29
+ * A <tt>Gemfile</tt> suitable for use with Bundler to manage development-time dependencies
30
+
31
+ == Supported Platforms
32
+
33
+ Known to work on
34
+
35
+ * 1.8.7
36
+ * 1.9.2
37
+ * Ruby Enterprise Edition 1.8.7
38
+ * Rubinius 1.0.1
39
+ * JRuby 1.5.2
40
+
41
+ If you're interested in other versions of Ruby, let me know, and I'll add them to my test suite
42
+
43
+ == Documentation
44
+
45
+ Extensive documentation is {available at the wiki}[https://github.com/davetron5000/gli/wiki]. For API Documentation, start with the GLI module.
46
+
47
+ == Links
48
+
49
+ * [http://davetron5000.github.com/gli] - RubyDoc
50
+ * [http://www.github.com/davetron5000/gli] - Source on GitHub
51
+ * [http://www.github.com/davetron5000/gli/wiki] - Documentation Wiki
52
+ * [http://www.github.com/davetron5000/gli/wiki/Changelog] - Changelog
53
+
54
+ :include:gli.rdoc
@@ -0,0 +1,84 @@
1
+ require 'rake/clean'
2
+ require 'rubygems'
3
+ require 'rake/gempackagetask'
4
+ require 'rake/testtask'
5
+ require 'rake/rdoctask'
6
+ require 'sdoc'
7
+ require 'grancher/task'
8
+ require 'reek/rake/task'
9
+ require 'roodi'
10
+ require 'roodi_task'
11
+ require 'cucumber'
12
+ require 'cucumber/rake/task'
13
+
14
+ CLEAN << "cruddo.rdoc"
15
+ CLEAN << "log"
16
+ CLOBBER << FileList['**/*.rbc']
17
+
18
+ Grancher::Task.new do |g|
19
+ g.branch = 'gh-pages'
20
+ g.push_to = 'origin'
21
+ g.directory 'html'
22
+ end
23
+
24
+ Rake::RDocTask.new do |rd|
25
+ rd.main = "README.rdoc"
26
+ rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
27
+ rd.options << '--fmt' << 'shtml'
28
+ rd.template = 'direct'
29
+ rd.title = 'Git Like Interface'
30
+ end
31
+
32
+ spec = eval(File.read('gli.gemspec'))
33
+
34
+ Rake::GemPackageTask.new(spec) do |pkg|
35
+ end
36
+
37
+ Reek::Rake::Task.new do |t|
38
+ t.fail_on_error = true
39
+ t.config_files = ['test/gli.reek']
40
+ t.source_files = FileList['lib/**/*.rb'] - FileList['lib/support/*.rb']
41
+ end
42
+
43
+ RoodiTask.new do |t|
44
+ t.patterns = ['lib/*.rb','lib/gli/*.rb']
45
+ t.config = 'test/roodi.yaml'
46
+ end
47
+
48
+ Rake::TestTask.new do |t|
49
+ t.libs << "test"
50
+ t.test_files = FileList['test/tc_*.rb']
51
+ end
52
+
53
+ CUKE_RESULTS = 'results.html'
54
+ CLEAN << CUKE_RESULTS
55
+ Cucumber::Rake::Task.new(:features) do |t|
56
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
57
+ t.fork = false
58
+ end
59
+
60
+ begin
61
+ require 'rcov/rcovtask'
62
+ task :clobber_coverage do
63
+ rm_rf "coverage"
64
+ end
65
+
66
+ desc 'Measures test coverage'
67
+ task :coverage => :rcov do
68
+ puts "coverage/index.html contains what you need"
69
+ end
70
+
71
+ Rcov::RcovTask.new do |t|
72
+ t.libs << 'lib'
73
+ t.test_files = FileList['test/tc_*.rb']
74
+ end
75
+ rescue LoadError
76
+ $stderr.puts "rcov not installed; you won't be able to check code coverage"
77
+ $stderr.puts "Since rcov only works on MRI 1.8.7, this shouldn't be a problem"
78
+ end
79
+
80
+ desc 'Publish rdoc on github pages and push to github'
81
+ task :publish_rdoc => [:rdoc,:publish]
82
+
83
+ task :default => [:test,:features,:roodi,:reek]
84
+
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ # 1.9 adds realpath to resolve symlinks; 1.8 doesn't
3
+ # have this method, so we add it so we get resolved symlinks
4
+ # and compatibility
5
+ unless File.respond_to? :realpath
6
+ class File #:nodoc:
7
+ def self.realpath path
8
+ return realpath(File.readlink(path)) if symlink?(path)
9
+ path
10
+ end
11
+ end
12
+ end
13
+
14
+ $: << File.expand_path(File.dirname(File.realpath(__FILE__)) + '/../lib')
15
+
16
+ require 'gli'
17
+ require 'support/scaffold'
18
+ require 'gli_version'
19
+
20
+ include GLI
21
+
22
+ program_desc 'gli allows you to create the scaffolding for a GLI-powered application'
23
+
24
+ version GLI::VERSION
25
+ desc 'Be verbose'
26
+ switch :v
27
+
28
+ desc 'Dry run; don''t change the disk'
29
+ switch :n
30
+
31
+ desc 'Root dir of project'
32
+ long_desc 'This is the directory where the project''s directory will be made, so if you specify a project name ''foo'' and the root dir of ''.'', the directory ''./foo'' will be created'
33
+ default_value '.'
34
+ flag [:r,:root]
35
+
36
+ desc 'Create a new GLI-based project'
37
+ long_desc <<EOS
38
+ This will create a scaffold command line project that uses GLI
39
+ for command line processing. Specifically, this will create
40
+ an executable ready to go, as well as a lib and test directory, all
41
+ inside the directory named for your project
42
+ EOS
43
+ arg_name 'project_name [command[ command]*]'
44
+ command [:init,:scaffold] do |c|
45
+
46
+ c.desc 'Create an ext dir'
47
+ c.switch [:e,:ext]
48
+
49
+ c.desc 'Do not create a test dir'
50
+ c.switch [:notest]
51
+
52
+ c.desc 'Overwrite/ignore existing files and directories'
53
+ c.switch [:force]
54
+
55
+ c.action do |g,o,args|
56
+ if args.length < 1
57
+ raise 'You must specify the name of your project'
58
+ end
59
+ Scaffold.create_scaffold(g[:r],!o[:notest],o[:e],args[0],args[1..-1],o[:force],g[:n])
60
+ end
61
+ end
62
+
63
+ pre do |global,command,options,args|
64
+ puts "Executing #{command.name}" if global[:v]
65
+ true
66
+ end
67
+
68
+ post do |global,command,options,args|
69
+ puts "Executed #{command.name}" if global[:v]
70
+ end
71
+
72
+ exit run(ARGV)
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ require 'yaml'
3
+ require 'rainbow'
4
+
5
+ results = YAML::load(STDIN)
6
+ success = results["successes"] || []
7
+ errors = results["errors"] || []
8
+ success.each { |ruby| puts ruby.color(:green) }
9
+ errors.each { |ruby| puts ruby.color(:red) }
10
+ exit -1 unless errors.empty?
@@ -0,0 +1,2 @@
1
+ rvm 1.9.2@gli-dev,1.8.7@gli-dev,jruby@gli-dev,rbx@gli-dev,ree@gli-dev --yaml rake test | bin/report_on_rake_results
2
+ rake clobber > /dev/null 2>&1
@@ -0,0 +1,88 @@
1
+ Feature: The GLI executable works as intended
2
+ As a developer who wants to make a GLI-powered command-line app
3
+ When I use the app provided by GLI
4
+ I get a reasonably working application
5
+
6
+ Background:
7
+ Given I have GLI installed
8
+ And my terminal size is "80x24"
9
+
10
+ Scenario Outline: Getting Help for GLI
11
+ When I run `gli <command>`
12
+ Then the exit status should be 0
13
+ And the output should contain:
14
+ """
15
+ usage: gli [global options] command [command options]
16
+
17
+ Version:
18
+ """
19
+ And the output should contain:
20
+ """
21
+ Global Options:
22
+ -n - Dry run; dont change the disk
23
+ -r, --root=arg - Root dir of project (default: .)
24
+ -v - Be verbose
25
+
26
+ Commands:
27
+ help - Shows list of commands or help for one command
28
+ init, scaffold - Create a new GLI-based project
29
+ """
30
+
31
+ Examples:
32
+ |command|
33
+ | |
34
+ |help |
35
+
36
+
37
+ Scenario Outline: Getting help on scaffolding
38
+ When I run `gli help <command>`
39
+ Then the exit status should be 0
40
+ And the output should contain exactly:
41
+ """
42
+ init [command options] project_name [command[ command]*]
43
+ Create a new GLI-based project
44
+
45
+ This will create a scaffold command line project that uses GLI for command
46
+ line processing. Specifically, this will create an executable ready to go, as
47
+ well as a lib and test directory, all inside the directory named for your
48
+ project
49
+
50
+ Command Options:
51
+ -e, --ext - Create an ext dir
52
+ --force - Overwrite/ignore existing files and directories
53
+ --notest - Do not create a test dir
54
+
55
+ """
56
+
57
+ Examples:
58
+ |command |
59
+ |init |
60
+ |scaffold |
61
+
62
+
63
+ Scenario: GLI correctly identifies non-existent command
64
+ When I run `gli foobar`
65
+ Then the exit status should not be 0
66
+ And the output should contain exactly:
67
+ """
68
+ error: Unknown command 'foobar'. Use 'gli help' for a list of commands
69
+
70
+ """
71
+
72
+ Scenario: GLI correctly identifies non-existent global flag
73
+ When I run `gli -q help`
74
+ Then the exit status should not be 0
75
+ And the output should contain exactly:
76
+ """
77
+ error: Unknown option -q. Use 'gli help' for a list of global options
78
+
79
+ """
80
+
81
+ Scenario: GLI correctly identifies non-existent command flag
82
+ When I run `gli init -q`
83
+ Then the exit status should not be 0
84
+ And the output should contain exactly:
85
+ """
86
+ error: Unknown option -q. Use 'gli help init' for a list of command options
87
+
88
+ """
@@ -0,0 +1,122 @@
1
+ Feature: The scaffold GLI generates works
2
+ As a developer who wants to make a GLI-powered command-line app
3
+ When I generate a GLI-powered app
4
+ Things work out of the box
5
+
6
+ Background:
7
+ Given I have GLI installed
8
+ And GLI's libs are in my path
9
+ And my terminal size is "80x24"
10
+
11
+ Scenario: Scaffold generates and things look good
12
+ When I run `gli init todo add complete list`
13
+ Then the exit status should be 0
14
+ And the output should contain exactly:
15
+ """
16
+ Creating dir ./todo/lib...
17
+ Creating dir ./todo/bin...
18
+ Creating dir ./todo/test...
19
+ Created ./todo/bin/todo
20
+ Created ./todo/README.rdoc
21
+ Created ./todo/todo.rdoc
22
+ Created ./todo/todo.gemspec
23
+ Created ./todo/test/tc_nothing.rb
24
+ Created ./todo/Rakefile
25
+ Created ./todo/Gemfile
26
+ Created ./todo/lib/todo_version.rb
27
+
28
+ """
29
+ And the following directories should exist:
30
+ |todo |
31
+ |todo/bin |
32
+ |todo/test |
33
+ |todo/lib |
34
+ And the following files should exist:
35
+ |todo/bin/todo |
36
+ |todo/README.rdoc |
37
+ |todo/todo.rdoc |
38
+ |todo/todo.gemspec |
39
+ |todo/test/tc_nothing.rb |
40
+ |todo/Rakefile |
41
+ |todo/Gemfile |
42
+ |todo/lib/todo_version.rb |
43
+ When I cd to "todo"
44
+ And I run `bin/todo`
45
+ Then the output should contain:
46
+ """
47
+ usage: todo [global options] command [command options]
48
+
49
+ Version: 0.0.1
50
+
51
+ Global Options:
52
+ -f, --flagname=The name of the argument - Describe some flag here (default:
53
+ the default)
54
+ -s, --switch - Describe some switch here
55
+
56
+ Commands:
57
+ add - Describe add here
58
+ complete - Describe complete here
59
+ help - Shows list of commands or help for one command
60
+ list - Describe list here
61
+
62
+ """
63
+ When I run `bin/todo help add`
64
+ Then the output should contain:
65
+ """
66
+ add [command options] Describe arguments to add here
67
+ Describe add here
68
+
69
+ Command Options:
70
+ -f arg - Describe a flag to add (default: default)
71
+ -s - Describe a switch to add
72
+ """
73
+ When I run `rake test`
74
+ Then the output should contain:
75
+ """
76
+ Started
77
+ .
78
+ """
79
+ And the output should contain:
80
+ """
81
+
82
+ 1 tests, 1 assertions, 0 failures, 0 errors
83
+ """
84
+ When I run `bin/todo rdoc`
85
+ Then the file "todo.rdoc" should contain "todo [global options] command_name [command-specific options] [--] arguments..."
86
+ And the file "todo.rdoc" should contain "[<tt>add</tt>] Describe add here"
87
+ And the file "todo.rdoc" should contain "[<tt>complete</tt>] Describe complete here"
88
+ And the file "todo.rdoc" should contain "[<tt>list</tt>] Describe list here"
89
+
90
+ @debug
91
+ Scenario: Scaffold generates and respects flags to create ext dir and avoid test dir
92
+ When I run `gli init -e --notest todo add complete list`
93
+ Then the exit status should be 0
94
+ And the output should contain exactly:
95
+ """
96
+ Creating dir ./todo/lib...
97
+ Creating dir ./todo/bin...
98
+ Creating dir ./todo/ext...
99
+ Created ./todo/bin/todo
100
+ Created ./todo/README.rdoc
101
+ Created ./todo/todo.rdoc
102
+ Created ./todo/todo.gemspec
103
+ Created ./todo/Rakefile
104
+ Created ./todo/Gemfile
105
+ Created ./todo/lib/todo_version.rb
106
+
107
+ """
108
+ And the following directories should exist:
109
+ |todo |
110
+ |todo/bin |
111
+ |todo/ext |
112
+ |todo/lib |
113
+ And the following directories should not exist:
114
+ |todo/test|
115
+ And the following files should exist:
116
+ |todo/bin/todo |
117
+ |todo/README.rdoc |
118
+ |todo/todo.rdoc |
119
+ |todo/todo.gemspec |
120
+ |todo/Rakefile |
121
+ |todo/Gemfile |
122
+ |todo/lib/todo_version.rb |
@@ -0,0 +1,12 @@
1
+ Given /^I have GLI installed$/ do
2
+ end
3
+
4
+ Given /^my terminal size is "([^"]*)"$/ do |terminal_size|
5
+ if terminal_size =~/^(\d+)x(\d+)$/
6
+ ENV['COLUMNS'] = $1
7
+ ENV['LINES'] = $2
8
+ else
9
+ raise "Terminal size should be COLxLines, e.g. 80x24"
10
+ end
11
+ end
12
+