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.
- data/.gitignore +3 -2
- data/Gemfile +3 -0
- data/README +11 -1
- data/README.rdoc +11 -1
- data/Rakefile +12 -0
- data/bbcloud.gemspec +10 -10
- data/bin/brightbox-accounts +7 -2
- data/bin/brightbox-cloudips +7 -2
- data/bin/brightbox-config +7 -2
- data/bin/brightbox-images +7 -2
- data/bin/brightbox-lbs +7 -2
- data/bin/brightbox-servers +7 -2
- data/bin/brightbox-types +7 -2
- data/bin/brightbox-users +7 -2
- data/bin/brightbox-zones +7 -2
- data/lib/bbcloud.rb +43 -0
- data/lib/bbcloud/accounts.rb +5 -3
- data/lib/bbcloud/command_generator.rb +50 -0
- data/lib/bbcloud/commands/accounts-list.rb +13 -11
- data/lib/bbcloud/commands/accounts-reset-ftp-password.rb +26 -23
- data/lib/bbcloud/commands/accounts-show.rb +20 -16
- data/lib/bbcloud/commands/cloudips-create.rb +16 -14
- data/lib/bbcloud/commands/cloudips-destroy.rb +29 -26
- data/lib/bbcloud/commands/cloudips-list.rb +13 -11
- data/lib/bbcloud/commands/cloudips-map.rb +48 -46
- data/lib/bbcloud/commands/cloudips-show.rb +15 -12
- data/lib/bbcloud/commands/cloudips-unmap.rb +28 -25
- data/lib/bbcloud/commands/config-client-add.rb +33 -31
- data/lib/bbcloud/commands/config-client-default.rb +18 -16
- data/lib/bbcloud/commands/config-client-list.rb +19 -16
- data/lib/bbcloud/commands/config-client-remove.rb +18 -16
- data/lib/bbcloud/commands/images-destroy.rb +18 -16
- data/lib/bbcloud/commands/images-list.rb +20 -18
- data/lib/bbcloud/commands/images-register.rb +21 -19
- data/lib/bbcloud/commands/images-show.rb +17 -15
- data/lib/bbcloud/commands/lbs-add-nodes.rb +15 -13
- data/lib/bbcloud/commands/lbs-create.rb +65 -63
- data/lib/bbcloud/commands/lbs-destroy.rb +13 -11
- data/lib/bbcloud/commands/lbs-list.rb +13 -11
- data/lib/bbcloud/commands/lbs-remove-nodes.rb +15 -13
- data/lib/bbcloud/commands/lbs-show.rb +15 -13
- data/lib/bbcloud/commands/lbs-update.rb +59 -57
- data/lib/bbcloud/commands/servers-activate-cloud.rb +18 -16
- data/lib/bbcloud/commands/servers-create.rb +80 -77
- data/lib/bbcloud/commands/servers-destroy.rb +17 -15
- data/lib/bbcloud/commands/servers-list.rb +14 -14
- data/lib/bbcloud/commands/servers-show.rb +39 -37
- data/lib/bbcloud/commands/servers-shutdown.rb +14 -12
- data/lib/bbcloud/commands/servers-snapshot.rb +14 -12
- data/lib/bbcloud/commands/servers-start.rb +15 -13
- data/lib/bbcloud/commands/servers-stop.rb +14 -12
- data/lib/bbcloud/commands/types-list.rb +13 -11
- data/lib/bbcloud/commands/types-show.rb +18 -16
- data/lib/bbcloud/commands/users-list.rb +13 -11
- data/lib/bbcloud/commands/users-show.rb +17 -15
- data/lib/bbcloud/commands/users-update.rb +27 -25
- data/lib/bbcloud/commands/zones-list.rb +13 -11
- data/lib/bbcloud/config.rb +125 -111
- data/lib/bbcloud/error_parser.rb +34 -0
- data/lib/bbcloud/fog_extensions.rb +19 -0
- data/lib/bbcloud/gli_global_hooks.rb +56 -0
- data/lib/bbcloud/logging.rb +40 -0
- data/lib/bbcloud/ruby_core_ext.rb +9 -0
- data/lib/bbcloud/servers.rb +7 -2
- data/lib/bbcloud/tables.rb +78 -73
- data/lib/bbcloud/vendor/gli/.gitignore +10 -0
- data/lib/bbcloud/vendor/gli/.rvmrc +1 -0
- data/lib/bbcloud/vendor/gli/Gemfile +5 -0
- data/lib/bbcloud/vendor/gli/LICENSE.txt +201 -0
- data/lib/bbcloud/vendor/gli/README.rdoc +54 -0
- data/lib/bbcloud/vendor/gli/Rakefile +84 -0
- data/lib/bbcloud/vendor/gli/bin/gli +72 -0
- data/lib/bbcloud/vendor/gli/bin/report_on_rake_results +10 -0
- data/lib/bbcloud/vendor/gli/bin/test_all_rubies.sh +2 -0
- data/lib/bbcloud/vendor/gli/features/gli_executable.feature +88 -0
- data/lib/bbcloud/vendor/gli/features/gli_init.feature +122 -0
- data/lib/bbcloud/vendor/gli/features/step_definitions/gli_executable_steps.rb +12 -0
- data/lib/bbcloud/vendor/gli/features/step_definitions/gli_init_steps.rb +4 -0
- data/lib/bbcloud/vendor/gli/features/support/env.rb +21 -0
- data/lib/bbcloud/vendor/gli/gli.cheat +80 -0
- data/lib/bbcloud/vendor/gli/gli.gemspec +46 -0
- data/lib/bbcloud/vendor/gli/gli.rdoc +51 -0
- data/lib/bbcloud/vendor/gli/lib/gli.rb +560 -0
- data/lib/bbcloud/vendor/gli/lib/gli/command.rb +124 -0
- data/lib/bbcloud/vendor/gli/lib/gli/command_line_token.rb +58 -0
- data/lib/bbcloud/vendor/gli/lib/gli/copy_options_to_aliases.rb +33 -0
- data/lib/bbcloud/vendor/gli/lib/gli/exceptions.rb +45 -0
- data/lib/bbcloud/vendor/gli/lib/gli/flag.rb +67 -0
- data/lib/bbcloud/vendor/gli/lib/gli/options.rb +19 -0
- data/lib/bbcloud/vendor/gli/lib/gli/switch.rb +63 -0
- data/lib/bbcloud/vendor/gli/lib/gli/terminal.rb +79 -0
- data/lib/bbcloud/vendor/gli/lib/gli_version.rb +3 -0
- data/lib/bbcloud/vendor/gli/lib/support/help.rb +180 -0
- data/lib/bbcloud/vendor/gli/lib/support/initconfig.rb +34 -0
- data/lib/bbcloud/vendor/gli/lib/support/rdoc.rb +119 -0
- data/lib/bbcloud/vendor/gli/lib/support/scaffold.rb +284 -0
- data/lib/bbcloud/vendor/gli/test/config.yaml +9 -0
- data/lib/bbcloud/vendor/gli/test/gli.reek +116 -0
- data/lib/bbcloud/vendor/gli/test/roodi.yaml +9 -0
- data/lib/bbcloud/vendor/gli/test/tc_command.rb +329 -0
- data/lib/bbcloud/vendor/gli/test/tc_flag.rb +67 -0
- data/lib/bbcloud/vendor/gli/test/tc_gli.rb +429 -0
- data/lib/bbcloud/vendor/gli/test/tc_options.rb +31 -0
- data/lib/bbcloud/vendor/gli/test/tc_parsing.rb +279 -0
- data/lib/bbcloud/vendor/gli/test/tc_switch.rb +80 -0
- data/lib/bbcloud/vendor/gli/test/tc_terminal.rb +91 -0
- data/lib/bbcloud/version.rb +1 -1
- data/pkg/bbcloud-0.12.0.gem +0 -0
- data/spec/fixtures/vcr_cassettes/server_list.yml +117 -0
- data/spec/servers_spec.rb +36 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/common_helpers.rb +47 -0
- metadata +129 -135
- data/lib/bbcloud/cli.rb +0 -160
- data/lib/bbcloud/vendor/fog/lib/fog.rb +0 -14
- data/lib/bbcloud/vendor/fog/lib/fog/compute.rb +0 -43
- data/lib/bbcloud/vendor/fog/lib/fog/compute/brightbox.rb +0 -162
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/account.rb +0 -51
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ip.rb +0 -47
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/cloud_ips.rb +0 -34
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavor.rb +0 -33
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/flavors.rb +0 -28
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/image.rb +0 -56
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/images.rb +0 -28
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancer.rb +0 -50
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/load_balancers.rb +0 -28
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/server.rb +0 -108
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/servers.rb +0 -29
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/user.rb +0 -39
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/users.rb +0 -29
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zone.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/models/brightbox/zones.rb +0 -29
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/activate_console_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/add_nodes_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_api_client.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_cloud_ip.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_image.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_load_balancer.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/create_server.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_api_client.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_image.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/destroy_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_account.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_api_client.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_image.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_interface.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_server_type.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_user.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/get_zone.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_api_clients.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_cloud_ips.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_images.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_load_balancers.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_server_types.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_servers.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_users.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/list_zones.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/map_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/remove_nodes_load_balancer.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/reset_ftp_password_account.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/resize_server.rb +0 -19
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/shutdown_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/snapshot_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/start_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/stop_server.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/unmap_cloud_ip.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_account.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_api_client.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_image.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_load_balancer.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_server.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/compute/requests/brightbox/update_user.rb +0 -21
- data/lib/bbcloud/vendor/fog/lib/fog/core.rb +0 -32
- data/lib/bbcloud/vendor/fog/lib/fog/core/attributes.rb +0 -178
- data/lib/bbcloud/vendor/fog/lib/fog/core/collection.rb +0 -127
- data/lib/bbcloud/vendor/fog/lib/fog/core/connection.rb +0 -35
- data/lib/bbcloud/vendor/fog/lib/fog/core/credentials.rb +0 -92
- data/lib/bbcloud/vendor/fog/lib/fog/core/deprecation.rb +0 -23
- data/lib/bbcloud/vendor/fog/lib/fog/core/errors.rb +0 -20
- data/lib/bbcloud/vendor/fog/lib/fog/core/hmac.rb +0 -48
- data/lib/bbcloud/vendor/fog/lib/fog/core/mock.rb +0 -68
- data/lib/bbcloud/vendor/fog/lib/fog/core/model.rb +0 -57
- data/lib/bbcloud/vendor/fog/lib/fog/core/parser.rb +0 -99
- data/lib/bbcloud/vendor/fog/lib/fog/core/provider.rb +0 -18
- data/lib/bbcloud/vendor/fog/lib/fog/core/scp.rb +0 -67
- data/lib/bbcloud/vendor/fog/lib/fog/core/service.rb +0 -175
- data/lib/bbcloud/vendor/fog/lib/fog/core/ssh.rb +0 -120
- data/lib/bbcloud/vendor/fog/lib/fog/core/time.rb +0 -27
- data/lib/bbcloud/vendor/fog/lib/fog/core/wait_for.rb +0 -17
- data/lib/bbcloud/vendor/fog/lib/fog/providers.rb +0 -9
- data/lib/bbcloud/vendor/fog/lib/fog/providers/brightbox.rb +0 -9
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
UncommunicativeParameterName:
|
|
3
|
+
accept: []
|
|
4
|
+
|
|
5
|
+
exclude: []
|
|
6
|
+
|
|
7
|
+
enabled: false
|
|
8
|
+
reject:
|
|
9
|
+
- !ruby/regexp /^.$/
|
|
10
|
+
- !ruby/regexp /[0-9]$/
|
|
11
|
+
- !ruby/regexp /[A-Z]/
|
|
12
|
+
LargeClass:
|
|
13
|
+
max_methods: 25
|
|
14
|
+
exclude: []
|
|
15
|
+
|
|
16
|
+
enabled: true
|
|
17
|
+
max_instance_variables: 10
|
|
18
|
+
UncommunicativeMethodName:
|
|
19
|
+
accept: []
|
|
20
|
+
|
|
21
|
+
exclude: []
|
|
22
|
+
|
|
23
|
+
enabled: true
|
|
24
|
+
reject:
|
|
25
|
+
- !ruby/regexp /^[a-z]$/
|
|
26
|
+
- !ruby/regexp /[0-9]$/
|
|
27
|
+
- !ruby/regexp /[A-Z]/
|
|
28
|
+
LongParameterList:
|
|
29
|
+
max_params: 5
|
|
30
|
+
exclude: []
|
|
31
|
+
|
|
32
|
+
enabled: true
|
|
33
|
+
overrides:
|
|
34
|
+
initialize:
|
|
35
|
+
max_params: 6
|
|
36
|
+
FeatureEnvy:
|
|
37
|
+
exclude: &id001 []
|
|
38
|
+
|
|
39
|
+
enabled: false
|
|
40
|
+
ClassVariable:
|
|
41
|
+
exclude: *id001
|
|
42
|
+
enabled: false
|
|
43
|
+
BooleanParameter:
|
|
44
|
+
exclude: ['initialize']
|
|
45
|
+
enabled: true
|
|
46
|
+
IrresponsibleModule:
|
|
47
|
+
exclude: *id001
|
|
48
|
+
enabled: true
|
|
49
|
+
UncommunicativeModuleName:
|
|
50
|
+
accept:
|
|
51
|
+
- Inline::C
|
|
52
|
+
exclude: []
|
|
53
|
+
|
|
54
|
+
enabled: true
|
|
55
|
+
reject:
|
|
56
|
+
- !ruby/regexp /^.$/
|
|
57
|
+
- !ruby/regexp /[0-9]$/
|
|
58
|
+
NestedIterators:
|
|
59
|
+
ignore_iterators: []
|
|
60
|
+
|
|
61
|
+
exclude: []
|
|
62
|
+
|
|
63
|
+
enabled: true
|
|
64
|
+
max_allowed_nesting: 1
|
|
65
|
+
LongMethod:
|
|
66
|
+
max_statements: 10
|
|
67
|
+
exclude:
|
|
68
|
+
- initialize
|
|
69
|
+
- parse_options
|
|
70
|
+
- run
|
|
71
|
+
enabled: true
|
|
72
|
+
Duplication:
|
|
73
|
+
allow_calls: []
|
|
74
|
+
|
|
75
|
+
exclude: ['run']
|
|
76
|
+
|
|
77
|
+
enabled: true
|
|
78
|
+
max_calls: 3
|
|
79
|
+
UtilityFunction:
|
|
80
|
+
max_helper_calls: 1
|
|
81
|
+
exclude: [ 'find_non_flag_index', 'override_default', 'proceed?', 'command_exists?' ]
|
|
82
|
+
|
|
83
|
+
enabled: true
|
|
84
|
+
Attribute:
|
|
85
|
+
exclude: []
|
|
86
|
+
|
|
87
|
+
enabled: false
|
|
88
|
+
UncommunicativeVariableName:
|
|
89
|
+
accept: []
|
|
90
|
+
|
|
91
|
+
exclude: []
|
|
92
|
+
|
|
93
|
+
enabled: true
|
|
94
|
+
reject:
|
|
95
|
+
- !ruby/regexp /^.$/
|
|
96
|
+
- !ruby/regexp /[0-9]$/
|
|
97
|
+
- !ruby/regexp /[A-Z]/
|
|
98
|
+
SimulatedPolymorphism:
|
|
99
|
+
exclude: []
|
|
100
|
+
|
|
101
|
+
enabled: true
|
|
102
|
+
max_ifs: 2
|
|
103
|
+
DataClump:
|
|
104
|
+
exclude: []
|
|
105
|
+
|
|
106
|
+
enabled: false
|
|
107
|
+
max_copies: 2
|
|
108
|
+
min_clump_size: 2
|
|
109
|
+
ControlCouple:
|
|
110
|
+
exclude: ['parse_options_helper', 'program_desc', 'program_name']
|
|
111
|
+
enabled: true
|
|
112
|
+
LongYieldList:
|
|
113
|
+
max_params: 3
|
|
114
|
+
exclude: []
|
|
115
|
+
|
|
116
|
+
enabled: true
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Not the most strict checks, but they pass for now
|
|
2
|
+
AssignmentInConditionalCheck: { }
|
|
3
|
+
ClassLineCountCheck: { line_count: 300 }
|
|
4
|
+
ClassNameCheck: { pattern: !ruby/regexp /^[A-Z][a-zA-Z0-9]*$/ }
|
|
5
|
+
CyclomaticComplexityBlockCheck: { complexity: 5 }
|
|
6
|
+
EmptyRescueBodyCheck: { }
|
|
7
|
+
ForLoopCheck: { }
|
|
8
|
+
MethodNameCheck: { pattern: !ruby/regexp /^[_a-z<>=\[\]|+-\/\*`]+[_a-z0-9_<>=~@\[\]]*[=!\?]?$/ }
|
|
9
|
+
ModuleNameCheck: { pattern: !ruby/regexp /^[A-Z][a-zA-Z0-9]*$/ }
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
require 'gli.rb'
|
|
2
|
+
require 'test/unit'
|
|
3
|
+
require 'tempfile'
|
|
4
|
+
|
|
5
|
+
include GLI
|
|
6
|
+
class TC_testCommand < Test::Unit::TestCase
|
|
7
|
+
|
|
8
|
+
class FakeStdOut
|
|
9
|
+
attr_reader :strings
|
|
10
|
+
def puts(string=nil)
|
|
11
|
+
@strings ||= []
|
|
12
|
+
@strings << string unless string.nil?
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Returns true if the regexp matches anything in the output
|
|
16
|
+
def contained?(regexp)
|
|
17
|
+
strings.find{ |x| x =~ regexp }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def to_s
|
|
21
|
+
@strings.join("\n")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def setup
|
|
26
|
+
GLI.reset
|
|
27
|
+
GLI.program_desc 'A super awesome program'
|
|
28
|
+
GLI.desc 'Some Global Option'
|
|
29
|
+
GLI.switch :g
|
|
30
|
+
GLI.switch :blah
|
|
31
|
+
GLI.long_desc 'This is a very long description for a flag'
|
|
32
|
+
GLI.flag [:y,:yes]
|
|
33
|
+
@pre_called = false
|
|
34
|
+
@post_called = false
|
|
35
|
+
@error_called = false
|
|
36
|
+
GLI.pre { |g,c,o,a| @pre_called = true }
|
|
37
|
+
GLI.post { |g,c,o,a| @post_called = true }
|
|
38
|
+
GLI.on_error { |g,c,o,a| @error_called = true }
|
|
39
|
+
@glob = nil
|
|
40
|
+
@verbose = nil
|
|
41
|
+
@glob_verbose = nil
|
|
42
|
+
@configure = nil
|
|
43
|
+
@args = nil
|
|
44
|
+
GLI.desc 'Some Basic Command that potentially has a really really really really really really really long description and stuff, but you know, who cares?'
|
|
45
|
+
GLI.long_desc 'This is the long description: "Some Basic Command that potentially has a really really really really really really really long description and stuff, but you know, who cares?"'
|
|
46
|
+
GLI.arg_name 'first_file second_file'
|
|
47
|
+
GLI.command [:basic,:bs] do |c|
|
|
48
|
+
c.desc 'be verbose'
|
|
49
|
+
c.switch :v
|
|
50
|
+
c.desc 'configure something or other, in some way that requires a lot of verbose text and whatnot'
|
|
51
|
+
c.default_value 'crud'
|
|
52
|
+
c.flag [:c,:configure]
|
|
53
|
+
c.action do |global_options,options,arguments|
|
|
54
|
+
@glob = global_options[:g] ? 'true' : 'false'
|
|
55
|
+
@verbose = options[:v] ? 'true' : 'false'
|
|
56
|
+
@glob_verbose = global_options[:v] ? 'true' : 'false'
|
|
57
|
+
@configure = options[:c]
|
|
58
|
+
@args = arguments
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
@fake_stdout = FakeStdOut.new
|
|
62
|
+
@fake_stderr = FakeStdOut.new
|
|
63
|
+
DefaultHelpCommand.output_device=@fake_stdout
|
|
64
|
+
DefaultHelpCommand.skips_pre=true
|
|
65
|
+
DefaultHelpCommand.skips_post=true
|
|
66
|
+
GLI.error_device=@fake_stderr
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def tear_down
|
|
70
|
+
FileUtils.rm_f "cruddo.rdoc"
|
|
71
|
+
DefaultHelpCommand.output_device=$stdout
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_names
|
|
75
|
+
command = Command.new([:ls,:list,:'list-them-all'],"List")
|
|
76
|
+
assert_equal "ls, list-them-all, list",command.names
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_command_sort
|
|
80
|
+
commands = [Command.new(:foo,"foo")]
|
|
81
|
+
commands << Command.new(:bar,"bar")
|
|
82
|
+
commands << Command.new(:zazz,"zazz")
|
|
83
|
+
commands << Command.new(:zaz,"zaz")
|
|
84
|
+
|
|
85
|
+
sorted = commands.sort
|
|
86
|
+
assert_equal :bar,sorted[0].name
|
|
87
|
+
assert_equal :foo,sorted[1].name
|
|
88
|
+
assert_equal :zaz,sorted[2].name
|
|
89
|
+
assert_equal :zazz,sorted[3].name
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_basic_command
|
|
93
|
+
args_args = [%w(-g basic -v -c foo bar baz quux), %w(-g basic -v --configure=foo bar baz quux)]
|
|
94
|
+
args_args.each do |args|
|
|
95
|
+
GLI.run(args)
|
|
96
|
+
assert_equal('true',@glob)
|
|
97
|
+
assert_equal('true',@verbose)
|
|
98
|
+
assert_equal('false',@glob_verbose)
|
|
99
|
+
assert_equal('foo',@configure)
|
|
100
|
+
assert_equal(%w(bar baz quux),@args)
|
|
101
|
+
assert(@pre_called,"Pre block should have been called")
|
|
102
|
+
assert(@post_called,"Post block should have been called")
|
|
103
|
+
assert(!@error_called,"Error block should not have been called")
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def test_command_skips_pre
|
|
108
|
+
GLI.skips_pre
|
|
109
|
+
GLI.skips_post
|
|
110
|
+
|
|
111
|
+
skips_pre_called = false
|
|
112
|
+
runs_pre_called = false
|
|
113
|
+
|
|
114
|
+
GLI.command [:skipspre] do |c|
|
|
115
|
+
c.action do |g,o,a|
|
|
116
|
+
skips_pre_called = true
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
# Making sure skips_pre doesn't leak to other commands
|
|
121
|
+
GLI.command [:runspre] do |c|
|
|
122
|
+
c.action do |g,o,a|
|
|
123
|
+
runs_pre_called = true
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
GLI.run(['skipspre'])
|
|
128
|
+
|
|
129
|
+
assert(skips_pre_called,"'skipspre' should have been called")
|
|
130
|
+
assert(!@pre_called,"Pre block should not have been called")
|
|
131
|
+
assert(!@post_called,"Post block should not have been called")
|
|
132
|
+
assert(!@error_called,"Error block should not have been called")
|
|
133
|
+
|
|
134
|
+
GLI.run(['runspre'])
|
|
135
|
+
|
|
136
|
+
assert(runs_pre_called,"'runspre' should have been called")
|
|
137
|
+
assert(@pre_called,"Pre block should not have been called")
|
|
138
|
+
assert(@post_called,"Post block SHOULD have been called")
|
|
139
|
+
assert(!@error_called,"Error block should not have been called")
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def test_command_no_globals
|
|
143
|
+
args = %w(basic -c foo bar baz quux)
|
|
144
|
+
GLI.run(args)
|
|
145
|
+
assert_equal('foo',@configure)
|
|
146
|
+
assert_equal(%w(bar baz quux),@args)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def test_defaults_get_set
|
|
150
|
+
args = %w(basic bar baz quux)
|
|
151
|
+
GLI.run(args)
|
|
152
|
+
assert_equal('false',@glob)
|
|
153
|
+
assert_equal('false',@verbose)
|
|
154
|
+
assert_equal('crud',@configure)
|
|
155
|
+
assert_equal(%w(bar baz quux),@args)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def test_no_arguments
|
|
159
|
+
args = %w(basic -v)
|
|
160
|
+
GLI.run(args)
|
|
161
|
+
assert_equal('true',@verbose)
|
|
162
|
+
assert_equal('crud',@configure)
|
|
163
|
+
assert_equal([],@args)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def test_unknown_command
|
|
167
|
+
args = %w(blah)
|
|
168
|
+
GLI.run(args)
|
|
169
|
+
assert(!@post_called)
|
|
170
|
+
assert(@error_called)
|
|
171
|
+
assert_contained(@fake_stderr,/ help/)
|
|
172
|
+
assert_contained(@fake_stderr,/list of commands/)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def test_unknown_global_option
|
|
176
|
+
args = %w(--quux basic)
|
|
177
|
+
GLI.run(args)
|
|
178
|
+
assert(!@post_called)
|
|
179
|
+
assert(@error_called)
|
|
180
|
+
assert_contained(@fake_stderr,/ help/)
|
|
181
|
+
assert_contained(@fake_stderr,/list of global options/)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def test_unknown_argument
|
|
185
|
+
args = %w(basic --quux)
|
|
186
|
+
GLI.run(args)
|
|
187
|
+
assert(!@post_called)
|
|
188
|
+
assert(@error_called)
|
|
189
|
+
assert_contained(@fake_stderr,/ help basic/)
|
|
190
|
+
assert_contained(@fake_stderr,/list of command options/)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def test_help
|
|
194
|
+
args = %w(help)
|
|
195
|
+
GLI.run(args)
|
|
196
|
+
['\[global options\]','\[command options\]','Global Options:','A super awesome program'].each do |opt|
|
|
197
|
+
assert_contained(@fake_stdout,/#{opt}/)
|
|
198
|
+
end
|
|
199
|
+
assert(!@pre_called,"Expected pre block NOT to have been called")
|
|
200
|
+
assert(!@post_called,"Expected post block NOT to have been called")
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def test_help_with_config_file_shows_config_value
|
|
204
|
+
config_file = Tempfile.new('gli_config')
|
|
205
|
+
config = {
|
|
206
|
+
:blah => true,
|
|
207
|
+
:y => "foo",
|
|
208
|
+
}
|
|
209
|
+
File.open(config_file.path,'w') { |file| YAML.dump(config,file) }
|
|
210
|
+
GLI.config_file(config_file.path)
|
|
211
|
+
GLI.run(%w(help))
|
|
212
|
+
assert_contained(@fake_stdout,/\(default: foo\)/)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def test_help_with_pre_called
|
|
216
|
+
args = %w(help)
|
|
217
|
+
GLI::DefaultHelpCommand.skips_pre=false
|
|
218
|
+
GLI::DefaultHelpCommand.skips_post=false
|
|
219
|
+
GLI.run(args)
|
|
220
|
+
assert(@pre_called,"Expected pre block to have been called")
|
|
221
|
+
assert(@post_called,"Expected pre block to have been called")
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def test_help_no_global_options
|
|
225
|
+
GLI.reset
|
|
226
|
+
GLI.desc 'Basic Command'
|
|
227
|
+
GLI.command [:basic,:bs] do |c|
|
|
228
|
+
c.action do |global_options,options,arguments|
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
@fake_stdout = FakeStdOut.new
|
|
232
|
+
DefaultHelpCommand.output_device=@fake_stdout
|
|
233
|
+
|
|
234
|
+
GLI.run(%w(help))
|
|
235
|
+
assert_not_contained(@fake_stdout,/\[global options\]/)
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def test_help_one_command
|
|
239
|
+
args = %w(help basic)
|
|
240
|
+
GLI.run(args)
|
|
241
|
+
['Command Options:','\[command options\]'].each do |opt|
|
|
242
|
+
assert_contained(@fake_stdout,/#{opt}/)
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def test_version
|
|
247
|
+
GLI.command :foo, :bar do |c|; end
|
|
248
|
+
GLI.command :ls, :list do |c|; end
|
|
249
|
+
GLI.version '1.3.4'
|
|
250
|
+
args = %w(help)
|
|
251
|
+
GLI.run(args)
|
|
252
|
+
assert_not_nil @fake_stdout.strings.find{ |x| x =~ /^Version: 1.3.4/ }
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def test_version_not_specified
|
|
256
|
+
GLI.command :foo, :bar do |c|; end
|
|
257
|
+
GLI.command :ls, :list do |c|; end
|
|
258
|
+
args = %w(help)
|
|
259
|
+
GLI.run(args)
|
|
260
|
+
assert_nil @fake_stdout.strings.find{ |x| x =~ /^Version: 1.3.4/ }
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def test_help_completion
|
|
264
|
+
GLI.command :foo, :bar do |c|; end
|
|
265
|
+
GLI.command :ls, :list do |c|; end
|
|
266
|
+
args = %w(help -c)
|
|
267
|
+
GLI.run(args)
|
|
268
|
+
assert_equal 7,@fake_stdout.strings.size
|
|
269
|
+
assert_equal ['bar','basic','bs','foo','help','list','ls'],@fake_stdout.strings
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def test_help_completion_partial
|
|
273
|
+
GLI.command :foo, :bar do |c|; end
|
|
274
|
+
GLI.command :ls, :list do |c|; end
|
|
275
|
+
args = %w(help -c b)
|
|
276
|
+
GLI.run(args)
|
|
277
|
+
assert_equal 3,@fake_stdout.strings.size
|
|
278
|
+
assert_equal ['bar','basic','bs'],@fake_stdout.strings
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
def test_rdoc
|
|
282
|
+
GLI.program_name 'cruddo'
|
|
283
|
+
args = %w(rdoc)
|
|
284
|
+
GLI.run(args)
|
|
285
|
+
assert File.exists?("cruddo.rdoc")
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def test_help_no_command
|
|
289
|
+
GLI.program_name 'cruddo'
|
|
290
|
+
args = %w(help foo)
|
|
291
|
+
GLI.run(args)
|
|
292
|
+
assert_equal('cruddo',GLI.program_name)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def test_command_create
|
|
296
|
+
GLI.desc 'single symbol'
|
|
297
|
+
GLI.command :single do |c|; end
|
|
298
|
+
command = GLI.commands[:single]
|
|
299
|
+
assert_equal :single, command.name
|
|
300
|
+
assert_equal nil, command.aliases
|
|
301
|
+
|
|
302
|
+
description = 'implicit array'
|
|
303
|
+
GLI.desc description
|
|
304
|
+
GLI.command :foo, :bar do |c|; end
|
|
305
|
+
command = GLI.commands[:foo]
|
|
306
|
+
assert_equal :foo, command.name
|
|
307
|
+
assert_equal [:bar], command.aliases
|
|
308
|
+
|
|
309
|
+
description = 'explicit array'
|
|
310
|
+
GLI.desc description
|
|
311
|
+
GLI.command [:baz, :blah] do |c|; end
|
|
312
|
+
command = GLI.commands[:baz]
|
|
313
|
+
assert_equal :baz, command.name
|
|
314
|
+
assert_equal [:blah], command.aliases
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
private
|
|
318
|
+
|
|
319
|
+
def assert_contained(output,regexp)
|
|
320
|
+
assert_not_nil output.contained?(regexp),
|
|
321
|
+
"Expected output to contain #{regexp.inspect}, output was:\n#{output}"
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def assert_not_contained(output,regexp)
|
|
325
|
+
assert_nil output.contained?(regexp),
|
|
326
|
+
"Didn't expected output to contain #{regexp.inspect}, output was:\n#{output}"
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
end
|