retter 0.2.5 → 1.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -11
- data/.travis.yml +4 -2
- data/ChangeLog.md +11 -5
- data/Gemfile +4 -1
- data/LICENSE.txt +22 -0
- data/README.md +163 -246
- data/Rakefile +25 -5
- data/bin/retter +2 -22
- data/lib/retter.rb +57 -43
- data/lib/retter/cli.rb +46 -0
- data/lib/retter/cli/edit.rb +33 -0
- data/lib/retter/cli/hooks.rb +46 -0
- data/lib/retter/cli/list.rb +15 -0
- data/lib/retter/cli/new.rb +20 -0
- data/lib/retter/cli/preview.rb +9 -0
- data/lib/retter/cli/publish.rb +22 -0
- data/lib/retter/deprecated.rb +160 -0
- data/lib/retter/entry.rb +31 -106
- data/lib/retter/entry/article.rb +36 -0
- data/lib/retter/entry/find_methods.rb +38 -0
- data/lib/retter/entry/model_base.rb +10 -0
- data/lib/retter/entry/pagination.rb +23 -0
- data/lib/retter/entry/sort_methods.rb +7 -0
- data/lib/retter/entry/utils.rb +12 -0
- data/lib/retter/initializing.rb +45 -0
- data/lib/retter/repository.rb +99 -12
- data/lib/retter/retterfile.rb +67 -0
- data/lib/retter/retterfile/context.rb +57 -0
- data/lib/retter/static_site.rb +34 -0
- data/lib/retter/static_site/app.rb +13 -0
- data/lib/retter/static_site/app/application.rb +94 -0
- data/lib/retter/{generator/skel/entries → static_site/app/assets/images}/.gitkeep +0 -0
- data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_body.jpg +0 -0
- data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_entry.jpg +0 -0
- data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/bg_header.png +0 -0
- data/lib/retter/{generator/skel → static_site/app/assets}/images/orange/ic_li01.gif +0 -0
- data/lib/retter/{generator/skel/images → static_site/app/assets/javascripts}/.gitkeep +0 -0
- data/lib/retter/static_site/app/assets/stylesheets/application.css.scss +3 -0
- data/lib/retter/{generator/skel/stylesheets/base.css → static_site/app/assets/stylesheets/base.css.scss} +0 -0
- data/lib/retter/{generator/skel/stylesheets/pygments.css → static_site/app/assets/stylesheets/highlight.css.scss} +0 -0
- data/lib/retter/static_site/app/assets/stylesheets/orange.css.scss +262 -0
- data/lib/retter/static_site/app/assets/stylesheets/retter.css.scss +198 -0
- data/lib/retter/static_site/app/config.ru +7 -0
- data/lib/retter/static_site/app/controllers.rb +113 -0
- data/lib/retter/static_site/app/helpers.rb +36 -0
- data/lib/retter/{generator/skel/layouts/profile.html.haml → static_site/app/templates/about/show.html.haml} +0 -0
- data/lib/retter/static_site/app/templates/entries/articles/show.html.haml +7 -0
- data/lib/retter/static_site/app/templates/entries/index.html.haml +13 -0
- data/lib/retter/static_site/app/templates/entries/index.rss.haml +24 -0
- data/lib/retter/static_site/app/templates/entries/show.html.haml +11 -0
- data/lib/retter/static_site/app/templates/index/show.html.haml +14 -0
- data/lib/retter/static_site/app/templates/layouts/application.html.haml +34 -0
- data/lib/retter/static_site/builder.rb +106 -0
- data/lib/retter/static_site/cli.rb +25 -0
- data/lib/retter/static_site/cli/build.rb +85 -0
- data/lib/retter/static_site/cli/edit.rb +17 -0
- data/lib/retter/static_site/cli/migrate.rb +93 -0
- data/lib/retter/static_site/cli/new.rb +50 -0
- data/lib/retter/static_site/cli/preview.rb +66 -0
- data/lib/retter/static_site/markdown.rb +25 -0
- data/lib/retter/static_site/markdown/code_ray_renderer.rb +13 -0
- data/lib/retter/static_site/markdown/pygments_renderer.rb +18 -0
- data/lib/retter/static_site/markdown_entry.rb +111 -0
- data/lib/retter/static_site/monkey/sprockets_task.rb +10 -0
- data/lib/retter/version.rb +1 -1
- data/retter.gemspec +59 -43
- data/skel/.gitignore +2 -0
- data/skel/Retterfile +16 -0
- data/skel/config.ru +22 -0
- data/{lib/retter/generator/skel/javascripts → skel/retters}/.gitkeep +0 -0
- data/skel/retters/today.md +3 -0
- data/spec/cli/build_spec.rb +87 -0
- data/spec/cli/edit_spec.rb +76 -0
- data/spec/cli/invocation_spec.rb +19 -0
- data/spec/cli/list_spec.rb +64 -0
- data/spec/cli/migrate_spec.rb +65 -0
- data/spec/cli/new_spec.rb +30 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/.gitignore +0 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/Retterfile +6 -3
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/config.ru +0 -0
- data/{lib/retter/generator/skel/retters/.gitkeep → spec/fixtures/sites/site-0.2.5/entries.html} +0 -0
- data/spec/fixtures/sites/site-0.2.5/entries.rss +0 -0
- data/spec/fixtures/sites/site-0.2.5/entries/.gitkeep +0 -0
- data/spec/fixtures/sites/site-0.2.5/images/.gitkeep +0 -0
- data/spec/fixtures/sites/site-0.2.5/images/orange/bg_body.jpg +0 -0
- data/spec/fixtures/sites/site-0.2.5/images/orange/bg_entry.jpg +0 -0
- data/spec/fixtures/sites/site-0.2.5/images/orange/bg_header.png +0 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/index.html +0 -0
- data/spec/fixtures/sites/site-0.2.5/javascripts/.gitkeep +0 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/article.html.haml +0 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/entries.html.haml +0 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/entry.html.haml +0 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/index.html.haml +0 -0
- data/spec/fixtures/sites/site-0.2.5/layouts/profile.html.haml +7 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/layouts/retter.html.haml +0 -0
- data/spec/fixtures/sites/site-0.2.5/profile.html +0 -0
- data/spec/fixtures/sites/site-0.2.5/retters/.gitkeep +0 -0
- data/spec/fixtures/sites/site-0.2.5/stylesheets/base.css +22 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/stylesheets/orange.css +0 -0
- data/spec/fixtures/sites/site-0.2.5/stylesheets/pygments.css +288 -0
- data/{lib/retter/generator/skel → spec/fixtures/sites/site-0.2.5}/stylesheets/retter.css +0 -0
- data/spec/retter/deprecated_spec.rb +106 -0
- data/spec/retter/initializing_spec.rb +86 -0
- data/spec/retter/retterfile_spec.rb +32 -0
- data/spec/spec_helper.rb +38 -27
- data/spec/support/example_helper.rb +46 -0
- data/spec/support/matchers.rb +14 -0
- data/spec/support/test_site.rb +59 -0
- metadata +329 -236
- data/lib/retter/binder.rb +0 -50
- data/lib/retter/command.rb +0 -192
- data/lib/retter/config.rb +0 -96
- data/lib/retter/configurable.rb +0 -26
- data/lib/retter/entries.rb +0 -115
- data/lib/retter/generator.rb +0 -7
- data/lib/retter/generator/base.rb +0 -65
- data/lib/retter/generator/creator.rb +0 -34
- data/lib/retter/generator/skel/Gemfile +0 -5
- data/lib/retter/markdown.rb +0 -31
- data/lib/retter/markdown/code_ray_renderer.rb +0 -11
- data/lib/retter/markdown/pygments_renderer.rb +0 -16
- data/lib/retter/page.rb +0 -43
- data/lib/retter/page/article.rb +0 -54
- data/lib/retter/page/base.rb +0 -97
- data/lib/retter/page/entries.rb +0 -17
- data/lib/retter/page/entry.rb +0 -46
- data/lib/retter/page/feed.rb +0 -63
- data/lib/retter/page/index.rb +0 -17
- data/lib/retter/page/profile.rb +0 -17
- data/lib/retter/page/view_helper.rb +0 -66
- data/lib/retter/preprint.rb +0 -34
- data/spec/command/callback_spec.rb +0 -27
- data/spec/command/clean_spec.rb +0 -20
- data/spec/command/commit_spec.rb +0 -40
- data/spec/command/edit_spec.rb +0 -119
- data/spec/command/list_spec.rb +0 -42
- data/spec/command/open_spec.rb +0 -12
- data/spec/command/preview_spec.rb +0 -40
- data/spec/command/rebind_spec.rb +0 -276
- data/spec/support/example_group_helper.rb +0 -98
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'redcarpet'
|
2
|
+
require 'rouge'
|
3
|
+
require 'rouge/lexer'
|
4
|
+
require 'rouge/plugins/redcarpet'
|
5
|
+
|
6
|
+
module Retter
|
7
|
+
module StaticSite
|
8
|
+
class Markdown < Redcarpet::Markdown
|
9
|
+
autoload :PygmentsRenderer, 'retter/static_site/markdown/pygments_renderer'
|
10
|
+
autoload :CodeRayRenderer, 'retter/static_site/markdown/code_ray_renderer'
|
11
|
+
|
12
|
+
class Renderer < Redcarpet::Render::HTML
|
13
|
+
include Rouge::Plugins::Redcarpet
|
14
|
+
end
|
15
|
+
|
16
|
+
class << self
|
17
|
+
def new(renderer = Renderer, options = {})
|
18
|
+
options.reverse_merge! space_after_headers: true, fenced_code_blocks: true, strikethrough: true, fenced_code_blocks: true, tables: true
|
19
|
+
|
20
|
+
super(renderer, options)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'coderay'
|
2
|
+
|
3
|
+
module Retter
|
4
|
+
module StaticSite
|
5
|
+
class Markdown < Redcarpet::Markdown
|
6
|
+
class CodeRayRenderer < Redcarpet::Render::HTML
|
7
|
+
def block_code(code, lang)
|
8
|
+
CodeRay.scan(code, lang ? lang.intern : :plain).div
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'pygments'
|
2
|
+
require 'set'
|
3
|
+
|
4
|
+
module Retter
|
5
|
+
module StaticSite
|
6
|
+
class Markdown < Redcarpet::Markdown
|
7
|
+
class PygmentsRenderer < Redcarpet::Render::HTML
|
8
|
+
LANGUAGES = Set.new(Pygments.lexers.map {|_, l| l[:aliases] }.flatten)
|
9
|
+
|
10
|
+
def block_code(code, lang)
|
11
|
+
lang = LANGUAGES.include?(lang) ? lang : 'text'
|
12
|
+
|
13
|
+
Pygments.highlight(code, lexer: lang, formatter: 'html', options: {encoding: 'utf-8'})
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'chronic'
|
2
|
+
require 'date'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
module Retter
|
6
|
+
module StaticSite
|
7
|
+
module MarkdownEntry
|
8
|
+
mattr_accessor :source_path, :wip_file, :markdown
|
9
|
+
|
10
|
+
extend ActiveSupport::Concern
|
11
|
+
|
12
|
+
def load(path)
|
13
|
+
@source_path = Pathname(path)
|
14
|
+
|
15
|
+
fname = source_path.basename('.*').to_s
|
16
|
+
@date = Entry::Utils.parse_date(fname)
|
17
|
+
|
18
|
+
load_markdown
|
19
|
+
end
|
20
|
+
|
21
|
+
def commit!(date = Date.today)
|
22
|
+
raise 'Already committed' unless wip?
|
23
|
+
|
24
|
+
new_path = source_path.dirname.join(date.strftime('%Y%m%d.md'))
|
25
|
+
source_path.rename new_path
|
26
|
+
@source_path = new_path
|
27
|
+
end
|
28
|
+
|
29
|
+
def wip?
|
30
|
+
source_path == MarkdownEntry.wip_file
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def load_markdown
|
36
|
+
html = Nokogiri::HTML(MarkdownEntry.markdown.render(source_path.read))
|
37
|
+
elements = html.search('body > *').to_a
|
38
|
+
|
39
|
+
@lede = ''
|
40
|
+
@articles = elements.each.with_object([]) {|el, articles|
|
41
|
+
if el.name == 'h1'
|
42
|
+
articles << Entry::Article.new(entry: self, index: articles.size, title: el.text, body: '')
|
43
|
+
else
|
44
|
+
if articles.empty?
|
45
|
+
@lede << el.to_s
|
46
|
+
next
|
47
|
+
end
|
48
|
+
|
49
|
+
articles.last.body << el.to_s
|
50
|
+
end
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
module ClassMethods
|
55
|
+
def load
|
56
|
+
return unless MarkdownEntry.source_path
|
57
|
+
|
58
|
+
load_entries
|
59
|
+
load_wip_entry
|
60
|
+
|
61
|
+
all.sort_by! &:date
|
62
|
+
end
|
63
|
+
|
64
|
+
def generate_entry_path(keyword)
|
65
|
+
if found_entry = find_by_keyword(keyword)
|
66
|
+
found_entry.source_path
|
67
|
+
elsif date = Entry::Utils.parse_date(keyword)
|
68
|
+
MarkdownEntry.source_path.join(date.strftime('%Y%m%d.md'))
|
69
|
+
else
|
70
|
+
if today_entry = find(Date.today)
|
71
|
+
today_entry.source_path
|
72
|
+
else
|
73
|
+
MarkdownEntry.wip_file
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def load_entries
|
81
|
+
wip_file_path = MarkdownEntry.wip_file.to_path
|
82
|
+
except_wip = Dir.glob("#{MarkdownEntry.source_path}/*.md").reject {|path| path == wip_file_path }
|
83
|
+
|
84
|
+
self.all = except_wip.map {|path|
|
85
|
+
new.tap {|e| e.load path }
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
def load_wip_entry
|
90
|
+
return unless MarkdownEntry.wip_file.exist?
|
91
|
+
|
92
|
+
wip_entry = new.tap {|e| e.load(MarkdownEntry.wip_file) }
|
93
|
+
|
94
|
+
if find(wip_entry.date)
|
95
|
+
# this file won't read while find(Date.today)
|
96
|
+
else
|
97
|
+
all << wip_entry
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
Retter.on_initialize do |config|
|
103
|
+
self.source_path = config.source_path.try(:join, 'retters')
|
104
|
+
self.wip_file = source_path.try(:join, 'today.md')
|
105
|
+
self.markdown = Markdown.new(config.renderer || Markdown::Renderer)
|
106
|
+
|
107
|
+
-> { Retter::Entry.load }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
data/lib/retter/version.rb
CHANGED
data/retter.gemspec
CHANGED
@@ -1,46 +1,62 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
3
6
|
require 'retter/version'
|
4
7
|
|
5
|
-
Gem::Specification.new do |
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = 'retter'
|
10
|
+
spec.version = Retter::VERSION
|
11
|
+
spec.authors = ['hibariya', 'uzura29']
|
12
|
+
spec.email = ['celluloid.key@gmail.com']
|
13
|
+
spec.summary = %q{A diary workflow}
|
14
|
+
spec.description = %q{A diary workflow for shell users.}
|
15
|
+
spec.homepage = 'https://github.com/hibariya/retter'
|
16
|
+
spec.license = 'MIT'
|
17
|
+
|
18
|
+
spec.files = `git ls-files`.split($/)
|
19
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
20
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
21
|
+
spec.require_paths = ['lib']
|
22
|
+
|
23
|
+
spec.post_install_message = <<-EOM
|
24
|
+
HEADS UP! Retter-#{Retter::VERSION} has many changes, and incompatible with Retter (<= 0.2.5).
|
25
|
+
If you upgrading, please migrate your sites.
|
26
|
+
For more information: https://github.com/hibariya/retter
|
27
|
+
EOM
|
28
|
+
|
29
|
+
spec.required_ruby_version = '>= 1.9.1'
|
30
|
+
|
31
|
+
spec.add_runtime_dependency 'coffee-rails', '~> 4.0.1'
|
32
|
+
spec.add_runtime_dependency 'haml-rails', '~> 0.5.3'
|
33
|
+
spec.add_runtime_dependency 'jquery-rails', '~> 3.0.4'
|
34
|
+
spec.add_runtime_dependency 'rails', '~> 4.0.2'
|
35
|
+
spec.add_runtime_dependency 'sass-rails', '~> 4.0.1'
|
36
|
+
spec.add_runtime_dependency 'uglifier', '>= 2.4.0'
|
37
|
+
|
38
|
+
spec.add_runtime_dependency 'activesupport'
|
39
|
+
spec.add_runtime_dependency 'chronic', '~> 0.10.2'
|
40
|
+
spec.add_runtime_dependency 'guard-livereload', '~> 2.1.1'
|
41
|
+
spec.add_runtime_dependency 'launchy', '~> 2.4.2'
|
42
|
+
spec.add_runtime_dependency 'nokogiri', '~> 1.6.1'
|
43
|
+
spec.add_runtime_dependency 'rack-livereload', '~> 0.3.15'
|
44
|
+
spec.add_runtime_dependency 'redcarpet', '~> 3.0.0'
|
45
|
+
spec.add_runtime_dependency 'rouge', '~> 1.3.2'
|
46
|
+
spec.add_runtime_dependency 'thor', '~> 0.18.1'
|
47
|
+
|
48
|
+
spec.add_development_dependency 'bundler'
|
49
|
+
spec.add_development_dependency 'coderay', '~> 1.1.0'
|
50
|
+
spec.add_development_dependency 'pygments.rb', '~> 0.5.4'
|
51
|
+
spec.add_development_dependency 'rspec', '~> 2.14.1'
|
52
|
+
spec.add_development_dependency 'tapp', '~> 1.4.0'
|
53
|
+
|
54
|
+
# XXX: Avoid `WARN: Unresolved specs during Gem::Specification.reset:...'
|
55
|
+
spec.add_runtime_dependency 'arel', '~> 4.0.2'
|
56
|
+
spec.add_runtime_dependency 'coffee-script-source', '~> 1.7.0'
|
57
|
+
spec.add_runtime_dependency 'ffi', '~> 1.9.3'
|
58
|
+
spec.add_runtime_dependency 'haml', '~> 4.0.5'
|
59
|
+
spec.add_runtime_dependency 'rake', '~> 10.1.1'
|
60
|
+
spec.add_runtime_dependency 'sass', '~> 3.2.14'
|
61
|
+
spec.add_runtime_dependency 'tilt', '~> 1.4.1'
|
46
62
|
end
|
data/skel/.gitignore
ADDED
data/skel/Retterfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
configure api_revision: <%= Retter::API_REVISION %> do |config|
|
5
|
+
# Website's root URL, title, description and author. URL is needed by feed generator.
|
6
|
+
config.url = 'http://retter.example.com/'
|
7
|
+
config.title = '<%= name %>'
|
8
|
+
config.description = '<%= name %>'
|
9
|
+
config.author = '<%= ENV["USER"] %>'
|
10
|
+
|
11
|
+
# Processing for `retter publish` command.
|
12
|
+
config.publisher do
|
13
|
+
# Uncomment it if you want to do `cd $RETTER_ROOT && git push origin master` via `retter publish`.
|
14
|
+
# run 'git push origin master'
|
15
|
+
end
|
16
|
+
end
|
data/skel/config.ru
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rack'
|
2
|
+
|
3
|
+
here = File.dirname(__FILE__)
|
4
|
+
static_files = Dir.glob("#{here}/**/*.{html,rss,css,js,png,jpg,jpeg,gif,ico}")
|
5
|
+
|
6
|
+
use Rack::Static, root: '.', urls: static_files.map {|path|
|
7
|
+
path.sub(here, '')
|
8
|
+
}
|
9
|
+
|
10
|
+
map '/' do
|
11
|
+
run ->(env) {
|
12
|
+
if env['PATH_INFO'] == '/'
|
13
|
+
[
|
14
|
+
200,
|
15
|
+
{'Content-Type' => 'text/html', 'Cache-Control' => 'public, max-age=86400'},
|
16
|
+
File.open(File.join(here, 'index.html'), File::RDONLY)
|
17
|
+
]
|
18
|
+
else
|
19
|
+
[404, {'Content-Type' => 'text/plain'}, ['Not Found']]
|
20
|
+
end
|
21
|
+
}
|
22
|
+
end
|
File without changes
|
@@ -0,0 +1,3 @@
|
|
1
|
+
# Lorem ipsum
|
2
|
+
|
3
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'retter build' do
|
4
|
+
context 'default site', :with_default_site do
|
5
|
+
let(:today_str) { Date.today.strftime('%Y%m%d') }
|
6
|
+
|
7
|
+
before do
|
8
|
+
File.write 'source/retters/20140101.md', <<-DIARY.strip_heredoc
|
9
|
+
# First
|
10
|
+
|
11
|
+
Hi, Alice.
|
12
|
+
|
13
|
+
# Second
|
14
|
+
|
15
|
+
Hi, Bob.
|
16
|
+
DIARY
|
17
|
+
|
18
|
+
File.write 'source/retters/today.md', <<-DIARY.strip_heredoc
|
19
|
+
# Today
|
20
|
+
|
21
|
+
Hi, Present.
|
22
|
+
DIARY
|
23
|
+
|
24
|
+
invoke_retter('build').should be_exit_successfully
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'source files' do
|
28
|
+
let(:wip_file) { Pathname('source/retters/today.md') }
|
29
|
+
let(:dest_file) { Pathname("source/retters/#{today_str}.md") }
|
30
|
+
|
31
|
+
specify 'wip file should renamed' do
|
32
|
+
wip_file.should_not be_exist
|
33
|
+
dest_file.should written
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'publish files' do
|
38
|
+
specify 'files are generated successfully' do
|
39
|
+
Dir.glob('assets/application-*.css').should be_present
|
40
|
+
|
41
|
+
%W(
|
42
|
+
index.html about.html entries.html entries.rss
|
43
|
+
entries/20140101.html
|
44
|
+
entries/20140101/a0.html
|
45
|
+
entries/20140101/a1.html
|
46
|
+
entries/#{today_str}.html
|
47
|
+
entries/#{today_str}/a0.html
|
48
|
+
).each do |file|
|
49
|
+
Pathname(file).should written
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'multi branch', :with_multi_branch_site do
|
56
|
+
before do
|
57
|
+
Retter::Repository.new '.' do |repo|
|
58
|
+
repo.checkout 'source' do
|
59
|
+
File.write 'source/retters/20140101.md', <<-DIARY.strip_heredoc
|
60
|
+
# First
|
61
|
+
|
62
|
+
Hi, Alice.
|
63
|
+
|
64
|
+
# Second
|
65
|
+
|
66
|
+
Hi, Bob.
|
67
|
+
DIARY
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
invoke_retter('build').should be_exit_successfully
|
72
|
+
end
|
73
|
+
|
74
|
+
specify 'files are generated successfully' do
|
75
|
+
Dir.glob('assets/application-*.css').should be_present
|
76
|
+
|
77
|
+
%W(
|
78
|
+
index.html about.html entries.html entries.rss
|
79
|
+
entries/20140101.html
|
80
|
+
entries/20140101/a0.html
|
81
|
+
entries/20140101/a1.html
|
82
|
+
).each do |file|
|
83
|
+
Pathname(file).should written
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'retter edit' do
|
4
|
+
context 'default site', :with_default_site do
|
5
|
+
context 'with no keywords' do
|
6
|
+
before do
|
7
|
+
invoke_retter('edit').should be_exit_successfully
|
8
|
+
end
|
9
|
+
|
10
|
+
subject { Pathname('source/retters/today.md') }
|
11
|
+
|
12
|
+
it { should written }
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with date keyword' do
|
16
|
+
before do
|
17
|
+
invoke_retter('edit', '20140101').should be_exit_successfully
|
18
|
+
end
|
19
|
+
|
20
|
+
subject { Pathname('source/retters/20140101.md') }
|
21
|
+
|
22
|
+
it { should written }
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'with human readable date keyword' do
|
26
|
+
before do
|
27
|
+
invoke_retter('edit', '2014-01-02').should be_exit_successfully
|
28
|
+
end
|
29
|
+
|
30
|
+
subject { Pathname('source/retters/20140102.md') }
|
31
|
+
|
32
|
+
it { should written }
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'with date filename' do
|
36
|
+
before do
|
37
|
+
invoke_retter('edit', '20140103.md').should be_exit_successfully
|
38
|
+
end
|
39
|
+
|
40
|
+
subject { Pathname('source/retters/20140103.md') }
|
41
|
+
|
42
|
+
it { should written }
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'with alias keyword' do
|
46
|
+
let(:path) { Pathname('source/retters/20140104.md') }
|
47
|
+
|
48
|
+
before do
|
49
|
+
FileUtils.touch path
|
50
|
+
|
51
|
+
invoke_retter('edit', 'e0').should be_exit_successfully
|
52
|
+
end
|
53
|
+
|
54
|
+
subject { path }
|
55
|
+
|
56
|
+
it { should written }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'multi branch', :with_multi_branch_site do
|
61
|
+
let(:path) { Pathname('source/retters/today.md') }
|
62
|
+
|
63
|
+
before do
|
64
|
+
invoke_retter('edit').should be_exit_successfully
|
65
|
+
end
|
66
|
+
|
67
|
+
specify 'source branch has changes' do
|
68
|
+
Retter::Repository.new '.' do |repo|
|
69
|
+
repo.current_branch.should == 'master'
|
70
|
+
repo.checkout 'source' do
|
71
|
+
path.should written
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|