cft_smartcloud 0.2.2 → 0.3.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 +1 -0
- data/CHANGELOG +11 -0
- data/README.md +106 -0
- data/VERSION +1 -1
- data/bin/cft_smartcloud +33 -7
- data/bin/smartcloud +33 -7
- data/cft_smartcloud.gemspec +84 -20
- data/lib/config/config.yml +2 -0
- data/lib/curl_client.rb +42 -0
- data/lib/rest-client-1.6.6-master/.gitignore +6 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/README.rdoc +10 -1
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/Rakefile +0 -0
- data/lib/rest-client-1.6.6-master/VERSION +1 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/bin/restclient +5 -4
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/history.md +22 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/rest-client.rb +0 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/rest_client.rb +0 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/abstract_response.rb +0 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/exceptions.rb +0 -0
- data/lib/rest-client-1.6.6-master/lib/restclient/net_http_ext.rb +55 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/payload.rb +17 -2
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/raw_response.rb +0 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/request.rb +21 -19
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/resource.rb +0 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient/response.rb +0 -0
- data/lib/{rest-client-1.6.3 → rest-client-1.6.6-master}/lib/restclient.rb +0 -0
- data/lib/rest-client-1.6.6-master/rest-client.gemspec +76 -0
- data/lib/rest-client-1.6.6-master/spec/abstract_response_spec.rb +85 -0
- data/lib/rest-client-1.6.6-master/spec/base.rb +16 -0
- data/lib/rest-client-1.6.6-master/spec/exceptions_spec.rb +98 -0
- data/lib/rest-client-1.6.6-master/spec/integration/certs/equifax.crt +19 -0
- data/lib/rest-client-1.6.6-master/spec/integration/certs/verisign.crt +14 -0
- data/lib/rest-client-1.6.6-master/spec/integration/request_spec.rb +25 -0
- data/lib/rest-client-1.6.6-master/spec/integration_spec.rb +38 -0
- data/lib/rest-client-1.6.6-master/spec/master_shake.jpg +0 -0
- data/lib/rest-client-1.6.6-master/spec/payload_spec.rb +234 -0
- data/lib/rest-client-1.6.6-master/spec/raw_response_spec.rb +17 -0
- data/lib/rest-client-1.6.6-master/spec/request2_spec.rb +40 -0
- data/lib/rest-client-1.6.6-master/spec/request_spec.rb +536 -0
- data/lib/rest-client-1.6.6-master/spec/resource_spec.rb +134 -0
- data/lib/rest-client-1.6.6-master/spec/response_spec.rb +169 -0
- data/lib/rest-client-1.6.6-master/spec/restclient_spec.rb +73 -0
- data/lib/slop-2.3.1/.gemtest +0 -0
- data/lib/slop-2.3.1/.gitignore +6 -0
- data/lib/slop-2.3.1/.yardopts +6 -0
- data/lib/slop-2.3.1/CHANGES.md +137 -0
- data/lib/slop-2.3.1/LICENSE +20 -0
- data/lib/slop-2.3.1/README.md +293 -0
- data/lib/slop-2.3.1/Rakefile +6 -0
- data/lib/slop-2.3.1/lib/slop.rb +1022 -0
- data/lib/slop-2.3.1/slop.gemspec +11 -0
- data/lib/slop-2.3.1/test/commands_test.rb +151 -0
- data/lib/slop-2.3.1/test/helper.rb +13 -0
- data/lib/slop-2.3.1/test/option_test.rb +198 -0
- data/lib/slop-2.3.1/test/slop_test.rb +574 -0
- data/lib/smartcloud.rb +186 -116
- data/lib/terminal-table-1.4.4/History.rdoc +53 -0
- data/lib/terminal-table-1.4.4/Manifest +24 -0
- data/lib/terminal-table-1.4.4/README.rdoc +240 -0
- data/lib/terminal-table-1.4.4/Rakefile +15 -0
- data/lib/terminal-table-1.4.4/Todo.rdoc +14 -0
- data/lib/terminal-table-1.4.4/examples/examples.rb +80 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/cell.rb +88 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/core_ext.rb +8 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/import.rb +4 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/row.rb +48 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/separator.rb +14 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/style.rb +61 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/table.rb +217 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/table_helper.rb +9 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table/version.rb +6 -0
- data/lib/terminal-table-1.4.4/lib/terminal-table.rb +27 -0
- data/lib/terminal-table-1.4.4/spec/cell_spec.rb +54 -0
- data/lib/terminal-table-1.4.4/spec/core_ext_spec.rb +18 -0
- data/lib/terminal-table-1.4.4/spec/import_spec.rb +11 -0
- data/lib/terminal-table-1.4.4/spec/spec.opts +1 -0
- data/lib/terminal-table-1.4.4/spec/spec_helper.rb +8 -0
- data/lib/terminal-table-1.4.4/spec/table_spec.rb +525 -0
- data/lib/terminal-table-1.4.4/tasks/docs.rake +13 -0
- data/lib/terminal-table-1.4.4/tasks/gemspec.rake +3 -0
- data/lib/terminal-table-1.4.4/tasks/spec.rake +25 -0
- data/lib/terminal-table-1.4.4/terminal-table.gemspec +30 -0
- data/responses/addresses +26 -0
- data/responses/addresses.blank +2 -0
- data/responses/instances +74 -0
- data/responses/keys +33 -0
- data/responses/locations +142 -0
- data/responses/offerings_image +3780 -0
- data/responses/storage +379 -0
- metadata +86 -22
- data/README.rdoc +0 -75
- data/lib/rest-client-1.6.3/VERSION +0 -1
- data/lib/rest-client-1.6.3/lib/restclient/net_http_ext.rb +0 -21
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
|
|
2
|
+
module Terminal
|
|
3
|
+
class Table
|
|
4
|
+
|
|
5
|
+
attr_reader :title
|
|
6
|
+
attr_reader :headings
|
|
7
|
+
|
|
8
|
+
##
|
|
9
|
+
# Generates a ASCII table with the given _options_.
|
|
10
|
+
|
|
11
|
+
def initialize options = {}, &block
|
|
12
|
+
@column_widths = []
|
|
13
|
+
self.style = options.fetch :style, {}
|
|
14
|
+
self.title = options.fetch :title, nil
|
|
15
|
+
self.headings = options.fetch :headings, []
|
|
16
|
+
self.rows = options.fetch :rows, []
|
|
17
|
+
yield_or_eval(&block) if block
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Align column _n_ to the given _alignment_ of :center, :left, or :right.
|
|
22
|
+
|
|
23
|
+
def align_column n, alignment
|
|
24
|
+
r = rows
|
|
25
|
+
column(n).each_with_index do |col, i|
|
|
26
|
+
cell = r[i][n]
|
|
27
|
+
cell.alignment = alignment unless cell.alignment?
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
##
|
|
32
|
+
# Add a row.
|
|
33
|
+
|
|
34
|
+
def add_row array
|
|
35
|
+
row = array == :separator ? Separator.new(self) : Row.new(self, array)
|
|
36
|
+
@rows << row
|
|
37
|
+
recalc_column_widths row
|
|
38
|
+
end
|
|
39
|
+
alias :<< :add_row
|
|
40
|
+
|
|
41
|
+
##
|
|
42
|
+
# Add a separator.
|
|
43
|
+
|
|
44
|
+
def add_separator
|
|
45
|
+
self << :separator
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def cell_spacing
|
|
49
|
+
cell_padding + style.border_y.length
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def cell_padding
|
|
53
|
+
style.padding_left + style.padding_right
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
##
|
|
57
|
+
# Return column _n_.
|
|
58
|
+
|
|
59
|
+
def column n, method = :value, array = rows
|
|
60
|
+
array.map { |row|
|
|
61
|
+
cell = row[n]
|
|
62
|
+
cell && method ? cell.__send__(method) : cell
|
|
63
|
+
}.compact
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
##
|
|
67
|
+
# Return _n_ column including headings.
|
|
68
|
+
|
|
69
|
+
def column_with_headings n, method = :value
|
|
70
|
+
column n, method, headings_with_rows
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
##
|
|
74
|
+
# Return columns.
|
|
75
|
+
|
|
76
|
+
def columns
|
|
77
|
+
(0...number_of_columns).map { |n| column n }
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
##
|
|
81
|
+
# Return length of column _n_.
|
|
82
|
+
|
|
83
|
+
def column_width n
|
|
84
|
+
width = @column_widths[n] || 0
|
|
85
|
+
width + additional_column_widths[n].to_i
|
|
86
|
+
end
|
|
87
|
+
alias length_of_column column_width # for legacy support
|
|
88
|
+
|
|
89
|
+
##
|
|
90
|
+
# Return total number of columns available.
|
|
91
|
+
|
|
92
|
+
def number_of_columns
|
|
93
|
+
headings_with_rows.map { |r| r.cells.size }.max
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
##
|
|
97
|
+
# Set the headings
|
|
98
|
+
|
|
99
|
+
def headings= array
|
|
100
|
+
@headings = Row.new(self, array)
|
|
101
|
+
recalc_column_widths @headings
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
##
|
|
105
|
+
# Render the table.
|
|
106
|
+
|
|
107
|
+
def render
|
|
108
|
+
separator = Separator.new(self)
|
|
109
|
+
buffer = [separator]
|
|
110
|
+
unless @title.nil?
|
|
111
|
+
opts = {:value => @title, :alignment => :center, :colspan => number_of_columns}
|
|
112
|
+
buffer << Row.new(self, [opts])
|
|
113
|
+
buffer << separator
|
|
114
|
+
end
|
|
115
|
+
unless @headings.cells.empty?
|
|
116
|
+
buffer << @headings
|
|
117
|
+
buffer << separator
|
|
118
|
+
end
|
|
119
|
+
buffer += @rows
|
|
120
|
+
buffer << separator
|
|
121
|
+
buffer.map { |r| r.render }.join("\n")
|
|
122
|
+
end
|
|
123
|
+
alias :to_s :render
|
|
124
|
+
|
|
125
|
+
##
|
|
126
|
+
# Return rows without separator rows.
|
|
127
|
+
|
|
128
|
+
def rows
|
|
129
|
+
@rows.reject { |row| row.is_a? Separator }
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def rows= array
|
|
133
|
+
@rows = []
|
|
134
|
+
array.each { |arr| self << arr }
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def style=(options)
|
|
138
|
+
style.apply options
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def style
|
|
142
|
+
@style ||= Style.new
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def title=(title)
|
|
146
|
+
@title = title
|
|
147
|
+
recalc_column_widths Row.new(self, [title])
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
##
|
|
151
|
+
# Check if _other_ is equal to self. _other_ is considered equal
|
|
152
|
+
# if it contains the same headings and rows.
|
|
153
|
+
|
|
154
|
+
def == other
|
|
155
|
+
if other.respond_to? :render and other.respond_to? :rows
|
|
156
|
+
self.headings == other.headings and self.rows == other.rows
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
private
|
|
161
|
+
|
|
162
|
+
def columns_width
|
|
163
|
+
@column_widths.inject(0) { |s, i| s + i + cell_spacing } + style.border_y.length
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def additional_column_widths
|
|
167
|
+
return [] if style.width.nil?
|
|
168
|
+
spacing = style.width - columns_width
|
|
169
|
+
if spacing < 0
|
|
170
|
+
raise "Table width exceeds wanted width of #{wanted} characters."
|
|
171
|
+
else
|
|
172
|
+
per_col = spacing / number_of_columns
|
|
173
|
+
arr = (1...number_of_columns).to_a.map { |i| per_col }
|
|
174
|
+
other_cols = arr.inject(0) { |s, i| s + i }
|
|
175
|
+
arr << spacing - other_cols
|
|
176
|
+
arr
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def recalc_column_widths row
|
|
181
|
+
return if row.is_a? Separator
|
|
182
|
+
i = 0
|
|
183
|
+
row.cells.each do |cell|
|
|
184
|
+
colspan = cell.colspan
|
|
185
|
+
cell_value = cell.value_for_column_width_recalc
|
|
186
|
+
colspan.downto(1) do |j|
|
|
187
|
+
cell_length = cell_value.to_s.length
|
|
188
|
+
if colspan > 1
|
|
189
|
+
spacing_length = cell_spacing * (colspan - 1)
|
|
190
|
+
length_in_columns = (cell_length - spacing_length)
|
|
191
|
+
cell_length = (length_in_columns.to_f / colspan).ceil
|
|
192
|
+
end
|
|
193
|
+
if @column_widths[i].to_i < cell_length
|
|
194
|
+
@column_widths[i] = cell_length
|
|
195
|
+
end
|
|
196
|
+
i = i + 1
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
##
|
|
202
|
+
# Return headings combined with rows.
|
|
203
|
+
|
|
204
|
+
def headings_with_rows
|
|
205
|
+
[@headings] + rows
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def yield_or_eval &block
|
|
209
|
+
return unless block
|
|
210
|
+
if block.arity > 0
|
|
211
|
+
yield self
|
|
212
|
+
else
|
|
213
|
+
self.instance_eval(&block)
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright (c) 2008-2009 TJ Holowaychuk <tj@vision-media.ca>
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
|
5
|
+
# a copy of this software and associated documentation files (the
|
|
6
|
+
# "Software"), to deal in the Software without restriction, including
|
|
7
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
|
8
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
9
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
|
10
|
+
# the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
19
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
21
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
#++
|
|
23
|
+
|
|
24
|
+
$:.unshift File.dirname(__FILE__)
|
|
25
|
+
%w(version core_ext table cell row separator style table_helper).each do |file|
|
|
26
|
+
require "terminal-table/#{file}"
|
|
27
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'term/ansicolor'
|
|
3
|
+
|
|
4
|
+
class String; include Term::ANSIColor; end
|
|
5
|
+
|
|
6
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
7
|
+
|
|
8
|
+
describe Terminal::Table do
|
|
9
|
+
Cell = Terminal::Table::Cell
|
|
10
|
+
|
|
11
|
+
it "should default alignment to the left" do
|
|
12
|
+
cell = Cell.new :value => 'foo', :table => Terminal::Table.new, :index => 0
|
|
13
|
+
cell.value.should == 'foo'
|
|
14
|
+
cell.alignment.should == :left
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should allow overriding of alignment" do
|
|
18
|
+
cell = Cell.new :value => 'foo', :alignment => :center, :table => Terminal::Table.new, :index => 0
|
|
19
|
+
cell.value.should == 'foo'
|
|
20
|
+
cell.alignment.should == :center
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should allow :left, :right and :center for alignment" do
|
|
24
|
+
@cell = Cell.new :value => 'foo', :table => Terminal::Table.new, :index => 0
|
|
25
|
+
@cell.alignment = :left
|
|
26
|
+
@cell.alignment = :right
|
|
27
|
+
@cell.alignment = :center
|
|
28
|
+
lambda { @cell.alignment = "foo" }.should raise_error
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should allow multiline content" do
|
|
32
|
+
cell = Cell.new :value => "foo\nbarrissimo", :table => Terminal::Table.new, :index => 0
|
|
33
|
+
cell.value.should == "foo\nbarrissimo"
|
|
34
|
+
cell.lines.should == ['foo', 'barrissimo']
|
|
35
|
+
cell.value_for_column_width_recalc.should == 'barrissimo'
|
|
36
|
+
cell.render(1).should == " barrissimo "
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "should allow colorized content" do
|
|
40
|
+
cell = Cell.new :value => "foo".red, :table => Terminal::Table.new, :index => 0
|
|
41
|
+
cell.value.should == "\e[31mfoo\e[0m"
|
|
42
|
+
cell.value_for_column_width_recalc.should == 'foo'
|
|
43
|
+
cell.render.should == " \e[31mfoo\e[0m "
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should render padding properly" do
|
|
47
|
+
@table = Terminal::Table.new(:rows => [['foo', '2'], ['3', '4']], :style => {:padding_right => 3})
|
|
48
|
+
cell = @table.rows.first.cells.first
|
|
49
|
+
cell.value.should == 'foo'
|
|
50
|
+
cell.alignment.should == :left
|
|
51
|
+
cell.render.should == " foo "
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
3
|
+
|
|
4
|
+
describe String do
|
|
5
|
+
describe "#align" do
|
|
6
|
+
it "should center" do
|
|
7
|
+
'foo'.align(:center, 10).should == ' foo '
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should align left" do
|
|
11
|
+
'foo'.align(:left, 10).should == 'foo '
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should align right" do
|
|
15
|
+
'foo'.align(:right, 10).should == ' foo'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
|
3
|
+
require "terminal-table/import"
|
|
4
|
+
|
|
5
|
+
describe Object do
|
|
6
|
+
describe "#table" do
|
|
7
|
+
it "should allow creation of a terminal table" do
|
|
8
|
+
table(['foo', 'bar'], ['a', 'b'], [1, 2]).should be_instance_of(Terminal::Table)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|