pagoda 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pagoda (0.0.1)
4
+ pagoda (0.2.0)
5
5
  crack
6
6
  iniparse
7
7
  json_pure
@@ -34,6 +34,10 @@ PLATFORMS
34
34
  ruby
35
35
 
36
36
  DEPENDENCIES
37
+ crack
38
+ iniparse
39
+ json_pure
37
40
  pagoda!
41
+ rest-client
38
42
  rspec
39
43
  webmock
@@ -1,8 +1,11 @@
1
1
  require 'pagoda/helpers'
2
2
  require 'pagoda/tunnel_proxy'
3
3
  require 'pagoda/commands/base'
4
-
5
- Dir["#{File.dirname(__FILE__)}/commands/*.rb"].each { |c| require c }
4
+ require 'pagoda/commands/auth'
5
+ require 'pagoda/commands/app'
6
+ require 'pagoda/commands/db'
7
+ require 'pagoda/commands/help'
8
+ require 'pagoda/commands/tunnel'
6
9
 
7
10
  module Pagoda
8
11
  module Command
@@ -193,7 +193,7 @@ module Pagoda::Command
193
193
  display
194
194
  else
195
195
  client.deploy(app, branch, commit)
196
- display "+> deploying to match current branch and commit...", false
196
+ display "+> deploying current branch and commit...", false
197
197
  loop_transaction
198
198
  display "+> deployed"
199
199
  display
@@ -146,7 +146,7 @@ module Pagoda
146
146
  def extract_git_clone_url(soft=false)
147
147
  begin
148
148
  url = IniParse.parse( File.read("#{locate_app_root}/.git/config") )['remote "origin"']["url"]
149
- raise unless url.match(/^git@github.com:.+\.git$/)
149
+ raise unless url.match(/^((git@github.com:)|(.*:)|((http|https):\/\/.*github.com\/)|(git:\/\/github.com\/))(.*)\/(.*).git$/i)
150
150
  url
151
151
  rescue Exception => e
152
152
  return false
@@ -19,9 +19,9 @@ module Pagoda
19
19
  def display(msg="", newline=true, level=1)
20
20
  indent = build_indent(level)
21
21
  if newline
22
- puts("#{indent}#{msg}")
22
+ puts("#{indent}#{msg}".green)
23
23
  else
24
- print("#{indent}#{msg}")
24
+ print("#{indent}#{msg}".green)
25
25
  STDOUT.flush
26
26
  end
27
27
  end
@@ -59,7 +59,7 @@ module Pagoda
59
59
  gets.strip
60
60
  end
61
61
 
62
- def confirm(message="Are you sure you wish to continue? (y/n)?", level=1)
62
+ def confirm(message="Are you sure you wish to continue? (y/n)?".blue, level=1)
63
63
  return true if args.include? "-f"
64
64
  case message
65
65
  when Array
@@ -67,14 +67,14 @@ module Pagoda
67
67
  iteration = 0
68
68
  message.each do |m|
69
69
  if iteration == count - 1
70
- display("#{m} ", false, level)
70
+ display("#{m} ".blue, false, level)
71
71
  else
72
- display("#{m} ", true, level)
72
+ display("#{m} ".blue, true, level)
73
73
  end
74
74
  iteration += 1
75
75
  end
76
76
  when String
77
- display("#{message} ", false, level)
77
+ display("#{message} ".blue, false, level)
78
78
  end
79
79
  ask.downcase == 'y'
80
80
  end
@@ -84,12 +84,12 @@ module Pagoda
84
84
  STDERR.puts
85
85
  case msg
86
86
  when Array
87
- STDERR.puts("#{indent}** Error:")
87
+ STDERR.puts("#{indent}** Error:".red)
88
88
  msg.each do |m|
89
- STDERR.puts("#{indent}** #{m}")
89
+ STDERR.puts("#{indent}** #{m}".red)
90
90
  end
91
91
  when String
92
- STDERR.puts("#{indent}** Error: #{msg}")
92
+ STDERR.puts("#{indent}** Error: #{msg}".red)
93
93
  end
94
94
  STDERR.puts
95
95
  exit 1 if exit
@@ -124,4 +124,194 @@ unless String.method_defined?(:shellescape)
124
124
  empty? ? "''" : gsub(/([^A-Za-z0-9_\-.,:\/@\n])/n, '\\\\\\1').gsub(/\n/, "'\n'")
125
125
  end
126
126
  end
127
+ end
128
+
129
+
130
+ class String
131
+
132
+ #
133
+ # Colors Hash
134
+ #
135
+ COLORS = {
136
+ :black => 0,
137
+ :red => 1,
138
+ :green => 2,
139
+ :yellow => 3,
140
+ :blue => 4,
141
+ :magenta => 5,
142
+ :cyan => 6,
143
+ :white => 7,
144
+ :default => 9,
145
+
146
+ :light_black => 10,
147
+ :light_red => 11,
148
+ :light_green => 12,
149
+ :light_yellow => 13,
150
+ :light_blue => 14,
151
+ :light_magenta => 15,
152
+ :light_cyan => 16,
153
+ :light_white => 17
154
+ }
155
+
156
+ #
157
+ # Modes Hash
158
+ #
159
+ MODES = {
160
+ :default => 0, # Turn off all attributes
161
+ #:bright => 1, # Set bright mode
162
+ :underline => 4, # Set underline mode
163
+ :blink => 5, # Set blink mode
164
+ :swap => 7, # Exchange foreground and background colors
165
+ :hide => 8 # Hide text (foreground color would be the same as background)
166
+ }
167
+
168
+ protected
169
+
170
+ #
171
+ # Set color values in new string intance
172
+ #
173
+ def set_color_parameters( params )
174
+ if (params.instance_of?(Hash))
175
+ @color = params[:color]
176
+ @background = params[:background]
177
+ @mode = params[:mode]
178
+ @uncolorized = params[:uncolorized]
179
+ self
180
+ else
181
+ nil
182
+ end
183
+ end
184
+
185
+ public
186
+
187
+ #
188
+ # Change color of string
189
+ #
190
+ # Examples:
191
+ #
192
+ # puts "This is blue".colorize( :blue )
193
+ # puts "This is light blue".colorize( :light_blue )
194
+ # puts "This is also blue".colorize( :color => :blue )
195
+ # puts "This is light blue with red background".colorize( :color => :light_blue, :background => :red )
196
+ # puts "This is light blue with red background".colorize( :light_blue ).colorize( :background => :red )
197
+ # puts "This is blue text on red".blue.on_red
198
+ # puts "This is red on blue".colorize( :red ).on_blue
199
+ # puts "This is red on blue and underline".colorize( :red ).on_blue.underline
200
+ # puts "This is blue text on red".blue.on_red.blink
201
+ # puts "This is uncolorized".blue.on_red.uncolorize
202
+ #
203
+ def colorize( params )
204
+ return self unless STDOUT.isatty
205
+
206
+ begin
207
+ require 'Win32/Console/ANSI' if RUBY_PLATFORM =~ /win32/
208
+ rescue LoadError
209
+ raise 'You must gem install win32console to use colorize on Windows'
210
+ end
211
+
212
+ color_parameters = {}
213
+
214
+ if (params.instance_of?(Hash))
215
+ color_parameters[:color] = COLORS[params[:color]]
216
+ color_parameters[:background] = COLORS[params[:background]]
217
+ color_parameters[:mode] = MODES[params[:mode]]
218
+ elsif (params.instance_of?(Symbol))
219
+ color_parameters[:color] = COLORS[params]
220
+ end
221
+
222
+ color_parameters[:color] ||= @color ||= COLORS[:default]
223
+ color_parameters[:background] ||= @background ||= COLORS[:default]
224
+ color_parameters[:mode] ||= @mode ||= MODES[:default]
225
+
226
+ color_parameters[:uncolorized] ||= @uncolorized ||= self.dup
227
+
228
+ # calculate bright mode
229
+ color_parameters[:color] += 50 if color_parameters[:color] > 10
230
+
231
+ color_parameters[:background] += 50 if color_parameters[:background] > 10
232
+
233
+ "\033[#{color_parameters[:mode]};#{color_parameters[:color]+30};#{color_parameters[:background]+40}m#{color_parameters[:uncolorized]}\033[0m".set_color_parameters( color_parameters )
234
+ end
235
+
236
+ #
237
+ # Return uncolorized string
238
+ #
239
+ def uncolorize
240
+ @uncolorized || self
241
+ end
242
+
243
+ #
244
+ # Return true if sting is colorized
245
+ #
246
+ def colorized?
247
+ !defined?(@uncolorized).nil?
248
+ end
249
+
250
+ #
251
+ # Make some color and on_color methods
252
+ #
253
+ COLORS.each_key do | key |
254
+ next if key == :default
255
+
256
+ define_method key do
257
+ self.colorize( :color => key )
258
+ end
259
+
260
+ define_method "on_#{key}" do
261
+ self.colorize( :background => key )
262
+ end
263
+ end
264
+
265
+ #
266
+ # Methods for modes
267
+ #
268
+ MODES.each_key do | key |
269
+ next if key == :default
270
+
271
+ define_method key do
272
+ self.colorize( :mode => key )
273
+ end
274
+ end
275
+
276
+ class << self
277
+
278
+ #
279
+ # Return array of available modes used by colorize method
280
+ #
281
+ def modes
282
+ keys = []
283
+ MODES.each_key do | key |
284
+ keys << key
285
+ end
286
+ keys
287
+ end
288
+
289
+ #
290
+ # Return array of available colors used by colorize method
291
+ #
292
+ def colors
293
+ keys = []
294
+ COLORS.each_key do | key |
295
+ keys << key
296
+ end
297
+ keys
298
+ end
299
+
300
+ #
301
+ # Display color matrix with color names.
302
+ #
303
+ def color_matrix( txt = "[X]" )
304
+ size = String.colors.length
305
+ String.colors.each do | color |
306
+ String.colors.each do | back |
307
+ print txt.colorize( :color => color, :background => back )
308
+ end
309
+ puts " < #{color}"
310
+ end
311
+ String.colors.reverse.each_with_index do | back, index |
312
+ puts "#{"|".rjust(txt.length)*(size-index)} < #{back}"
313
+ end
314
+ ""
315
+ end
316
+ end
127
317
  end
@@ -1,3 +1,3 @@
1
1
  module Pagoda
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 2
7
+ - 3
8
8
  - 0
9
- version: 0.2.0
9
+ version: 0.3.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - lyon hill
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-05-10 00:00:00 -06:00
17
+ date: 2011-06-22 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency