runeblog 0.0.23 → 0.0.24

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/data/VERSION +1 -1
  3. data/lib/runeblog.rb +83 -48
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d9171829fd979d20f5c366136624319a3f550a3
4
- data.tar.gz: feb35cf18015255fbe582a774ef8864013ff0156
3
+ metadata.gz: cf6ffaa36c7cdc9f9f49eabc32a276911e06564f
4
+ data.tar.gz: 62daf126e9eda16f40fee3085fa035b71eaf38cd
5
5
  SHA512:
6
- metadata.gz: b8fb906e311d32a4d30647c48c2464187b282d67de2c6de58aaa6ee9a827cd9f4505d1da930cccc345b60cfb9669959369bf5255eaa786661c3f2067b774c303
7
- data.tar.gz: 5b040b814070f9e49f9e03f6700b0b5f0422eb1cd8ae436105cafabb89f6fa168ead4b89b3cf02fc3f1f7bd9409d198e0197ca9c24bbfb53a941107b6dcd68f5
6
+ metadata.gz: 2c830d2bea8e9e68408f7afe5b4e5b70e9638c4dacadec86803eff0e46e765aeb90ef59d3e8a2841f4363045b4fe2097f1abb851d0f2cfe8c65b17cf0956ca76
7
+ data.tar.gz: 35c2713ecc18a9303fc6727efa97a1a91f74d0e39e6eeacdc82000ad575917b64121e99d43de4ed4a0701fbf73b7c8442d24892697db01b763fb11a9694c4f53
data/data/VERSION CHANGED
@@ -1 +1 @@
1
- RuneBlog v 0.0.23 2017-05-08
1
+ RuneBlog v 0.0.24 2017-05-09
data/lib/runeblog.rb CHANGED
@@ -1,6 +1,6 @@
1
1
 
2
2
  class RuneBlog
3
- VERSION = "0.0.23"
3
+ VERSION = "0.0.24"
4
4
 
5
5
  Path = File.expand_path(File.join(File.dirname(__FILE__)))
6
6
  DefaultData = Path + "/../data"
@@ -11,6 +11,36 @@ class RuneBlog
11
11
  PostTrailer = File.read(DefaultData + "/post_trailer.html") rescue "not found"
12
12
  end
13
13
 
14
+ class RuneBlog::Config
15
+ attr_reader :root, :views, :view, :sequence
16
+
17
+ def initialize(cfg_file = ".blog")
18
+ # What views are there? Deployment, etc.
19
+ # Crude - FIXME later
20
+ new_blog! unless File.exist?(cfg_file)
21
+
22
+ lines = File.readlines(cfg_file).map {|x| x.chomp }
23
+ @root = lines[0]
24
+ @view = lines[1]
25
+ dirs = Dir.entries("#@root/views/") - %w[. ..]
26
+ dirs.reject! {|x| ! File.directory?("#@root/views/#{x}") }
27
+ @root = root
28
+ @views = dirs
29
+ @sequence = File.read(root + "/sequence").to_i
30
+ end
31
+
32
+ def next_sequence
33
+ @sequence += 1
34
+ File.open("#@root/sequence", "w") {|f| f.puts @sequence }
35
+ @sequence
36
+ end
37
+
38
+ def viewdir(v)
39
+ @root + "/views/#{v}/"
40
+ end
41
+
42
+ end
43
+
14
44
  require 'find'
15
45
  require 'yaml'
16
46
  require 'rubygems'
@@ -38,6 +68,10 @@ def interpolate(str)
38
68
  eval wrap
39
69
  end
40
70
 
71
+ def colored_slug(slug)
72
+ red(slug[0..3])+blue(slug[4..-1])
73
+ end
74
+
41
75
 
42
76
  ### ask
43
77
 
@@ -77,18 +111,10 @@ def new_blog!
77
111
  end
78
112
  end
79
113
 
80
- ### next_sequence
81
-
82
- def next_sequence
83
- @config.sequence += 1
84
- File.open("#{@config.root}/sequence", "w") {|f| f.puts @config.sequence }
85
- @config.sequence
86
- end
87
-
88
114
  ### make_slug
89
115
 
90
116
  def make_slug(title, seq=nil)
91
- num = '%04d' % (seq || next_sequence) # FIXME can do better
117
+ num = '%04d' % (seq || @config.next_sequence) # FIXME can do better
92
118
  slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
93
119
  "#{num}-#{slug}"
94
120
  end
@@ -96,20 +122,14 @@ end
96
122
  ### read_config
97
123
 
98
124
  def read_config
99
- cfg_file = ".blog"
100
- @config = OpenStruct.new
101
- # What views are there? Deployment, etc.
102
125
  # Crude - FIXME later
126
+ cfg_file = ".blog"
103
127
  new_blog! unless File.exist?(cfg_file)
128
+ @config = RuneBlog::Config.new(".blog")
104
129
 
105
- lines = File.readlines(cfg_file).map {|x| x.chomp }
106
- root = lines[0]
107
- @view ||= lines[1]
108
- dirs = Dir.entries("#{root}/views/") - %w[. ..]
109
- dirs.reject! {|x| ! File.directory?("#{root}/views/#{x}") }
110
- @config.root = root
111
- @config.views = dirs
112
- @config.sequence = File.read(root + "/sequence").to_i
130
+ @view = @config.view # current view
131
+ @sequence = @config.sequence
132
+ @root = @config.root
113
133
  end
114
134
 
115
135
  ### create_empty_post
@@ -131,14 +151,23 @@ EOS
131
151
 
132
152
  @slug = make_slug(@title)
133
153
  @fname = @slug + ".lt3"
134
- File.open("#{@config.root}/src/#{@fname}", "w") {|f| f.puts @template }
154
+ File.open("#@root/src/#@fname", "w") {|f| f.puts @template }
135
155
  @fname
136
156
  end
137
157
 
138
158
  ### edit_post
139
159
 
140
160
  def edit_post(file)
141
- system("vi #{@config.root}/src/#{file}")
161
+ system("vi #@root/src/#{file} +8 ")
162
+ end
163
+
164
+ def deploy(view)
165
+ # TBD clunky FIXME
166
+ deployment = @config.viewdir(view) + "deploy"
167
+ lines = File.readlines(deployment)
168
+ user, server, dir = *lines
169
+ files =
170
+ cmd = "scp #{files.join(' ')} root@#{server}:#{dir}"
142
171
  end
143
172
 
144
173
  ### process_post
@@ -146,8 +175,8 @@ end
146
175
  def process_post(file)
147
176
  @main ||= Livetext.new
148
177
  @main.main.output = File.new("/tmp/WHOA","w")
149
- puts " Processing: #{Dir.pwd} :: #{file}"
150
- path = @config.root + "/src/#{file}"
178
+ # puts " Processing: #{Dir.pwd} :: #{file}"
179
+ path = @root + "/src/#{file}"
151
180
  @meta = @main.process_file(path)
152
181
  @meta.slug = make_slug(@meta.title, @config.sequence)
153
182
  @meta.slug = file.sub(/.lt3$/, "")
@@ -184,7 +213,7 @@ end
184
213
 
185
214
  def generate_index(view)
186
215
  # Gather all posts, create list
187
- vdir = "#{@config.root}/views/#{view}"
216
+ vdir = "#@root/views/#{view}"
188
217
  posts = Dir.entries(vdir).grep /^\d\d\d\d/
189
218
  posts = posts.sort.reverse
190
219
 
@@ -207,18 +236,18 @@ end
207
236
 
208
237
  def link_post_view(view)
209
238
  # Create dir using slug (index.html, metadata?)
210
- vdir = "#{@config.root}/views/#{view}"
211
- dir = "#{vdir}/#{@meta.slug}"
239
+ vdir = @config.viewdir(view)
240
+ dir = vdir + @meta.slug + "/"
212
241
  cmd = "mkdir -p #{dir}" #-- FIXME what if this exists??
213
- puts " Running: #{cmd}"
242
+ # puts " Running: #{cmd}"
214
243
  system(cmd)
215
244
  File.write("#{dir}/metadata.yaml", @meta.to_yaml)
216
245
  # Add header/trailer to post index
217
- head = File.read("#{vdir}/custom/post_header.html") rescue RuneBlog::PostHeader
218
- tail = File.read("#{vdir}/custom/post_trailer.html") rescue RuneBlog::PostTrailer
246
+ head = File.read(vdir + "custom/post_header.html") rescue RuneBlog::PostHeader
247
+ tail = File.read(vdir + "custom/post_trailer.html") rescue RuneBlog::PostTrailer
219
248
  @posthead = interpolate(head)
220
249
  @posttail = interpolate(tail)
221
- File.open("#{dir}/index.html", "w") do |f|
250
+ File.open(dir + "index.html", "w") do |f|
222
251
  f.puts @posthead
223
252
  f.puts @meta.body
224
253
  f.puts @posttail
@@ -229,17 +258,23 @@ end
229
258
  ### link_post
230
259
 
231
260
  def link_post(meta)
261
+ puts " #{colored_slug(meta.slug)}"
232
262
  # First gather the views
233
263
  views = meta.views
234
- views.each {|view| puts "Handling view '#{view}'"; link_post_view(view) }
264
+ print " Views: "
265
+ views.each do |view|
266
+ print "#{view} "
267
+ link_post_view(view)
268
+ end
269
+ puts
235
270
  end
236
271
 
237
272
  ### rebuild
238
273
 
239
274
  def rebuild
240
- files = Dir.entries("#{@config.root}/src/").grep /\d\d\d\d.*.lt3$/
275
+ puts
276
+ files = Dir.entries("#@root/src/").grep /\d\d\d\d.*.lt3$/
241
277
  files.map! {|f| File.basename(f) }
242
- files.each {|f| p f }
243
278
  files = files.sort.reverse
244
279
  files.each do |file|
245
280
  reload_post(file)
@@ -268,13 +303,13 @@ end
268
303
  def publish_post
269
304
  # Grab destination data
270
305
  # scp changed files over
271
- puts " Publish: Not implemented yet"
306
+ # puts " Publish: Not implemented yet"
272
307
  end
273
308
 
274
309
  ### list_views
275
310
 
276
311
  def list_views
277
- read_config unless @config
312
+ abort "Config file not read" unless @config
278
313
  puts
279
314
  @config.views.each {|v| puts " #{v}" }
280
315
  end
@@ -299,13 +334,13 @@ def new_view(arg = nil)
299
334
  arg ||= ask("New view: ") # check validity later
300
335
  raise "view #{arg} already exists" if @config.views.include?(arg)
301
336
 
302
- dir = @config.root + "/views/" + arg
303
- cmd = "mkdir -p #{dir}/custom"
337
+ dir = @root + "/views/" + arg + "/"
338
+ cmd = "mkdir -p #{dir + 'custom'}"
304
339
  system(cmd)
305
- File.write("#{dir}/custom/blog_header.html", RuneBlog::BlogHeader)
306
- File.write("#{dir}/custom/blog_trailer.html", RuneBlog::BlogTrailer)
307
- File.write("#{dir}/custom/post_header.html", RuneBlog::PostHeader)
308
- File.write("#{dir}/custom/post_trailer.html", RuneBlog::PostTrailer)
340
+ File.write(dir + "custom/blog_header.html", RuneBlog::BlogHeader)
341
+ File.write(dir + "custom/blog_trailer.html", RuneBlog::BlogTrailer)
342
+ File.write(dir + "custom/post_header.html", RuneBlog::PostHeader)
343
+ File.write(dir + "custom/post_trailer.html", RuneBlog::PostTrailer)
309
344
  @config.views << arg
310
345
  end
311
346
 
@@ -320,7 +355,7 @@ def import(arg = nil)
320
355
  @title = grep.sub(/^.title /, "")
321
356
  @slug = make_slug(@title)
322
357
  @fname = @slug + ".lt3"
323
- system("cp #{name} #{@config.root}/src/#@fname")
358
+ system("cp #{name} #@root/src/#@fname")
324
359
  edit_post(@fname)
325
360
  process_post(@fname)
326
361
  if publish?
@@ -339,7 +374,7 @@ def new_post
339
374
 
340
375
  file = create_empty_post
341
376
  edit_post(file)
342
- # file = @config.root + "/src/" + file
377
+ # file = @root + "/src/" + file
343
378
  process_post(file) #- FIXME handle each view
344
379
  if publish?
345
380
  link_post(@meta)
@@ -354,7 +389,7 @@ end
354
389
  def remove_post(arg)
355
390
  id = Integer(arg) rescue raise("'#{arg}' is not an integer")
356
391
  tag = "#{'%04d' % id}-"
357
- files = Find.find("#{@config.root}").to_a
392
+ files = Find.find(@root).to_a
358
393
  files = files.grep(/#{tag}/)
359
394
  if files.empty?
360
395
  puts red("\n No such post found")
@@ -378,7 +413,7 @@ end
378
413
  ### list_posts
379
414
 
380
415
  def list_posts
381
- dir = "#{@config.root}/views/#@view/"
416
+ dir = @config.viewdir(@view)
382
417
  Dir.chdir(dir) do
383
418
  posts = Dir.entries(".").grep(/^0.*/)
384
419
  puts
@@ -396,7 +431,7 @@ end
396
431
  ### list_drafts
397
432
 
398
433
  def list_drafts
399
- dir = "#{@config.root}/src"
434
+ dir = "#@root/src"
400
435
  Dir.chdir(dir) do
401
436
  posts = Dir.entries(".").grep(/^0.*.lt3/)
402
437
  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.0.23
4
+ version: 0.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-08 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A blog system based on Ruby and Livetext
14
14
  email: rubyhacker@gmail.com