strobe 0.1.1 → 0.1.2
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/lib/strobe/cli/main.rb +53 -41
- data/lib/strobe/resources/application.rb +9 -3
- metadata +2 -2
data/lib/strobe/cli/main.rb
CHANGED
@@ -1,5 +1,55 @@
|
|
1
1
|
module Strobe
|
2
2
|
class CLI::Main < CLI
|
3
|
+
class DeployProgress
|
4
|
+
def initialize
|
5
|
+
@thread = nil
|
6
|
+
@width = 50
|
7
|
+
@current = 0
|
8
|
+
@read, @write = IO.pipe
|
9
|
+
end
|
10
|
+
|
11
|
+
def upload_progress(percentage)
|
12
|
+
width = 50
|
13
|
+
left = ( percentage * width ).round
|
14
|
+
|
15
|
+
return if @current == left
|
16
|
+
|
17
|
+
(@current..left).each do |i|
|
18
|
+
arrow = nil
|
19
|
+
right = width - i
|
20
|
+
|
21
|
+
if i < width
|
22
|
+
right -= 1
|
23
|
+
arrow = ">"
|
24
|
+
end
|
25
|
+
|
26
|
+
print "Uploading [#{ '=' * i }#{ arrow }#{' ' * right}]\r"
|
27
|
+
end
|
28
|
+
|
29
|
+
@current = left
|
30
|
+
end
|
31
|
+
|
32
|
+
def upload_complete
|
33
|
+
upload_progress(1.0)
|
34
|
+
print "\n"
|
35
|
+
|
36
|
+
@thread = Thread.new do
|
37
|
+
print "Reticulating splines..."
|
38
|
+
|
39
|
+
while true
|
40
|
+
break if IO.select( [ @read ], nil, nil, 0.5 )
|
41
|
+
print "."
|
42
|
+
end
|
43
|
+
|
44
|
+
puts
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def deploy_complete
|
49
|
+
@write << '1'
|
50
|
+
@thread.join
|
51
|
+
end
|
52
|
+
end
|
3
53
|
|
4
54
|
def help(*args)
|
5
55
|
if args.first == "users"
|
@@ -89,51 +139,13 @@ module Strobe
|
|
89
139
|
|
90
140
|
run_sc_build
|
91
141
|
|
92
|
-
if STDOUT.tty?
|
93
|
-
thread = nil
|
94
|
-
read, write = IO.pipe
|
95
|
-
|
96
|
-
upload_callback = lambda do |percentage|
|
97
|
-
if percentage
|
98
|
-
width = 50
|
99
|
-
left = ( percentage * width ).round
|
100
|
-
right = ( ( 1.0 - percentage ) * width ).round
|
101
|
-
|
102
|
-
if left < width
|
103
|
-
right -= 1
|
104
|
-
arrow = ">"
|
105
|
-
end
|
106
|
-
|
107
|
-
print "Uploading [#{'=' * left}#{arrow}#{' ' * right}]\r"
|
108
|
-
else
|
109
|
-
puts
|
110
|
-
thread = Thread.new do
|
111
|
-
print "Reticulating splines..."
|
112
|
-
|
113
|
-
while true
|
114
|
-
break if IO.select( [read ], nil, nil, 0.5 )
|
115
|
-
print "."
|
116
|
-
end
|
117
|
-
|
118
|
-
puts
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
122
|
-
else
|
123
|
-
upload_callback = nil
|
124
|
-
end
|
125
|
-
|
126
142
|
host = resource.deploy! :environment => options[:staging] && 'staging',
|
127
|
-
:
|
128
|
-
|
129
|
-
if STDOUT.tty?
|
130
|
-
write << '1'
|
131
|
-
thread.join
|
132
|
-
end
|
143
|
+
:callback => DeployProgress.new
|
133
144
|
|
134
145
|
say "The application has successfully been deployed and is available at #{host}"
|
135
146
|
end
|
136
147
|
|
148
|
+
|
137
149
|
action "applications", "list all of your applications" do
|
138
150
|
empty = "You do not have any applications. Try deploying one with `strobe deploy`."
|
139
151
|
list_applications :empty => empty
|
@@ -211,7 +223,7 @@ module Strobe
|
|
211
223
|
end
|
212
224
|
|
213
225
|
def is_sproutcore?
|
214
|
-
File.exist?("#{path}/
|
226
|
+
File.exist?("#{path}/Buildfile")
|
215
227
|
end
|
216
228
|
|
217
229
|
def determine_application_root
|
@@ -18,13 +18,16 @@ module Strobe
|
|
18
18
|
def deploy!(opts = {})
|
19
19
|
self['path'] = opts[:path] if opts[:path]
|
20
20
|
environment = opts[:environment]
|
21
|
+
callback = opts[:callback]
|
21
22
|
|
22
23
|
validate_for_deploy or return
|
23
24
|
|
24
25
|
request do
|
25
26
|
qs = "?environment=#{environment}" if environment
|
26
27
|
packfile = build_packfile(opts)
|
27
|
-
connection.put("#{http_uri}/deploy#{qs}", packfile, packfile.headers)
|
28
|
+
response = connection.put("#{http_uri}/deploy#{qs}", packfile, packfile.headers)
|
29
|
+
callback.deploy_complete if callback
|
30
|
+
response
|
28
31
|
end
|
29
32
|
|
30
33
|
[ environment, self['url'] ].compact.join('.')
|
@@ -101,6 +104,7 @@ module Strobe
|
|
101
104
|
def initialize(opts)
|
102
105
|
@opts = opts
|
103
106
|
@files = []
|
107
|
+
@callback = opts[:callback]
|
104
108
|
end
|
105
109
|
|
106
110
|
def file(path, content_type, body)
|
@@ -120,8 +124,10 @@ module Strobe
|
|
120
124
|
def read(*args)
|
121
125
|
ret = to_io.read(*args)
|
122
126
|
|
123
|
-
if callback
|
124
|
-
|
127
|
+
if @callback && ret
|
128
|
+
@callback.upload_progress(pos.to_f / size.to_f)
|
129
|
+
elsif @callback
|
130
|
+
@callback.upload_complete
|
125
131
|
end
|
126
132
|
|
127
133
|
ret
|