runeblog 0.2.99 → 0.3.05

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-