runeblog 0.2.99 → 0.3.05

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.
@@ -1,4 +1,13 @@
1
1
 
2
+ def _tmp_error(err)
3
+ out = "/tmp/blog#{rand(100)}.txt"
4
+ File.open(out, "w") do |f|
5
+ f.puts err + "\n--------"
6
+ f.puts err.backtrace.join("\n")
7
+ end
8
+ puts "Error: See #{out}"
9
+ end
10
+
2
11
  def dump(obj, name)
3
12
  File.write(name, obj)
4
13
  end
@@ -16,6 +16,8 @@ class RuneBlog::Publishing
16
16
  @blog = RuneBlog.blog
17
17
  dir = @blog.root/:views/view/"themes/standard/"
18
18
  gfile = dir/"global.lt3"
19
+ return unless File.exist?(gfile) # FIXME Hackish as hell
20
+
19
21
  live = get_live_vars(gfile)
20
22
  @user = live.vars["publish.user"]
21
23
  @server = live.vars["publish.server"]
@@ -14,44 +14,51 @@ module RuneBlog::REPL
14
14
  result = system!("#{@blog.editor} #{file} #{params}")
15
15
  raise EditorProblem(file) unless result
16
16
  STDSCR.restback
17
- # cmd_clear(nil)
17
+ cmd_clear
18
18
  end
19
19
 
20
- def cmd_quit(arg, testing = false)
21
- cmd_clear(nil)
20
+ def cmd_quit
21
+ STDSCR.rows.times { puts " "*(STDSCR.cols-1) }
22
+ # FIXME please?
23
+ sleep 0.1
24
+ STDSCR.clear
25
+ sleep 0.1
22
26
  RubyText.stop
23
27
  sleep 0.1
24
-
28
+ system("clear")
25
29
  sleep 0.1
26
30
  exit
27
31
  end
28
32
 
29
- def cmd_clear(arg, testing = false)
30
- # STDSCR.rows.times { puts " "*(STDSCR.cols-1) }
33
+ def cmd_clear
34
+ STDSCR.rows.times { puts " "*(STDSCR.cols-1) }
35
+ sleep 0.1
31
36
  STDSCR.clear
32
37
  end
33
38
 
34
- def cmd_version(arg, testing = false)
35
- reset_output
36
- output RuneBlog::VERSION
37
- puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red) unless testing
38
- @out
39
+ def cmd_version
40
+ puts fx("\n RuneBlog", :bold), fx(" v #{RuneBlog::VERSION}\n", Red)
39
41
  end
40
42
 
41
- def cmd_config(arg, testing = false)
42
- hash = {"global.lt3 Global configuration" => "global.lt3",
43
- "banner/top.lt3 Text portion of banner" => "banner/top.lt3",
44
- "blog/generate.lt3 Generator for view (usu not edited)" => "blog/generate.lt3",
45
- ".... head.lt3 HEAD info for view" => "blog/head.lt3",
46
- ".... banner.lt3 banner description" => "blog/banner.lt3",
47
- ".... index.lt3 User-edited detail for view" => "blog/index.lt3",
48
- ".... post_entry.lt3 Generator for post entry in recent-posts" => "blog/post_entry.lt3",
49
- "etc/blog.css.lt3 Global CSS" => "etc/blog.css.lt3",
50
- "... externals.lt3 External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3",
51
- "post/generate.lt3 Generator for a post" => "post/generate.lt3",
52
- ".... head.lt3 HEAD info for post" => "post/head.lt3",
53
- ".... index.lt3 Content for post" => "post/index.lt3",
54
- ".... permalink.lt3 Generator for permalink" => "post/permalink.lt3",
43
+ def cmd_config
44
+ hash = {"Global configuration" => "global.lt3",
45
+ " View-specific variables" => "../../settings/view.txt",
46
+ " Recent posts" => "../../settings/recent.txt",
47
+ " Publishing vars" => "../../settings/publish.txt",
48
+ " Config for reddit" => "../../config/reddit/credentials.txt",
49
+ " Config for Facebook" => "../../config/facebook/credentials.txt",
50
+ " Config for Twitter" => "../../config/twitter/credentials.txt",
51
+ "View generator" => "blog/generate.lt3",
52
+ " Banner: Description" => "blog/banner.lt3",
53
+ " Banner: Text portion" => "banner/top.lt3",
54
+ " HEAD info for view" => "blog/head.lt3",
55
+ " User-edited detail for view" => "blog/index.lt3",
56
+ " Generator for recent-posts entry" => "blog/post_entry.lt3",
57
+ "Generator for a post" => "post/generate.lt3",
58
+ " HEAD info for post" => "post/head.lt3",
59
+ " Content for post" => "post/index.lt3",
60
+ "Global CSS" => "etc/blog.css.lt3",
61
+ "External JS/CSS (Bootstrap, etc.)" => "/etc/externals.lt3"
55
62
  }
56
63
 
57
64
  dir = @blog.view.dir/"themes/standard/"
@@ -59,24 +66,24 @@ module RuneBlog::REPL
59
66
  edit_file(dir/target)
60
67
  end
61
68
 
62
- def cmd_manage(arg, testing = false)
69
+ def cmd_manage(arg)
63
70
  case arg
64
- when "pages"; _manage_pages(nil, testing = false)
65
- when "links"; _manage_links(nil, testing = false)
66
- when "navbar"; _manage_navbar(nil, testing = false)
67
- # when "pinned"; _manage_pinned(nil, testing = false) # ditch this??
71
+ when "pages"; _manage_pages(nil)
72
+ when "links"; _manage_links(nil)
73
+ when "navbar"; _manage_navbar(nil)
74
+ # when "pinned"; _manage_pinned(nil) # ditch this??
68
75
  else
69
76
  puts "#{arg} is unknown"
70
77
  end
71
78
  end
72
79
 
73
- def _manage_pinned(arg, testing = false) # cloned from manage_links
80
+ def _manage_pinned # cloned from manage_links
74
81
  dir = @blog.view.dir/"themes/standard/widgets/pinned"
75
82
  data = dir/"list.data"
76
83
  edit_file(data)
77
84
  end
78
85
 
79
- def _manage_navbar(arg, testing = false) # cloned from manage_pages
86
+ def _manage_navbar # cloned from manage_pages
80
87
  dir = @blog.view.dir/"themes/standard/banner/navbar"
81
88
  files = Dir.entries(dir) - %w[. .. navbar.lt3]
82
89
  main_file = "[ navbar.lt3 ]"
@@ -105,13 +112,13 @@ module RuneBlog::REPL
105
112
  end
106
113
  end
107
114
 
108
- def _manage_links(arg, testing = false)
115
+ def _manage_links
109
116
  dir = @blog.view.dir/"themes/standard/widgets/links"
110
117
  data = dir/"list.data"
111
118
  edit_file(data)
112
119
  end
113
120
 
114
- def _manage_pages(arg, testing = false)
121
+ def _manage_pages(arg)
115
122
  dir = @blog.view.dir/"themes/standard/widgets/pages"
116
123
  # Assume child files already generated (and list.data??)
117
124
  data = dir/"list.data"
@@ -146,73 +153,53 @@ module RuneBlog::REPL
146
153
  end
147
154
  end
148
155
 
149
- def cmd_import(arg, testing = false)
156
+ def cmd_import
150
157
  files = ask("\n File(s) = ")
151
158
  system!("cp #{files} #{@blog.root}/views/#{@blog.view.name}/assets/")
152
159
  end
153
160
 
154
- def cmd_browse(arg, testing = false)
155
- reset_output
161
+ def cmd_browse
156
162
  url = @blog.view.publisher.url
157
163
  if url.nil?
158
- output! "Publish first."
159
164
  puts "\n Publish first."
160
- return @out
165
+ return
161
166
  end
162
167
  result = system!("open '#{url}'")
163
168
  raise CantOpen(url) unless result
164
- return @out
169
+ return
165
170
  end
166
171
 
167
- def cmd_preview(arg, testing = false)
168
- reset_output
172
+ def cmd_preview
169
173
  local = @blog.view.local_index
170
174
  unless File.exist?(local)
171
175
  puts "\n No index. Rebuilding..."
172
- cmd_rebuild(nil)
176
+ cmd_rebuild
173
177
  end
174
178
  result = system!("open #{local}")
175
179
  raise CantOpen(local) unless result
176
- @out
177
180
  rescue => err
178
- out = "/tmp/blog#{rand(100)}.txt"
179
- File.open(out, "w") do |f|
180
- f.puts err
181
- f.puts err.backtrace.join("\n")
182
- end
183
- puts "Error: See #{out}"
181
+ _tmp_error(err)
184
182
  end
185
183
 
186
- def cmd_publish(arg, testing = false)
184
+ def cmd_publish
187
185
  # Future Hal says please refactor this
188
- puts unless testing
189
- reset_output
186
+ puts
190
187
  unless @blog.view.can_publish?
191
188
  msg = "Can't publish... see global.lt3"
192
- puts msg unless testing
193
- output! msg
194
- return @out
189
+ puts msg
190
+ return
195
191
  end
196
192
 
197
193
  ret = RubyText.spinner(label: " Publishing... ") do
198
194
  @blog.view.publisher.publish
199
195
  end
200
- return @out unless ret
196
+ return unless ret
201
197
 
202
198
  vdir = @blog.view.dir
203
199
  dump("fix this later", "#{vdir}/last_published")
204
- if ! testing || ! ret
205
- puts " ...finished.\n "
206
- output! "...finished.\n"
207
- end
208
- return @out
200
+ puts " ...finished.\n " unless ret
209
201
  rescue => err
210
- out = "/tmp/blog#{rand(100)}.txt"
211
- File.open(out, "w") do |f|
212
- f.puts err
213
- f.puts err.backtrace.join("\n")
214
- end
215
- puts "Error: See #{out}"
202
+ _tmp_error(err)
216
203
  end
217
204
 
218
205
  def fresh?(src, dst)
@@ -233,49 +220,37 @@ module RuneBlog::REPL
233
220
  puts
234
221
  end
235
222
 
236
- def cmd_rebuild(arg, testing = false)
223
+ def cmd_rebuild
237
224
  debug "Starting cmd_rebuild..."
238
- reset_output
239
- puts unless testing
225
+ puts
240
226
  @blog.generate_view(@blog.view)
241
227
  @blog.generate_index(@blog.view)
242
228
  regen_posts
243
- @out
244
229
  rescue => err
245
- out = "/tmp/blog#{rand(100)}.txt"
246
- File.open(out, "w") do |f|
247
- f.puts err
248
- f.puts err.backtrace.join("\n")
249
- end
250
- puts "Error: See #{out}"
230
+ _tmp_error(err)
251
231
  end
252
232
 
253
- def cmd_change_view(arg, testing = false)
254
- reset_output
233
+ def cmd_change_view(arg)
255
234
  # Simplify this
256
235
  if arg.nil?
257
236
  viewnames = @blog.views.map {|x| x.name }
258
237
  n = viewnames.find_index(@blog.view.name)
259
238
  name = @blog.view.name
260
239
  # TODO: Add view description
261
- k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n) unless testing
240
+ k, name = STDSCR.menu(title: "Views", items: viewnames, curr: n)
262
241
  return if name.nil?
263
242
  @blog.view = name
264
- output name + "\n"
265
- puts "\n ", fx(name, :bold), "\n" unless testing
266
- return @out
243
+ puts "\n ", fx(name, :bold), "\n"
244
+ return
267
245
  else
268
246
  if @blog.view?(arg)
269
247
  @blog.view = arg
270
- output "View: " + @blog.view.name.to_s
271
- puts "\n ", fx(arg, :bold), "\n" unless testing
248
+ puts "\n ", fx(arg, :bold), "\n"
272
249
  end
273
250
  end
274
- return @out
275
251
  end
276
252
 
277
- def cmd_new_view(arg, testing = false)
278
- reset_output
253
+ def cmd_new_view(arg)
279
254
  if arg.nil?
280
255
  arg = ask(fx("\nFilename: ", :bold))
281
256
  puts
@@ -287,20 +262,13 @@ module RuneBlog::REPL
287
262
  vim_params = '-c ":set hlsearch" -c ":hi Search ctermfg=2 ctermbg=6" +/"\(VIEW_.*\|SITE.*\)"'
288
263
  edit_file(@blog.view.dir/"themes/standard/global.lt3", vim: vim_params)
289
264
  @blog.change_view(arg)
290
- @out
291
265
  rescue ViewAlreadyExists
292
266
  puts 'Blog already exists'
293
267
  rescue => err
294
- out = "/tmp/blog#{rand(100)}.txt"
295
- File.open(out, "w") do |f|
296
- f.puts err
297
- f.puts err.backtrace.join("\n")
298
- end
299
- puts "Error: See #{out}"
268
+ _tmp_error(err)
300
269
  end
301
270
 
302
- def cmd_new_post(arg, testing = false)
303
- reset_output
271
+ def cmd_new_post
304
272
  if @blog.views.empty?
305
273
  puts "\n Create a view before creating the first post!\n "
306
274
  return
@@ -308,15 +276,8 @@ module RuneBlog::REPL
308
276
  title = ask("\nTitle: ")
309
277
  puts
310
278
  @blog.create_new_post(title)
311
- # STDSCR.clear
312
- @out
313
279
  rescue => err
314
- out = "/tmp/blog#{rand(100)}.txt"
315
- File.open(out, "w") do |f|
316
- f.puts err
317
- f.puts err.backtrace.join("\n")
318
- end
319
- puts "Error: See #{out}"
280
+ _tmp_error(err)
320
281
  end
321
282
 
322
283
  def _remove_post(arg, testing=false)
@@ -325,20 +286,16 @@ module RuneBlog::REPL
325
286
  puts "Post #{id} not found" if result.nil?
326
287
  end
327
288
 
328
- def cmd_remove_post(arg, testing = false)
329
- reset_output
289
+ def cmd_remove_post(arg)
330
290
  args = arg.split
331
291
  args.each do |x|
332
292
  # FIXME
333
293
  ret = _remove_post(x.to_i, false)
334
294
  puts ret
335
- output ret
336
295
  end
337
- @out
338
296
  end
339
297
 
340
- def cmd_edit_post(arg, testing = false)
341
- reset_output
298
+ def cmd_edit_post(arg)
342
299
  id = get_integer(arg)
343
300
  # Simplify this
344
301
  tag = "#{'%04d' % id}"
@@ -347,14 +304,12 @@ module RuneBlog::REPL
347
304
  files = files.map {|f| File.basename(f) }
348
305
  if files.size > 1
349
306
  msg = "Multiple files: #{files}"
350
- output msg
351
- puts msg unless testing
307
+ puts msg
352
308
  return [false, msg]
353
309
  end
354
310
  if files.empty?
355
311
  msg = "\n Can't edit post #{id}"
356
- output msg
357
- puts msg unless testing
312
+ puts msg
358
313
  return [false, msg]
359
314
  end
360
315
 
@@ -364,48 +319,36 @@ module RuneBlog::REPL
364
319
  result = edit_file(draft)
365
320
  @blog.generate_post(draft)
366
321
  rescue => err
367
- out = "/tmp/blog#{rand(100)}.txt"
368
- File.open(out, "w") do |f|
369
- f.puts err
370
- f.puts err.backtrace.join("\n")
371
- end
372
- puts "Error: See #{out}"
322
+ _tmp_error(err)
373
323
  end
374
324
 
375
- def cmd_list_views(arg, testing = false)
376
- reset_output("\n")
377
- puts unless testing
325
+ def cmd_list_views
326
+ puts
378
327
  @blog.views.each do |v|
379
328
  v = v.to_s
380
329
  v = fx(v, :bold) if v == @blog.view.name
381
- output v + "\n"
382
330
  # FIXME: next 3 lines are crufty as hell
383
- lines = File.readlines(@blog.root/"views/#{v}/themes/standard/global.lt3")
384
- lines = lines.select {|x| x =~ /^blog / && x !~ /VIEW_/ }
331
+ lines = File.readlines(@blog.root/"views/#{v}/settings/view.txt")
332
+ lines = lines.select {|x| x =~ /^title / && x !~ /VIEW_/ }
385
333
  title = lines.first.split(" ", 2)[1]
386
- print " ", ('%15s' % v) unless testing
387
- puts " ", fx(title, :black) unless testing
334
+ print " ", ('%15s' % v)
335
+ puts " ", fx(title, :black)
388
336
  end
389
- puts unless testing
390
- # @out
337
+ puts
391
338
  end
392
339
 
393
- def cmd_list_posts(arg, testing = false)
394
- reset_output
340
+ def cmd_list_posts
395
341
  posts = @blog.posts # current view
396
342
  str = @blog.view.name + ":\n"
397
- output str
398
- puts unless testing
399
- puts " ", fx(str, :bold) unless testing
343
+ puts
344
+ puts " ", fx(str, :bold)
400
345
  if posts.empty?
401
- output! "No posts"
402
- puts " No posts" unless testing
346
+ puts " No posts"
403
347
  else
404
348
  posts.each do |post|
405
- outstr " #{colored_slug(post)}\n"
406
349
  base = post.sub(/.lt3$/, "")
407
350
  num, rest = base[0..3], base[4..-1]
408
- puts " ", fx(num, Red), fx(rest, Blue) unless testing
351
+ puts " ", fx(num, Red), fx(rest, Blue)
409
352
  draft = @blog.root/:drafts/post + ".lt3"
410
353
  other = @blog._get_views(draft) - [@blog.view.to_s]
411
354
  unless other.empty?
@@ -414,24 +357,20 @@ module RuneBlog::REPL
414
357
  end
415
358
  end
416
359
  end
417
- puts unless testing
418
- @out
360
+ puts
419
361
  end
420
362
 
421
- def cmd_list_drafts(arg, testing = false)
422
- reset_output
363
+ def cmd_list_drafts
423
364
  drafts = @blog.drafts # current view
424
365
  if drafts.empty?
425
- output! "No drafts"
426
- puts "\n No drafts\n " unless testing
427
- return @out
366
+ puts "\n No drafts\n "
367
+ return
428
368
  else
429
- puts unless testing
369
+ puts
430
370
  drafts.each do |draft|
431
- outstr " #{colored_slug(draft.sub(/.lt3$/, ""))}\n"
432
371
  base = draft.sub(/.lt3$/, "")
433
372
  num, rest = base[0..3], base[4..-1]
434
- puts " ", fx(num, Red), fx(rest, Blue) unless testing
373
+ puts " ", fx(num, Red), fx(rest, Blue)
435
374
  other = @blog._get_views(@blog.root/:drafts/draft) - [@blog.view.to_s]
436
375
  unless other.empty?
437
376
  print fx(" "*7 + "also in: ", :bold)
@@ -439,48 +378,40 @@ module RuneBlog::REPL
439
378
  end
440
379
  end
441
380
  end
442
- puts unless testing
443
- @out
381
+ puts
444
382
  end
445
383
 
446
- def cmd_list_assets(arg, testing = false)
447
- reset_output
384
+ def cmd_list_assets
448
385
  dir = @blog.view.dir + "/assets"
449
386
  assets = Dir[dir + "/*"]
450
387
  if assets.empty?
451
- output! "No assets"
452
- puts " No assets" unless testing
453
- return @out
388
+ puts " No assets"
389
+ return
454
390
  else
455
- puts unless testing
391
+ puts
456
392
  assets.each do |name|
457
393
  asset = File.basename(name)
458
- outstr asset
459
- puts " ", fx(asset, Blue) unless testing
394
+ puts " ", fx(asset, Blue)
460
395
  end
461
396
  end
462
- puts unless testing
463
- @out
397
+ puts
464
398
  end
465
399
 
466
- def cmd_ssh(arg, testing = false)
400
+ def cmd_ssh
467
401
  pub = @blog.view.publisher
468
402
  puts
469
403
  system!("tputs clear; ssh #{pub.user}@#{pub.server}")
470
404
  sleep 0.1
471
- cmd_clear(nil)
405
+ cmd_clear
472
406
  end
473
407
 
474
- def cmd_INVALID(arg, testing = false)
475
- reset_output "\n Command '#{arg}' was not understood."
408
+ def cmd_INVALID(arg)
476
409
  print fx("\n Command ", :bold)
477
410
  print fx(arg, Red, :bold)
478
411
  puts fx(" was not understood.\n ", :bold)
479
- @out
480
412
  end
481
413
 
482
- def cmd_legacy(arg = nil)
483
- # dir = ask("Dir = ")
414
+ def cmd_legacy
484
415
  dir = "sources/computing"
485
416
  puts "Importing from: #{dir}"
486
417
  files = Dir[dir/"**"]
@@ -529,7 +460,7 @@ module RuneBlog::REPL
529
460
  {Posts:} {Advanced:}
530
461
  ------------------------------------------- -------------------------------------------
531
462
  {p, post} Create a new post {config} Edit various system files
532
- {new post} Same as p, post {customize} (BUGGY) Change set of tags, extra views
463
+ {new post} Same as p, post
533
464
  {lsp, list posts} List posts in current view {preview} Look at current (local) view in browser
534
465
  {lsd, list drafts} List all drafts (all views) {browse} Look at current (published) view in browser
535
466
  {delete ID [ID...]} Remove multiple posts {rebuild} Regenerate all posts and relink
@@ -538,10 +469,8 @@ module RuneBlog::REPL
538
469
  {import ASSETS} Import assets (images, etc.) {manage WIDGET} Manage content/layout of a widget
539
470
  EOS
540
471
 
541
- def cmd_help(arg, testing = false)
542
- reset_output
472
+ def cmd_help
543
473
  msg = Help
544
- output msg
545
474
  msg.each_line do |line|
546
475
  e = line.each_char
547
476
  first = true
@@ -564,8 +493,6 @@ module RuneBlog::REPL
564
493
  print s1
565
494
  end
566
495
  end
567
- puts unless testing
568
- @out
496
+ puts
569
497
  end
570
498
  end
571
-