runeblog 0.2.7 → 0.2.12
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/empty_view.tgz +0 -0
- data/lib/helpers-blog.rb +46 -10
- data/lib/liveblog.rb +53 -28
- data/lib/runeblog.rb +120 -59
- data/lib/runeblog_version.rb +1 -1
- data/runeblog.gemspec +2 -2
- data/test/make_blog.rb +3 -5
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08da4eebd5d24bcb8586ed0c4a977d79651fde7953df71fd94e7e6e74a09484f'
|
4
|
+
data.tar.gz: ec0907dc80d37026393c70327f81a572c418a5a3553a4eb2d256cecb2deae035
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1645347a827726674875a324cd16ad9c21993c741a9b5d79f83c04459cc23b0d0a17bf1ad6c9b91d64ae57f71d180dd7bbfea850d28e1e46dc66e825cb641b53
|
7
|
+
data.tar.gz: 6bd64ef0e17ed76612b5d914de41fbcd4e916865a418acc6ae44755ad2d83fa852cce555c18a2d4c2c4b0a7569395ad4b84beca7ad070b5def25aa0209af8518
|
data/empty_view.tgz
CHANGED
Binary file
|
data/lib/helpers-blog.rb
CHANGED
@@ -3,6 +3,8 @@ require 'fileutils'
|
|
3
3
|
|
4
4
|
# Home = Dir.pwd # unless Home
|
5
5
|
|
6
|
+
LEXT = ".lt3"
|
7
|
+
|
6
8
|
module RuneBlog::Helpers
|
7
9
|
|
8
10
|
def copy(src, dst)
|
@@ -31,23 +33,57 @@ exit unless rc
|
|
31
33
|
# end
|
32
34
|
end
|
33
35
|
|
34
|
-
def stale?(src, dst)
|
36
|
+
def stale?(src, dst, force = false)
|
35
37
|
log!(enter: __method__, args: [src, dst])
|
38
|
+
raise "Source #{src} not found in #{Dir.pwd}" unless File.exist?(src)
|
39
|
+
return true if force
|
36
40
|
return true unless File.exist?(dst)
|
37
41
|
return true if File.mtime(src) > File.mtime(dst)
|
38
42
|
return false
|
39
43
|
end
|
40
44
|
|
41
|
-
def livetext(src, dst=nil)
|
42
|
-
log!(enter: __method__, args: [src, dst])
|
43
|
-
src << ".lt3" unless src.end_with?(".lt3")
|
44
|
-
if dst
|
45
|
-
dst << ".html" unless dst.end_with?(".html")
|
46
|
-
else
|
47
|
-
dst = src.sub(/.lt3$/, "")
|
45
|
+
# def livetext(src, dst=nil, dir=".")
|
46
|
+
# log!(enter: __method__, args: [src, dst])
|
47
|
+
# src << ".lt3" unless src.end_with?(".lt3")
|
48
|
+
# if dst
|
49
|
+
# dst << ".html" unless dst.end_with?(".html")
|
50
|
+
# else
|
51
|
+
# dst = src.sub(/.lt3$/, "")
|
52
|
+
# end
|
53
|
+
## return unless stale?(src, dst)
|
54
|
+
# Dir.chdir(dir) { system("livetext #{src} >#{dst}") }
|
55
|
+
# end
|
56
|
+
#
|
57
|
+
# def livetext!(src, dst=nil, dir=".")
|
58
|
+
# log!(enter: __method__, args: [src, dst])
|
59
|
+
# src << ".lt3" unless src.end_with?(".lt3")
|
60
|
+
# if dst
|
61
|
+
# dst << ".html" unless dst.end_with?(".html")
|
62
|
+
# else
|
63
|
+
# dst = src.sub(/.lt3$/, "")
|
64
|
+
# end
|
65
|
+
## return unless stale?(src, dst)
|
66
|
+
#STDERR.puts "-- livetext #{src} >#{dst} \n in: #{Dir.pwd}\n from: #{caller[0]}"
|
67
|
+
# Dir.chdir(dir) { system("livetext #{src} >#{dst}") }
|
68
|
+
#STDERR.puts "... completed"
|
69
|
+
# end
|
70
|
+
|
71
|
+
def xlate(cwd: Dir.pwd, src:,
|
72
|
+
dst: (strip = true; src.sub(/.lt3$/,"")),
|
73
|
+
copy: nil, debug: false, force: false)
|
74
|
+
src += LEXT unless src.end_with?(LEXT)
|
75
|
+
dst += ".html" unless dst.end_with?(".html") || strip
|
76
|
+
Dir.chdir(cwd) do
|
77
|
+
return unless stale?(src, dst, force)
|
78
|
+
if debug
|
79
|
+
STDERR.puts "-- xlate #{src} >#{dst}"
|
80
|
+
STDERR.puts " in: #{Dir.pwd}"
|
81
|
+
STDERR.puts " from: #{caller[0]}"
|
82
|
+
STDERR.puts " copy: #{copy}" if copy
|
83
|
+
end
|
84
|
+
rc = system("livetext #{src} >#{dst}")
|
48
85
|
end
|
49
|
-
|
50
|
-
system("livetext #{src} >#{dst}")
|
86
|
+
STDERR.puts "...completed (shell returned #{rc})" if debug
|
51
87
|
end
|
52
88
|
|
53
89
|
def get_root
|
data/lib/liveblog.rb
CHANGED
@@ -96,50 +96,72 @@ def list!
|
|
96
96
|
_optional_blank_line
|
97
97
|
end
|
98
98
|
|
99
|
-
def
|
99
|
+
def _html_body(file)
|
100
100
|
file.puts "<html>\n <body>"
|
101
101
|
yield
|
102
102
|
file.puts " </body>\n</html>"
|
103
103
|
end
|
104
104
|
|
105
|
-
def
|
106
|
-
# FIXME remember strings may not be safe
|
107
|
-
line = _data.chomp
|
108
|
-
input, cardfile, mainfile, card_title = *line.split(" ", 4)
|
109
|
-
pairs = File.readlines(input).map {|line| line.chomp.split(",", 2) }
|
110
|
-
# HTML for main area (iframe)
|
111
|
-
File.open("#{mainfile}.html", "w") do |f|
|
112
|
-
html_body(f) do
|
113
|
-
f.puts "<h1>#{card_title}</h1>"
|
114
|
-
pairs.each do |file, title|
|
115
|
-
f.puts %[<a style="text-decoration: none; font-size: 24px" href="#{file}">#{title}</a> <br>]
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
105
|
+
def _write_card(cardfile, mainfile, pairs, card_title, tag, relative: true)
|
119
106
|
# HTML for sidebar card
|
107
|
+
log!(str: "Creating #{cardfile}.html", pwd: true)
|
108
|
+
TTY.puts "Creating #{cardfile}.html - pwd = #{Dir.pwd}"
|
120
109
|
File.open("#{cardfile}.html", "w") do |f|
|
121
110
|
f.puts <<-EOS
|
122
111
|
<div class="card mb-3">
|
123
112
|
<div class="card-body">
|
124
113
|
<h5 class="card-title">
|
125
114
|
<a href="javascript: void(0)"
|
126
|
-
onclick="javascript:open_main('widgets
|
115
|
+
onclick="javascript:open_main('widgets/#{tag}/#{mainfile}.html')"
|
127
116
|
style="text-decoration: none; color: black">#{card_title}</a>
|
128
117
|
</h5>
|
118
|
+
<!-- <ul class="list-group list-group-flush"> -->
|
129
119
|
EOS
|
120
|
+
log!(str: "Writing data pairs to #{cardfile}.html", pwd: true)
|
121
|
+
top = relative ? "widgets/#{tag}/" : ""
|
130
122
|
pairs.each do |file, title|
|
131
123
|
f.puts <<-EOS
|
132
124
|
<li class="list-group-item"> <a href="javascript: void(0)"
|
133
|
-
onclick="javascript:open_main('#{file}')">#{title}</a> </li>
|
125
|
+
onclick="javascript:open_main('#{top}#{file}')">#{title}</a> </li>
|
134
126
|
EOS
|
135
127
|
end
|
136
128
|
f.puts <<-EOS
|
129
|
+
<!-- </ul> -->
|
137
130
|
</div>
|
138
131
|
</div>
|
139
132
|
EOS
|
140
133
|
end
|
141
134
|
end
|
142
135
|
|
136
|
+
def _write_main(mainfile, pairs, card_title)
|
137
|
+
# HTML for main area (iframe)
|
138
|
+
log!(str: "Creating #{mainfile}.html", pwd: true)
|
139
|
+
TTY.puts "Creating #{mainfile}.html - pwd = #{Dir.pwd}"
|
140
|
+
File.open("#{mainfile}.html", "w") do |f|
|
141
|
+
_html_body(f) do
|
142
|
+
f.puts "<h1>#{card_title}</h1>"
|
143
|
+
pairs.each do |file, title|
|
144
|
+
f.puts %[<a style="text-decoration: none; font-size: 24px" href="#{file}">#{title}</a> <br>]
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def make_main_links
|
151
|
+
log!(enter: __method__)
|
152
|
+
# FIXME remember strings may not be safe
|
153
|
+
line = _data.chomp
|
154
|
+
tag, card_title = *line.split(" ", 2)
|
155
|
+
cardfile, mainfile = "card-#{tag}", "main-#{tag}"
|
156
|
+
input = "list.data"
|
157
|
+
log!(str: "Reading #{input}", pwd: true)
|
158
|
+
pairs = File.readlines(input).map {|line| line.chomp.split(",", 2) }
|
159
|
+
_write_main(mainfile, pairs, card_title)
|
160
|
+
widget_relative = false # (tag != "news") # FIXME kludge!!!
|
161
|
+
_write_card(cardfile, mainfile, pairs, card_title, tag, relative: widget_relative)
|
162
|
+
log!(str: "...returning from method", pwd: true)
|
163
|
+
end
|
164
|
+
|
143
165
|
### inset
|
144
166
|
|
145
167
|
def inset
|
@@ -236,23 +258,20 @@ def pin
|
|
236
258
|
_optional_blank_line
|
237
259
|
end
|
238
260
|
|
239
|
-
def
|
240
|
-
raise "'post' was not called" unless @meta
|
241
|
-
save = Dir.pwd
|
242
|
-
@postdir.gsub!(/\/\//, "/") # FIXME unneeded?
|
243
|
-
Dir.mkdir(@postdir) unless Dir.exist?(@postdir) # FIXME remember assets!
|
244
|
-
Dir.chdir(@postdir)
|
245
|
-
@meta.views = @meta.views.join(" ") if @meta.views.is_a? Array
|
246
|
-
@meta.tags = @meta.tags.join(" ") if @meta.tags.is_a? Array
|
261
|
+
def _write_metadata
|
247
262
|
File.write("teaser.txt", @meta.teaser)
|
248
|
-
|
249
263
|
fields = [:num, :title, :date, :pubdate, :views, :tags]
|
250
|
-
|
251
264
|
fname2 = "metadata.txt"
|
252
265
|
f2 = File.open(fname2, "w") do |f2|
|
253
266
|
fields.each {|fld| f2.puts "#{fld}: #{@meta.send(fld)}" }
|
254
267
|
end
|
255
|
-
|
268
|
+
end
|
269
|
+
|
270
|
+
def write_post
|
271
|
+
raise "'post' was not called" unless @meta
|
272
|
+
@meta.views = @meta.views.join(" ") if @meta.views.is_a? Array
|
273
|
+
@meta.tags = @meta.tags.join(" ") if @meta.tags.is_a? Array
|
274
|
+
_write_metadata
|
256
275
|
rescue => err
|
257
276
|
puts "err = #{err}"
|
258
277
|
puts err.backtrace.join("\n")
|
@@ -267,19 +286,25 @@ def teaser
|
|
267
286
|
end
|
268
287
|
|
269
288
|
def finalize
|
289
|
+
STDERR.puts :cp1
|
270
290
|
unless @meta
|
271
291
|
puts @live.body
|
272
292
|
return
|
273
293
|
end
|
294
|
+
STDERR.puts :cp4
|
274
295
|
if @blog.nil?
|
275
296
|
return @meta
|
276
297
|
end
|
277
298
|
|
299
|
+
STDERR.puts :cp6
|
278
300
|
@slug = @blog.make_slug(@meta)
|
301
|
+
STDERR.puts :cp7
|
279
302
|
slug_dir = @slug
|
280
303
|
@postdir = @blog.view.dir + "/posts/#{slug_dir}"
|
281
304
|
STDERR.puts "--- finalize: pwd = #{Dir.pwd} postdir = #@postdir"
|
305
|
+
STDERR.puts :cp8
|
282
306
|
write_post
|
307
|
+
STDERR.puts :cp9
|
283
308
|
@meta
|
284
309
|
end
|
285
310
|
|
data/lib/runeblog.rb
CHANGED
@@ -60,7 +60,7 @@ class RuneBlog
|
|
60
60
|
create_dirs(root)
|
61
61
|
Dir.chdir(root) do
|
62
62
|
system("cp #{RuneBlog::Path}/../empty_view.tgz .")
|
63
|
-
create_dirs(:drafts, :views)
|
63
|
+
create_dirs(:drafts, :views, :posts)
|
64
64
|
new_sequence
|
65
65
|
end
|
66
66
|
put_config(root: root)
|
@@ -99,6 +99,23 @@ class RuneBlog
|
|
99
99
|
@post_tags = []
|
100
100
|
end
|
101
101
|
|
102
|
+
def _deploy_local(dir)
|
103
|
+
log!(enter: __method__, args: [dir])
|
104
|
+
Dir.chdir(dir) do
|
105
|
+
views = File.readlines("metadata.txt").grep(/^.views /).first[7..-1].split
|
106
|
+
views.each {|v| system("cp *html #@root/views/#{v}/remote") }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def process_post(sourcefile)
|
111
|
+
log!(enter: __method__, args: [dir])
|
112
|
+
nslug = sourcefile.sub(/.lt3/, "")
|
113
|
+
dir = @root + "/posts/#{nslug}"
|
114
|
+
create_dir(dir)
|
115
|
+
xlate cwd: dir, src: sourcefile, debug: true
|
116
|
+
_deploy_local(dir)
|
117
|
+
end
|
118
|
+
|
102
119
|
def inspect
|
103
120
|
log!(enter: __method__)
|
104
121
|
str = "blog: "
|
@@ -177,45 +194,59 @@ class RuneBlog
|
|
177
194
|
Dir.exist?(DotDir) && File.exist?(DotDir + "/" + ConfigFile)
|
178
195
|
end
|
179
196
|
|
180
|
-
def
|
181
|
-
|
182
|
-
|
197
|
+
def make_dummy_publish_file(view_name)
|
198
|
+
log!(enter: __method__, args: [view_name])
|
199
|
+
vdir = "#@root/views/#{view_name}"
|
200
|
+
pub = [:user, :server, :docroot, :path, :proto]
|
201
|
+
pub = pub.map {|x| x.to_s + ": undefined" }
|
202
|
+
pub = pub.join("\n") + "\n"
|
203
|
+
dump(pub, "#{vdir}/publish")
|
183
204
|
end
|
184
205
|
|
185
|
-
def
|
186
|
-
|
187
|
-
|
188
|
-
copy!("themes/standard/widgets", "remote/")
|
206
|
+
def mark_last_published(str)
|
207
|
+
log!(enter: __method__, args: [str])
|
208
|
+
dump(str, "last_published")
|
189
209
|
end
|
190
210
|
|
191
|
-
def
|
192
|
-
log!(enter: __method__, args: [
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
vdir = arg.dup
|
199
|
-
raise DirAlreadyExists(vdir) if Dir.exist?(vdir)
|
211
|
+
def add_view(view_name)
|
212
|
+
log!(enter: __method__, args: [view_name])
|
213
|
+
view = RuneBlog::View.new(view_name)
|
214
|
+
@view = view # current view
|
215
|
+
@views << view # all views
|
216
|
+
view
|
217
|
+
end
|
200
218
|
|
219
|
+
def make_empty_view_tree(view_name)
|
220
|
+
log!(enter: __method__, args: [view_name])
|
201
221
|
Dir.chdir(@root) do
|
202
222
|
cmd1 = "tar zxvf empty_view.tgz >/dev/null 2>&1"
|
203
|
-
cmd2 = "cp -r empty_view views/#{
|
223
|
+
cmd2 = "cp -r empty_view views/#{view_name}"
|
204
224
|
system(cmd1)
|
205
225
|
system(cmd2)
|
206
226
|
end
|
227
|
+
end
|
207
228
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
229
|
+
def check_valid_new_view(view_name)
|
230
|
+
log!(enter: __method__, args: [view_name])
|
231
|
+
raise ArgumentError unless view_name.is_a?(String)
|
232
|
+
raise ArgumentError if view_name.empty?
|
233
|
+
names = self.views.map(&:to_s)
|
234
|
+
bad = names.include?(view_name)
|
235
|
+
raise ViewAlreadyExists(view_name) if bad
|
236
|
+
vdir = "@root/views/#{view_name}"
|
237
|
+
raise DirAlreadyExists(view_name) if Dir.exist?(vdir)
|
238
|
+
return true # hm?
|
239
|
+
end
|
212
240
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
241
|
+
def create_view(view_name)
|
242
|
+
log!(enter: __method__, args: [view_name])
|
243
|
+
check_valid_new_view(view_name)
|
244
|
+
make_empty_view_tree(view_name)
|
245
|
+
# xlate cwd: "#@root/views/#{view_name}/themes/standard/blog",
|
246
|
+
# src: "generate", dst: "../../../remote/index"
|
247
|
+
make_dummy_publish_file(view_name)
|
248
|
+
mark_last_published("Initial creation")
|
249
|
+
add_view(view_name)
|
219
250
|
end
|
220
251
|
|
221
252
|
def delete_view(name, force = false)
|
@@ -304,7 +335,7 @@ class RuneBlog
|
|
304
335
|
def create_new_post(title, testing = false, teaser: nil, body: nil, other_views: [])
|
305
336
|
log!(enter: __method__, args: [title, testing, teaser, body, other_views])
|
306
337
|
meta = nil
|
307
|
-
Dir.chdir(
|
338
|
+
Dir.chdir("#@root/posts/") do
|
308
339
|
post = Post.create(title: title, teaser: teaser, body: body, other_views: other_views)
|
309
340
|
post.edit unless testing
|
310
341
|
post.build
|
@@ -322,6 +353,7 @@ class RuneBlog
|
|
322
353
|
sourcefile = "#@root/drafts/#{file}"
|
323
354
|
result = system("#@editor #{sourcefile} +8") unless testing
|
324
355
|
raise EditorProblem(sourcefile) unless result
|
356
|
+
process_post(sourcefile)
|
325
357
|
nil
|
326
358
|
rescue => err
|
327
359
|
error(err)
|
@@ -359,9 +391,9 @@ class RuneBlog
|
|
359
391
|
def generate_view(view) # huh?
|
360
392
|
log!(enter: __method__, args: [view])
|
361
393
|
generate_index(view) # recent posts (recent.html)
|
362
|
-
|
363
|
-
|
364
|
-
|
394
|
+
vdir = "#@root/views/#{view}"
|
395
|
+
xlate cwd: "#{vdir}/themes/standard",
|
396
|
+
src: "blog/generate.lt3", dst: "#{vdir}/remote/index.html"
|
365
397
|
end
|
366
398
|
|
367
399
|
def _get_views(draft)
|
@@ -388,36 +420,65 @@ class RuneBlog
|
|
388
420
|
[noext, viewdir, slugdir, aslug, theme]
|
389
421
|
end
|
390
422
|
|
423
|
+
def _post_metadata(draft, pdraft)
|
424
|
+
log!(enter: __method__, args: [draft, pdraft])
|
425
|
+
title_line = File.readlines(draft).grep(/^.title /).first
|
426
|
+
title = title_line.split(" ", 2)[1]
|
427
|
+
# pdir = "
|
428
|
+
Dir.chdir(pdraft) do
|
429
|
+
excerpt = File.read("teaser.txt")
|
430
|
+
vars = %[.set title="#{title.chomp}"\n] +
|
431
|
+
%[.set teaser="#{excerpt.chomp}"]
|
432
|
+
File.open("#{pdraft}/vars.lt3", "w") {|f| f.puts vars }
|
433
|
+
end
|
434
|
+
end
|
435
|
+
|
436
|
+
def copy_widget_html # FIXME make better?
|
437
|
+
log!(enter: __method__)
|
438
|
+
wdir = "../themes/standard/widgets"
|
439
|
+
widgets = Dir["#{wdir}/*"].select {|w| File.directory?(w) }
|
440
|
+
widgets.each do |w|
|
441
|
+
dir = File.basename(w)
|
442
|
+
rem = "#{remote}/#{w}"
|
443
|
+
create_dirs(rem)
|
444
|
+
system("cp #{w}/*html #{rem}")
|
445
|
+
end
|
446
|
+
end
|
447
|
+
|
448
|
+
def _handle_post(draft, view)
|
449
|
+
log!(enter: __method__, args: [draft, view])
|
450
|
+
|
451
|
+
fname = File.basename(draft) # 0001-this-is-a-post.lt3
|
452
|
+
nslug = fname.sub(/.lt3$/, "") # 0001-this-is-a-post
|
453
|
+
aslug = nslug.sub(/\d\d\d\d-/, "") # this-is-a-post
|
454
|
+
ahtml = aslug + ".html" # this-is-a-post.html
|
455
|
+
pdraft = "#@root/posts/#{nslug}"
|
456
|
+
remote = "#@root/views/#{view}/remote"
|
457
|
+
@theme = "#@root/views/#{view}/themes/standard"
|
458
|
+
# Step 1...
|
459
|
+
create_dirs(pdraft)
|
460
|
+
xlate cwd: pdraft, src: draft, dst: "guts.html"
|
461
|
+
_post_metadata(draft, pdraft)
|
462
|
+
# Step 2...
|
463
|
+
vposts = "#@root/views/#{view}/posts/"
|
464
|
+
copy!(pdraft, vposts) # ??
|
465
|
+
# Step 3..
|
466
|
+
copy(pdraft + "/guts.html", "#@theme/post")
|
467
|
+
copy(pdraft + "/vars.lt3", "#@theme/post")
|
468
|
+
# Step 4...
|
469
|
+
xlate cwd: "#{@theme}/post", src: "generate.lt3",
|
470
|
+
dst: "#{remote}/#{ahtml}", copy: "#{@theme}/post"
|
471
|
+
xlate cwd: "#{@theme}/post", src: "permalink.lt3",
|
472
|
+
dst: "#{remote}/permalink/#{ahtml}"
|
473
|
+
copy_widget_html
|
474
|
+
end
|
475
|
+
|
391
476
|
def generate_post(draft)
|
392
477
|
log!(enter: __method__, args: [draft])
|
393
478
|
views = _get_views(draft)
|
394
|
-
views.each do |view|
|
395
|
-
|
396
|
-
|
397
|
-
Dir.chdir(slugdir) do
|
398
|
-
copy(draft, ".")
|
399
|
-
lt3 = draft.split("/")[-1]
|
400
|
-
# Remember: Some posts may be in more than one view -- careful with links back
|
401
|
-
copy(lt3, remote)
|
402
|
-
html = noext[5..-1]
|
403
|
-
livetext draft, html # livetext "foobar.lt3", "foobar.html"
|
404
|
-
copy(html, "../../remote/post/index.html")
|
405
|
-
title_line = File.readlines(draft).grep(/^.title /).first
|
406
|
-
title = title_line.split(" ", 2)[1]
|
407
|
-
excerpt = File.read("teaser.txt")
|
408
|
-
vars = %[.set title="#{title.chomp}"\n] +
|
409
|
-
%[.set teaser="#{excerpt.chomp}"]
|
410
|
-
theme = "../../theme/standard"
|
411
|
-
File.open("vars.lt3", "w") {|f| f.puts vars }
|
412
|
-
livetext "#{theme}/post/generate.lt3", "#{remote}/#{html}"
|
413
|
-
livetext "#{theme}/post/permalink.lt3", "#{remote}/permalink/#{html}"
|
414
|
-
log!(str: "About to enter remote/", pwd: true, dir: true)
|
415
|
-
Dir.chdir(remote) do
|
416
|
-
log!(str: "Now in remote/", pwd: true, dir: true)
|
417
|
-
system("cp -r ../themes/standard/widgets .")
|
418
|
-
log!(str: "finished with remote/", pwd: true, dir: true)
|
419
|
-
end
|
420
|
-
end
|
479
|
+
views.each do |view|
|
480
|
+
_handle_post(draft, view)
|
481
|
+
generate_view(view)
|
421
482
|
end
|
422
483
|
end
|
423
484
|
|
data/lib/runeblog_version.rb
CHANGED
data/runeblog.gemspec
CHANGED
@@ -20,7 +20,7 @@ spec = Gem::Specification.new do |s|
|
|
20
20
|
s.authors = ["Hal Fulton"]
|
21
21
|
s.email = 'rubyhacker@gmail.com'
|
22
22
|
s.executables << "blog"
|
23
|
-
s.add_runtime_dependency 'livetext', '~> 0.8', '>= 0.8.
|
23
|
+
s.add_runtime_dependency 'livetext', '~> 0.8', '>= 0.8.93'
|
24
24
|
s.add_runtime_dependency 'rubytext', '~> 0.1', '>= 0.1.16'
|
25
25
|
|
26
26
|
# Files...
|
@@ -30,7 +30,7 @@ spec = Gem::Specification.new do |s|
|
|
30
30
|
test = Find.find("test").to_a
|
31
31
|
misc = %w[./README.lt3 ./README.md ./runeblog.gemspec]
|
32
32
|
|
33
|
-
|
33
|
+
# system("tar zcvf empty_view.tgz empty_view")
|
34
34
|
|
35
35
|
s.files = main + misc + test + ["empty_view.tgz"]
|
36
36
|
s.homepage = 'https://github.com/Hal9000/runeblog'
|
data/test/make_blog.rb
CHANGED
@@ -42,10 +42,6 @@ x = RuneBlog.new(".blogs")
|
|
42
42
|
|
43
43
|
x.create_view("around_austin") # FIXME remember view title!
|
44
44
|
|
45
|
-
# puts "=== about to call: x.generate_view('around_austin')"
|
46
|
-
x.generate_view("around_austin")
|
47
|
-
# puts "=== ...returned"
|
48
|
-
|
49
45
|
# Hack:
|
50
46
|
if File.exist?("publish")
|
51
47
|
system("cp publish .blogs/views/around_austin/publish")
|
@@ -116,7 +112,7 @@ Blah blah Waller Creek blah blah...
|
|
116
112
|
BODY
|
117
113
|
|
118
114
|
make_post(x, "Life on Sabine Street", <<-EXCERPT, <<-BODY)
|
119
|
-
It's like Pooh Corner
|
115
|
+
It's like Pooh Corner (except not).
|
120
116
|
EXCERPT
|
121
117
|
This is about Sabine St, blah blah lorem ipsum dolor...
|
122
118
|
BODY
|
@@ -130,6 +126,8 @@ But I first heard of them
|
|
130
126
|
in 2005.
|
131
127
|
BODY
|
132
128
|
|
129
|
+
x.generate_view("around_austin")
|
130
|
+
|
133
131
|
x.change_view("around_austin")
|
134
132
|
|
135
133
|
puts
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: runeblog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hal Fulton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '0.8'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.8.
|
22
|
+
version: 0.8.93
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '0.8'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.8.
|
32
|
+
version: 0.8.93
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rubytext
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|