runeblog 0.0.77 → 0.0.78
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.
- checksums.yaml +4 -4
- data/data/VERSION +1 -1
- data/lib/deploy.rb +22 -2
- data/lib/repl.rb +7 -5
- data/lib/runeblog.rb +2 -9
- data/lib/version.rb +1 -1
- data/test/general.rb +61 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 803f8e5ff082b0e23819eb091c649075abb4d059
|
4
|
+
data.tar.gz: 98b845e49a328067bb7add5080498c9308c3c26b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f08ef8743d3426f0659b57e4fb7f008a00d80c43dd03b5e1acd387316025f1f23d1fd471ad82343905164ff218a3e4df60c572bcf3b9249faf0b43d2ba01469
|
7
|
+
data.tar.gz: 111cde858002851bb9c1074b92ed85ac012e89b445199a18317cc8033da2520fb5cdd7be9dba060d887a3c4ffcb0500432eda0b7d616a9e4e67ea4ec5be711f8
|
data/data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
RuneBlog v 0.0.
|
1
|
+
RuneBlog v 0.0.78 2018-10-04
|
data/lib/deploy.rb
CHANGED
@@ -4,6 +4,9 @@ require 'runeblog'
|
|
4
4
|
class RuneBlog::Deployment
|
5
5
|
attr_reader :user, :server, :root, :path
|
6
6
|
|
7
|
+
BadRemoteLogin = Exception.new("Can't login remotely")
|
8
|
+
BadRemotePerms = Exception.new("Bad remote permissions")
|
9
|
+
|
7
10
|
def initialize(user, server, root, path, protocol = "http")
|
8
11
|
@blog = RuneBlog.blog
|
9
12
|
@user, @server, @root, @path =
|
@@ -17,9 +20,9 @@ class RuneBlog::Deployment
|
|
17
20
|
def deploy(files)
|
18
21
|
reset_output
|
19
22
|
dir = "#@root/#@path"
|
20
|
-
result = system("ssh
|
23
|
+
result = system("ssh #@user@#@server -x mkdir #{dir}")
|
21
24
|
list = files.join(' ')
|
22
|
-
cmd = "scp -r #{list}
|
25
|
+
cmd = "scp -r #{list} #@user@##server:#{dir} >/dev/null 2>&1"
|
23
26
|
output! "Deploying #{files.size} files...\n"
|
24
27
|
result = system(cmd)
|
25
28
|
raise "Problem occurred in deployment" unless result
|
@@ -28,6 +31,23 @@ class RuneBlog::Deployment
|
|
28
31
|
output! "...finished.\n"
|
29
32
|
@out
|
30
33
|
end
|
34
|
+
|
35
|
+
def remote_login?
|
36
|
+
cmd = "ssh -o BatchMode=yes #@user@#@server -x date >/dev/null 2>&1"
|
37
|
+
result = system(cmd)
|
38
|
+
return nil unless result
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
42
|
+
def remote_permissions?
|
43
|
+
dir = "#@root/#@path"
|
44
|
+
temp = "#@path/__only_testing"
|
45
|
+
try1 = system("ssh -o BatchMode=yes -o ConnectTimeout=2 #@user@#@server -x mkdir -p #{temp} >/dev/null 2>&1")
|
46
|
+
return nil unless try1
|
47
|
+
try2 = system("ssh -o BatchMode=yes -o ConnectTimeout=2 #@user@#@server -x rmdir #{temp} >/dev/null 2>&1")
|
48
|
+
return nil unless try2
|
49
|
+
true
|
50
|
+
end
|
31
51
|
end
|
32
52
|
|
33
53
|
|
data/lib/repl.rb
CHANGED
@@ -19,8 +19,9 @@ module RuneBlog::REPL
|
|
19
19
|
def cmd_browse
|
20
20
|
reset_output
|
21
21
|
check_empty(arg)
|
22
|
-
url = @blog.
|
23
|
-
|
22
|
+
url = @blog.view.deployer.url
|
23
|
+
# FIXME Bad logic here.
|
24
|
+
if url.nil?
|
24
25
|
output! "Deploy first."
|
25
26
|
return @out
|
26
27
|
end
|
@@ -172,13 +173,14 @@ module RuneBlog::REPL
|
|
172
173
|
end
|
173
174
|
|
174
175
|
def cmd_kill(arg)
|
175
|
-
reset_output
|
176
|
+
reset_output "\n"
|
176
177
|
args = arg.split
|
177
178
|
args.each do |x|
|
178
179
|
# FIXME
|
179
|
-
cmd_remove_post(x, false)
|
180
|
+
ret = cmd_remove_post(x.to_i, false)
|
181
|
+
output ret
|
180
182
|
end
|
181
|
-
|
183
|
+
@out
|
182
184
|
rescue => err
|
183
185
|
error(err)
|
184
186
|
puts err.backtrace
|
data/lib/runeblog.rb
CHANGED
@@ -124,13 +124,6 @@ class RuneBlog
|
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
|
-
def deployment_url
|
128
|
-
return nil unless @deploy[@view]
|
129
|
-
lines = @deploy[@view]
|
130
|
-
user, server, sroot, spath = *@deploy[@view]
|
131
|
-
url = "http://#{server}/#{spath}"
|
132
|
-
end
|
133
|
-
|
134
127
|
def view_files
|
135
128
|
vdir = @blog.viewdir(@view)
|
136
129
|
# meh
|
@@ -169,13 +162,13 @@ class RuneBlog
|
|
169
162
|
|
170
163
|
def posts
|
171
164
|
dir = self.view.dir
|
172
|
-
posts = Dir.entries(dir).grep(
|
165
|
+
posts = Dir.entries(dir).grep(/^\d{4}/)
|
173
166
|
posts
|
174
167
|
end
|
175
168
|
|
176
169
|
def drafts
|
177
170
|
dir = "#@root/src"
|
178
|
-
drafts = Dir.entries(dir).grep(
|
171
|
+
drafts = Dir.entries(dir).grep(/^\d{4}.*/)
|
179
172
|
end
|
180
173
|
|
181
174
|
def change_view(view)
|
data/lib/version.rb
CHANGED
data/test/general.rb
CHANGED
@@ -141,19 +141,74 @@ class TestREPL < Minitest::Test
|
|
141
141
|
def test_012_create_remove_post!
|
142
142
|
@blog.change_view("beta_view")
|
143
143
|
assert @blog.view.to_s == "beta_view", "Expected beta_view"
|
144
|
-
|
144
|
+
nposts = @blog.posts.size
|
145
|
+
ndrafts = @blog.drafts.size
|
145
146
|
meta = OpenStruct.new
|
146
147
|
meta.title = "Uninteresting title"
|
147
148
|
num = @blog.create_new_post(meta, true)
|
148
|
-
|
149
|
+
|
150
|
+
assert @blog.posts.size == nposts + 1, "Don't see new post"
|
149
151
|
@blog.remove_post(num)
|
150
|
-
@blog.
|
151
|
-
|
152
|
+
assert @blog.posts.size == nposts, "Failed to delete post"
|
153
|
+
|
154
|
+
assert @blog.drafts.size == ndrafts + 1, "Don't see new draft"
|
155
|
+
@blog.delete_draft(num)
|
156
|
+
assert @blog.drafts.size == ndrafts, "Failed to delete draft"
|
157
|
+
@blog.change_view("alpha_view")
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_013_slug_tests
|
161
|
+
hash = { "abcxyz" => "abcxyz", # 0-based
|
162
|
+
"abc'xyz" => "abcxyz",
|
163
|
+
'abc"xyz' => "abcxyz",
|
164
|
+
'7%sol' => "7sol",
|
165
|
+
"only a test" => "only-a-test",
|
166
|
+
"abc xyz" => "abc--xyz", # change this behavior?
|
167
|
+
"ABCxyZ" => "abcxyz",
|
168
|
+
}
|
169
|
+
hash.each_pair.with_index do |keys, i|
|
170
|
+
real, fixed = *keys
|
171
|
+
result = @blog.make_slug(real)[1][5..-1] # weird? returns [99, "0099-whatever"]
|
172
|
+
assert result == fixed, "Case #{i}: expected: #{fixed.inspect}, got #{result.inspect}"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_014_remove_nonexistent_post!
|
177
|
+
@blog.change_view("alpha_view")
|
178
|
+
out = cmd_remove_post(99)
|
179
|
+
assert out =~ /Post 99 not found/, "Expected error about nonexistent post, got: #{out}"
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_015_kill_multiple_posts!
|
152
183
|
@blog.change_view("alpha_view")
|
184
|
+
out = cmd_list_posts(nil)
|
185
|
+
before = out.split("\n").length
|
186
|
+
out = cmd_kill("1 2 7")
|
187
|
+
out = cmd_list_posts(nil)
|
188
|
+
after = out.split("\n").length
|
189
|
+
assert after == before - 3, "list_posts saw #{before} posts, now #{after} (not #{before-3})"
|
190
|
+
system("ruby test/make_blog.rb") # This is hellish, I admit
|
153
191
|
end
|
154
192
|
|
155
|
-
def
|
156
|
-
|
193
|
+
def test_016_can_deploy
|
194
|
+
dep = RuneBlog::Deployment.new("root", "rubyhacker.com", "/var/www", "whatever")
|
195
|
+
result = dep.remote_login?
|
196
|
+
assert result == true, "Valid login doesn't work"
|
197
|
+
result = dep.remote_permissions?
|
198
|
+
assert result == true, "Valid mkdir doesn't work"
|
157
199
|
end
|
200
|
+
|
201
|
+
def test_017_cannot_deploy_wrong_user
|
202
|
+
dep = RuneBlog::Deployment.new("bad_user", "rubyhacker.com", "/var/www", "whatever")
|
203
|
+
result = dep.remote_login?
|
204
|
+
assert result.nil?, "Expected to detect login error (bad user)"
|
205
|
+
end
|
206
|
+
|
207
|
+
def test_018_cannot_deploy_bad_server
|
208
|
+
dep = RuneBlog::Deployment.new("root", "nonexistent123.com", "/var/www", "whatever")
|
209
|
+
result = dep.remote_login?
|
210
|
+
assert result.nil?, "Expected to detect login error (bad server)"
|
211
|
+
end
|
212
|
+
|
158
213
|
end
|
159
214
|
|