Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

adds update_templates command, throws warning on outdated templates (…

…closes #2)
  • Loading branch information...
commit 67f8ddc4efe38ef2156b256cdec3d896239f26e2 1 parent 22457f8
Pablo Astigarraga authored

Showing 1 changed file with 65 additions and 43 deletions. Show diff stats Hide diff stats

  1. +65 43 bin/planet
108 bin/planet
@@ -5,6 +5,43 @@ require 'planet'
5 5
6 6 include GLI
7 7
  8 +TEMPLATES = {
  9 + author: '
  10 +<div class="author">
  11 + <img src="{{ image_url }}" style="width: 96px; height: 96;">
  12 + <span style="position: absolute; padding: 32px 15px;">
  13 + <i>Original post by <a href="{{ twitter_url }}">{{ author }}</a> - check out <a href="{{ blog_url }}">{{ blog_name }}</a></i>
  14 + </span>
  15 +</div>
  16 +',
  17 + header: '---
  18 +title: "{{ post_title }}"
  19 +kind: article
  20 +created_at: {{ post_date }}
  21 +author: {{ author }}
  22 +layout: post
  23 +---
  24 +',
  25 + planet: '## Planet.rb default config file, modify it and spawn awesomeness!
  26 +
  27 +planet:
  28 + posts_directory: source/_posts/
  29 + templates_directory: source/_layouts/
  30 +
  31 +blogs:
  32 + # Bare minimum to get it working
  33 + - author: "Cubox"
  34 + feed: "http://blog.cuboxlabs.com/atom.xml"
  35 + image: "http://cuboxlabs.com/img/cubox-humans/could-be-you.png"
  36 +
  37 + - author: "Pablo Astigarraga"
  38 + feed: "http://blog.poteland.com/atom.xml"
  39 + image: "http://poteland.com/images/avatars/red_mage.png"
  40 + # Other fields:
  41 + twitter: "poteland"
  42 + url: "http://blog.poteland.com" # => only required for people that don\'t have a \'url\' field on their RSS/Atom field'
  43 +}
  44 +
8 45 program_desc 'Planet.rb is an awesome feed-aggregator gem that consumes RSS/Atom feeds and outputs them in a format suitable to use with Octopress or Jekyll'
9 46
10 47 desc 'Parses planet.yml file for blogs and generates their posts in Jekyll compliant format under the _posts directory'
@@ -38,27 +75,7 @@ command :init do |c|
38 75 c.action do |global_options,options,args|
39 76 abort 'There is already a planet.yml file present' if File.exist? 'planet.yml'
40 77
41   - default = '## Planet.rb default config file, modify it and spawn awesomeness!
42   -
43   -planet:
44   - posts_directory: source/_posts/
45   - templates_directory: source/_layouts/
46   -
47   -blogs:
48   - # Bare minimum to get it working
49   - - author: "Cubox"
50   - feed: "http://blog.cuboxlabs.com/atom.xml"
51   - image: "http://cuboxlabs.com/img/cubox-humans/could-be-you.png"
52   -
53   - - author: "Pablo Astigarraga"
54   - feed: "http://blog.poteland.com/atom.xml"
55   - image: "http://poteland.com/images/avatars/red_mage.png"
56   - # Other fields:
57   - twitter: "poteland"
58   - url: "http://blog.poteland.com" # => only required for people that don\'t have a \'url\' field on their RSS/Atom field'
59   -
60   -
61   - File.open('planet.yml', 'w') { |f| f.write(default) }
  78 + File.open('planet.yml', 'w') { |f| f.write(TEMPLATES[:planet]) }
62 79
63 80 puts '=> Created default planet.yml'
64 81 end
@@ -69,35 +86,19 @@ command :create_templates do |c|
69 86 c.action do |global_options,options,args|
70 87 conf = YAML.load_file('planet.yml')
71 88
72   - templates_dir = conf.fetch('planet').fetch('templates_directory', '_layouts/')
  89 + templates_dir = conf.fetch('planet').fetch('templates_directory', 'source/_layouts/')
73 90
74 91 FileUtils.mkdir_p(templates_dir)
75 92
76   - author = '
77   -<div class="author">
78   - <img src="{{ image_url }}" style="width: 96px; height: 96;">
79   - <span style="position: absolute; padding: 32px 15px;">
80   - <i>Original post by <a href="{{ twitter_url }}">{{ author }}</a> - check out <a href="{{ blog_url }}">{{ blog_name }}</a></i>
81   - </span>
82   -</div>
83   -'
84 93 if !File.exists?(templates_dir + 'author.html')
85   - File.open(templates_dir + 'author.html', 'w') { |f| f.write(author) }
  94 + File.open(templates_dir + 'author.html', 'w') { |f| f.write(TEMPLATES[:author]) }
86 95 puts "=> Created default #{ templates_dir }author.html"
87 96 else
88 97 puts "=> Template #{ templates_dir }author.html already exists, skipping"
89 98 end
90 99
91   - header ='---
92   -title: "{{ post_title }}"
93   -kind: article
94   -created_at: {{ post_date }}
95   -author: {{ author }}
96   -layout: post
97   ----
98   -'
99 100 if !File.exists?(templates_dir + 'header.md')
100   - File.open(templates_dir + 'header.md', 'w') { |f| f.write(header) }
  101 + File.open(templates_dir + 'header.md', 'w') { |f| f.write(TEMPLATES[:header]) }
101 102 puts "=> Created default #{ templates_dir }header.md"
102 103 else
103 104 puts "=> Template #{ templates_dir }header.md already exists, skipping"
@@ -105,6 +106,25 @@ layout: post
105 106 end
106 107 end
107 108
  109 +desc 'Delete existing templates and recreate them'
  110 +command :update_templates do |c|
  111 + c.action do |global_options,options,args|
  112 + conf = YAML.load_file('planet.yml')
  113 +
  114 + templates_dir = conf.fetch('planet').fetch('templates_directory', 'source/_layouts/')
  115 +
  116 + author = templates_dir + 'author.html'
  117 + header = templates_dir + 'header.md'
  118 +
  119 +
  120 + File.delete(author) if File.exists?(author)
  121 + File.delete(header) if File.exists?(header)
  122 +
  123 + response = `#{ $0 } create_templates`
  124 + puts response
  125 + end
  126 +end
  127 +
108 128 pre do |global,command,options,args|
109 129 if command.name == :generate
110 130 conf = YAML.load_file('planet.yml')
@@ -112,13 +132,15 @@ pre do |global,command,options,args|
112 132 templates_dir = conf.fetch('planet').fetch('templates_directory', 'source/_layouts')
113 133 FileUtils.mkdir_p(templates_dir)
114 134
115   - files = [templates_dir + 'author.html', templates_dir + 'header.md']
  135 + files = { author: templates_dir + 'author.html', header: templates_dir + 'header.md' }
116 136
117   - files.each do |file|
118   - unless File.exists?(file)
  137 + files.each do |name, path|
  138 + if !File.exists?(path)
119 139 puts "=> You are missing some files in your templates directory, planet.rb will create them for you - make sure to review them on #{ templates_dir }!"
120 140 response = `#{$0} create_templates`
121 141 puts response
  142 + elsif TEMPLATES[name] != File.read(path)
  143 + puts "!! WARNING: your planet.rb template files are different from the default, if you haven't made specific changes to them yourself then planet.rb default templates might have changed.Run 'planet update_templates' to override your current files with the newest default file available."
122 144 end
123 145 end
124 146 end

0 comments on commit 67f8ddc

Please sign in to comment.
Something went wrong with that request. Please try again.