runeblog 0.2.46 → 0.2.47
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/empty_view/assets/austin-pano.jpg +0 -0
- data/empty_view/themes/standard/blog/generate.lt3 +5 -3
- data/lib/global.rb +13 -39
- data/lib/helpers-blog.rb +0 -29
- data/lib/post.rb +1 -4
- data/lib/publish.rb +0 -1
- data/lib/repl.rb +1 -6
- data/lib/runeblog.rb +3 -35
- data/lib/runeblog_version.rb +1 -1
- data/lib/view.rb +0 -1
- data/lib/xlate.rb +35 -35
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4cdb2c0546394c622e9a648273dde7865fc8e4dd6839776c175c406ff34dba1
|
4
|
+
data.tar.gz: b96eb0e7783607b91b3b23d435eff368cea9102caa8a9342901318008d3fd0f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1945c5f3667d6c25f74e5d7878be2cb22016588551cad9fd66949908640b18d1730cdb0463754df82bcd0ed58a8af4febf5e309fbf3f7afa62ab808f9f0e453d
|
7
|
+
data.tar.gz: 1a646b8c95822f3ed083e3a58b946efe79eda8babc23985d9e6bcd5fca1efbbe500e4b41f9fce3c54aaa41168616cbc1c2789e7984d13ff0048f2ccc2afc96eb
|
Binary file
|
@@ -14,16 +14,18 @@
|
|
14
14
|
.include blog/head.lt3
|
15
15
|
<body>
|
16
16
|
|
17
|
+
.set color = #101035
|
18
|
+
|
17
19
|
. FIXME
|
18
|
-
<table width=100
|
20
|
+
<table width=100% bgcolor=$color>
|
19
21
|
<tr>
|
20
|
-
<td width=30% bgcolor
|
22
|
+
<td width=30% bgcolor=$color>
|
21
23
|
<div style="text-align: center; color: white">
|
22
24
|
<h1>Around Austin</h1><br>
|
23
25
|
The view from downtown...
|
24
26
|
</div>
|
25
27
|
</td>
|
26
|
-
<td><img src=assets/
|
28
|
+
<td><img src=assets/austin-pano.jpg width=100%></img>
|
27
29
|
</tr>
|
28
30
|
</table>
|
29
31
|
|
data/lib/global.rb
CHANGED
@@ -30,48 +30,22 @@ def make_exception(sym, str)
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
33
|
+
def system!(str, show: false)
|
34
|
+
log!(enter: __method__, args: [str], level: 2)
|
35
|
+
STDERR.puts str if show
|
36
|
+
rc = system(str)
|
37
|
+
if rc
|
38
|
+
return rc
|
39
|
+
else
|
40
|
+
STDERR.puts "FAILED: #{str.inspect}"
|
41
|
+
STDERR.puts "\ncaller = \n#{caller.join("\n ")}\n"
|
42
|
+
return rc
|
43
|
+
end
|
44
|
+
rc
|
45
|
+
end
|
46
46
|
|
47
47
|
def prefix(num)
|
48
48
|
log!(enter: __method__, args: [num], level: 3)
|
49
49
|
"#{'%04d' % num.to_i}"
|
50
50
|
end
|
51
51
|
|
52
|
-
def check_meta(meta, where = "")
|
53
|
-
log!(enter: __method__, args: [meta, where], level: 3)
|
54
|
-
str = "--- #{where}\n"
|
55
|
-
str << "\ncheck_meta: \n" + caller.join("\n") + "\n meta = #{meta.inspect}\n"
|
56
|
-
str << " title missing!\n" unless meta.title
|
57
|
-
str << " title missing! (empty)" if meta.title && meta.title.empty?
|
58
|
-
str << " num missing!\n" unless meta.num
|
59
|
-
if str =~ /missing!/
|
60
|
-
debug str
|
61
|
-
raise str
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def verify(hash)
|
66
|
-
log!(enter: __method__, args: [hash], level: 3)
|
67
|
-
hash.each_pair do |expr, msg|
|
68
|
-
puts "<< #{msg}" unless expr
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def assure(hash) # really the same as verify for now...
|
73
|
-
log!(enter: __method__, args: [hash], level: 3)
|
74
|
-
hash.each_pair do |expr, msg|
|
75
|
-
puts "<< #{msg}" unless expr
|
76
|
-
end
|
77
|
-
end
|
data/lib/helpers-blog.rb
CHANGED
@@ -19,22 +19,6 @@ module RuneBlog::Helpers
|
|
19
19
|
puts " Failed: #{cmd} - from #{caller[0]}" unless rc
|
20
20
|
end
|
21
21
|
|
22
|
-
# def get_root
|
23
|
-
# log!(enter: __method__)
|
24
|
-
# if $_blog
|
25
|
-
# if $_blog.root
|
26
|
-
# puts "0. Returned: #{$_blog.root}/"
|
27
|
-
# return $_blog.root + "/"
|
28
|
-
# else
|
29
|
-
# puts "1. Returned: ./"
|
30
|
-
# return "./"
|
31
|
-
# end
|
32
|
-
# else
|
33
|
-
# puts "2. Returned: ./"
|
34
|
-
# return "./"
|
35
|
-
# end
|
36
|
-
# end
|
37
|
-
|
38
22
|
def read_config(file, *syms)
|
39
23
|
log!(enter: __method__, args: [file, *syms], level: 3)
|
40
24
|
lines = File.readlines(file).map(&:chomp)
|
@@ -67,18 +51,6 @@ module RuneBlog::Helpers
|
|
67
51
|
vals
|
68
52
|
end
|
69
53
|
|
70
|
-
# def put_config(root:, view:"test_view", editor: "/usr/local/bin/vim")
|
71
|
-
# log!(enter: __method__, args: [root, view, editor])
|
72
|
-
# Dir.mkdir(root) unless Dir.exist?(root)
|
73
|
-
# Dir.chdir(root) do
|
74
|
-
# File.open("config", "w") do |cfg|
|
75
|
-
# cfg.puts "root: #{root}"
|
76
|
-
# cfg.puts "current_view: #{view}"
|
77
|
-
# cfg.puts "editor: #{editor}"
|
78
|
-
# end
|
79
|
-
# end
|
80
|
-
# end
|
81
|
-
|
82
54
|
def write_config(obj, file)
|
83
55
|
log!(enter: __method__, args: [obj, file], level: 2)
|
84
56
|
hash = obj.to_h
|
@@ -155,7 +127,6 @@ module RuneBlog::Helpers
|
|
155
127
|
log!(enter: __method__, args: [obj, name], level: 3)
|
156
128
|
File.write(name, obj)
|
157
129
|
end
|
158
|
-
|
159
130
|
end
|
160
131
|
|
161
132
|
def dump(obj, name) # FIXME scope
|
data/lib/post.rb
CHANGED
@@ -11,7 +11,7 @@ class RuneBlog::Post
|
|
11
11
|
|
12
12
|
def self.files(num, root)
|
13
13
|
log!(enter: __method__, args: [num, root], level: 3)
|
14
|
-
files = Find.find(root).to_a
|
14
|
+
files = ::Find.find(root).to_a
|
15
15
|
result = files.grep(/#{prefix(num)}-/)
|
16
16
|
result
|
17
17
|
end
|
@@ -22,7 +22,6 @@ class RuneBlog::Post
|
|
22
22
|
raise NoBlogAccessor if RuneBlog.blog.nil?
|
23
23
|
# "post" is a slug
|
24
24
|
pdir = RuneBlog.blog.view.dir/post
|
25
|
-
verify(Dir.exist?(pdir) => "Directory #{pdir} not found")
|
26
25
|
meta = nil
|
27
26
|
Dir.chdir(pdir) do
|
28
27
|
meta = read_config("metadata.txt")
|
@@ -73,7 +72,6 @@ class RuneBlog::Post
|
|
73
72
|
post.meta.title, post.meta.teaser, post.meta.body, post.meta.pubdate =
|
74
73
|
title, teaser, body, pubdate
|
75
74
|
post.meta.views = [post.blog.view.to_s] + views
|
76
|
-
# STDERR.puts "Post.create: views = #{views.inspect}"
|
77
75
|
post.meta.tags = []
|
78
76
|
post.blog.make_slug(post.meta) # adds to meta
|
79
77
|
|
@@ -93,7 +91,6 @@ class RuneBlog::Post
|
|
93
91
|
|
94
92
|
def edit
|
95
93
|
log!(enter: __method__)
|
96
|
-
verify(File.exist?(@draft) => "File #{@draft} not found")
|
97
94
|
result = system!("vi #@draft +8") # TODO improve this
|
98
95
|
raise EditorProblem(draft) unless result
|
99
96
|
nil
|
data/lib/publish.rb
CHANGED
@@ -43,7 +43,6 @@ class RuneBlog::Publishing
|
|
43
43
|
dir = @docroot/@path
|
44
44
|
view_name = @blog.view.name
|
45
45
|
viewpath = dir # /view_name
|
46
|
-
# result = system!("ssh #@user@#@server -x mkdir -p #{viewpath}")
|
47
46
|
result = system!("ssh #@user@#@server -x mkdir -p #{viewpath}/assets")
|
48
47
|
files.each do |file|
|
49
48
|
dest = "#@user@#@server:" + dir # /view_name
|
data/lib/repl.rb
CHANGED
@@ -7,7 +7,6 @@ make_exception(:PublishError, "Error during publishing")
|
|
7
7
|
make_exception(:EditorProblem, "Could not edit $1")
|
8
8
|
|
9
9
|
module RuneBlog::REPL
|
10
|
-
|
11
10
|
def edit_file(file)
|
12
11
|
result = system!("#{@blog.editor} #{file}")
|
13
12
|
raise EditorProblem(file) unless result
|
@@ -200,7 +199,6 @@ module RuneBlog::REPL
|
|
200
199
|
end
|
201
200
|
|
202
201
|
def cmd_remove_post(arg, testing = false)
|
203
|
-
puts "arg = #{arg.inspect} is a #{arg.class}"
|
204
202
|
reset_output
|
205
203
|
args = arg.split
|
206
204
|
args.each do |x|
|
@@ -212,14 +210,12 @@ puts "arg = #{arg.inspect} is a #{arg.class}"
|
|
212
210
|
@out
|
213
211
|
end
|
214
212
|
|
215
|
-
#-- FIXME affects linking, building, publishing...
|
216
|
-
|
217
213
|
def cmd_edit_post(arg, testing = false)
|
218
214
|
reset_output
|
219
215
|
id = get_integer(arg)
|
220
216
|
# Simplify this
|
221
217
|
tag = "#{'%04d' % id}"
|
222
|
-
files = Find.find(@blog.root+"/drafts").to_a
|
218
|
+
files = ::Find.find(@blog.root+"/drafts").to_a
|
223
219
|
files = files.grep(/#{tag}-.*lt3/)
|
224
220
|
files = files.map {|f| File.basename(f) }
|
225
221
|
if files.size > 1
|
@@ -385,6 +381,5 @@ puts "arg = #{arg.inspect} is a #{arg.class}"
|
|
385
381
|
puts unless testing
|
386
382
|
@out
|
387
383
|
end
|
388
|
-
|
389
384
|
end
|
390
385
|
|
data/lib/runeblog.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'date'
|
2
|
+
require 'find'
|
2
3
|
|
3
4
|
require 'logging'
|
4
5
|
|
@@ -63,7 +64,6 @@ class RuneBlog
|
|
63
64
|
create_dirs(:drafts, :views, :posts)
|
64
65
|
new_sequence
|
65
66
|
end
|
66
|
-
# put_config(root: root)
|
67
67
|
x = OpenStruct.new
|
68
68
|
x.root, x.current_view, x.editor = root, "test_view", "/usr/bin/vim " # dumb - FIXME later
|
69
69
|
write_config(x, root/ConfigFile)
|
@@ -252,8 +252,6 @@ class RuneBlog
|
|
252
252
|
log!(enter: __method__, args: [view_name], level: 2)
|
253
253
|
check_valid_new_view(view_name)
|
254
254
|
make_empty_view_tree(view_name)
|
255
|
-
# STDERR.puts "Made empty tree!"
|
256
|
-
# system("bash")
|
257
255
|
add_view(view_name)
|
258
256
|
mark_last_published("Initial creation")
|
259
257
|
end
|
@@ -396,15 +394,12 @@ class RuneBlog
|
|
396
394
|
|
397
395
|
def generate_view(view) # huh?
|
398
396
|
log!(enter: __method__, args: [view])
|
399
|
-
# generate_index(view) # recent posts (recent.html)
|
400
397
|
vdir = @root/:views/view
|
401
398
|
@theme = @root/:views/view/:themes/:standard
|
402
399
|
xlate cwd: vdir/"themes/standard/etc",
|
403
400
|
src: "blog.css.lt3", copy: vdir/"remote/etc/blog.css" # , debug: true
|
404
401
|
xlate cwd: vdir/"themes/standard",
|
405
402
|
src: "blog/generate.lt3", dst: vdir/:remote/"index.html"
|
406
|
-
# generate_index(view) # recent posts (recent.html)
|
407
|
-
# ^ HERE
|
408
403
|
copy("#{vdir}/assets/*", "#{vdir}/remote/assets/")
|
409
404
|
rescue => err
|
410
405
|
puts err
|
@@ -450,6 +445,7 @@ class RuneBlog
|
|
450
445
|
longdate = ::Date.parse(date).strftime("%B %e, %Y")
|
451
446
|
title = _retrieve_metadata(:title)
|
452
447
|
tags = _retrieve_metadata(:tags)
|
448
|
+
# FIXME simplify
|
453
449
|
vars = <<~LIVE
|
454
450
|
.set post.num = #{pnum}
|
455
451
|
.heredoc post.aslug
|
@@ -484,9 +480,7 @@ class RuneBlog
|
|
484
480
|
create_dirs(rem)
|
485
481
|
files = Dir[w/"*"]
|
486
482
|
files = files.select {|x| x =~ /(html|css)$/ }
|
487
|
-
# files.each {|f| STDERR.puts " #{f.inspect}" }
|
488
483
|
tag = File.basename(w)
|
489
|
-
# STDERR.puts "--- tag: #{tag.inspect}"
|
490
484
|
files.each {|file| system!("cp #{file} #{rem}", show: (tag == "zzz")) }
|
491
485
|
end
|
492
486
|
end
|
@@ -523,32 +517,7 @@ class RuneBlog
|
|
523
517
|
def generate_post(draft)
|
524
518
|
log!(enter: __method__, args: [draft], level: 1)
|
525
519
|
views = _get_views(draft)
|
526
|
-
views.each
|
527
|
-
_handle_post(draft, view)
|
528
|
-
# generate_view(view) # FIXME leads to inefficiency?
|
529
|
-
# ^ HERE
|
530
|
-
end
|
531
|
-
end
|
532
|
-
|
533
|
-
def OLD_index_entry(view, meta)
|
534
|
-
log!(enter: __method__, args: [view, meta])
|
535
|
-
debug "=== index_entry #{view.to_s.inspect} #{meta.num} #{meta.title.inspect}"
|
536
|
-
check_meta(meta, "index_entry1")
|
537
|
-
raise ArgumentError unless view.is_a?(String) || view.is_a?(RuneBlog::View)
|
538
|
-
check_meta(meta, "index_entry2")
|
539
|
-
self.make_slug(meta)
|
540
|
-
check_meta(meta, "index_entry3")
|
541
|
-
# FIXME clean up and generalize
|
542
|
-
ref = view/meta.slug/"index.html"
|
543
|
-
<<-HTML
|
544
|
-
<font size=-1>#{meta.date} </font> <br>
|
545
|
-
<font size=+2 color=blue><a href=../#{ref} style="text-decoration: none">#{meta.title}</font></a>
|
546
|
-
<br>
|
547
|
-
<font size=+1>#{meta.teaser} </font>
|
548
|
-
<a href=../#{ref} style="text-decoration: none">Read more...</a>
|
549
|
-
<br>
|
550
|
-
<hr>
|
551
|
-
HTML
|
520
|
+
views.each {|view| _handle_post(draft, view) }
|
552
521
|
end
|
553
522
|
|
554
523
|
def rebuild_post(file)
|
@@ -615,6 +584,5 @@ class RuneBlog
|
|
615
584
|
meta.slug = str
|
616
585
|
str
|
617
586
|
end
|
618
|
-
|
619
587
|
end
|
620
588
|
|
data/lib/runeblog_version.rb
CHANGED
data/lib/view.rb
CHANGED
data/lib/xlate.rb
CHANGED
@@ -1,42 +1,42 @@
|
|
1
1
|
|
2
2
|
LEXT = ".lt3"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
def stale?(src, dst, force = false)
|
5
|
+
log!(enter: __method__, args: [src, dst], level: 3)
|
6
|
+
raise "Source #{src} not found in #{Dir.pwd}" unless File.exist?(src)
|
7
|
+
return true if force
|
8
|
+
return true unless File.exist?(dst)
|
9
|
+
return true if File.mtime(src) > File.mtime(dst)
|
10
|
+
return false
|
11
|
+
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
rc = system("livetext #{src} >#{dst}")
|
33
|
-
STDERR.puts "...completed (shell returned #{rc})" if debug
|
34
|
-
system!("cp #{dst} #{copy}") if copy
|
13
|
+
def xlate(cwd: Dir.pwd, src:,
|
14
|
+
dst: (strip = true; src.sub(/.lt3$/,"")),
|
15
|
+
copy: nil, debug: false, force: false)
|
16
|
+
src += LEXT unless src.end_with?(LEXT)
|
17
|
+
dst += ".html" unless dst.end_with?(".html") || strip
|
18
|
+
indent = " "*12
|
19
|
+
Dir.chdir(cwd) do
|
20
|
+
if debug
|
21
|
+
STDERR.puts "#{indent} -- xlate #{src} >#{dst}"
|
22
|
+
STDERR.puts "#{indent} in: #{Dir.pwd}"
|
23
|
+
STDERR.puts "#{indent} from: #{caller[0]}"
|
24
|
+
STDERR.puts "#{indent} copy: #{copy}" if copy
|
25
|
+
end
|
26
|
+
if stale?(src, dst, force)
|
27
|
+
# do nothing
|
28
|
+
else
|
29
|
+
STDERR.puts "#{indent} -- ^ Already up to date!" if debug
|
30
|
+
return
|
35
31
|
end
|
32
|
+
rc = system("livetext #{src} >#{dst}")
|
33
|
+
STDERR.puts "...completed (shell returned #{rc})" if debug
|
34
|
+
system!("cp #{dst} #{copy}") if copy
|
36
35
|
end
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
def xlate!(cwd: Dir.pwd, src:, copy: nil, debug: false, force: false)
|
39
|
+
output = "/tmp/xlate-#{File.basename(src).sub(/.lt3$/, "")}"
|
40
|
+
xlate cwd: cwd, src: src, dst: output, debug: debug, force: force
|
41
|
+
File.read(output + ".html") # return all content as string
|
42
|
+
end
|
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.47
|
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-10-
|
11
|
+
date: 2019-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: livetext
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- "./runeblog.gemspec"
|
63
63
|
- bin/blog
|
64
64
|
- bin/mkwidget
|
65
|
+
- empty_view/assets/austin-pano.jpg
|
65
66
|
- empty_view/assets/sky2.jpg
|
66
67
|
- empty_view/remote/assets/GIT_IS_DUMB
|
67
68
|
- empty_view/remote/etc/GIT_IS_DUMB
|