diary 0.1.5 → 0.2.0
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.
- data/.gitignore +3 -22
- data/Gemfile +4 -0
- data/Gemfile.lock +28 -0
- data/Rakefile +2 -20
- data/bin/diary +1 -40
- data/diary.gemspec +19 -60
- data/lib/diary.rb +23 -20
- data/lib/diary/cli.rb +5 -43
- data/lib/diary/cli/commands.rb +23 -0
- data/lib/diary/cli/commands/compile.rb +16 -0
- data/lib/diary/cli/commands/init.rb +40 -0
- data/lib/diary/cli/commands/new_item.rb +9 -0
- data/lib/diary/cli/commands/server.rb +13 -0
- data/lib/diary/cli/commands/sync.rb +20 -0
- data/lib/diary/cli/parser.rb +37 -0
- data/lib/diary/item/base.rb +26 -0
- data/lib/diary/item/creator.rb +80 -0
- data/lib/diary/item/data.rb +37 -0
- data/lib/diary/item/finder.rb +37 -0
- data/lib/diary/item/output.rb +58 -0
- data/lib/diary/item/snippet.rb +9 -0
- data/lib/diary/item/template.rb +38 -0
- data/lib/diary/item/url.rb +9 -0
- data/lib/diary/items/page.rb +7 -0
- data/lib/diary/items/post.rb +10 -0
- data/lib/diary/message.rb +40 -19
- data/lib/diary/server.rb +5 -0
- data/lib/diary/snippet.rb +19 -0
- data/lib/diary/version.rb +3 -0
- metadata +85 -38
- data/LICENSE +0 -20
- data/README.rdoc +0 -3
- data/VERSION +0 -1
- data/lib/diary/draft.rb +0 -14
- data/lib/diary/item.rb +0 -138
- data/lib/diary/output.rb +0 -57
- data/lib/diary/page.rb +0 -6
- data/lib/diary/post.rb +0 -22
- data/lib/diary/site.rb +0 -55
- data/lib/diary/template.rb +0 -27
- data/test/helper.rb +0 -10
- data/test/test_diary.rb +0 -7
data/.gitignore
CHANGED
@@ -1,22 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
## TEXTMATE
|
5
|
-
*.tmproj
|
6
|
-
tmtags
|
7
|
-
|
8
|
-
## EMACS
|
9
|
-
*~
|
10
|
-
\#*
|
11
|
-
.\#*
|
12
|
-
|
13
|
-
## VIM
|
14
|
-
*.swp
|
15
|
-
|
16
|
-
## PROJECT::GENERAL
|
17
|
-
coverage
|
18
|
-
rdoc
|
19
|
-
pkg
|
20
|
-
|
21
|
-
## PROJECT::SPECIFIC
|
22
|
-
.document
|
1
|
+
pkg/*
|
2
|
+
*.gem
|
3
|
+
.bundle
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
diary (0.2.0)
|
5
|
+
activesupport (>= 3.0.0)
|
6
|
+
bluecloth (>= 2.0.11)
|
7
|
+
sinatra (>= 1.1.0)
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
activesupport (3.0.3)
|
13
|
+
bluecloth (2.0.11)
|
14
|
+
rack (1.2.1)
|
15
|
+
sinatra (1.2.0)
|
16
|
+
rack (~> 1.1)
|
17
|
+
tilt (>= 1.2.2, < 2.0)
|
18
|
+
tilt (1.2.2)
|
19
|
+
|
20
|
+
PLATFORMS
|
21
|
+
ruby
|
22
|
+
|
23
|
+
DEPENDENCIES
|
24
|
+
activesupport (>= 3.0.0)
|
25
|
+
bluecloth (>= 2.0.11)
|
26
|
+
bundler (>= 1.0.0.rc.6)
|
27
|
+
diary!
|
28
|
+
sinatra (>= 1.1.0)
|
data/Rakefile
CHANGED
@@ -1,20 +1,2 @@
|
|
1
|
-
require '
|
2
|
-
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "diary"
|
8
|
-
gem.summary = "Dead Simple, Static Blog Generator"
|
9
|
-
|
10
|
-
gem.email = "robin@clart.me"
|
11
|
-
gem.homepage = "http://github.com/robinclart/diary"
|
12
|
-
gem.authors = ["Robin Clart"]
|
13
|
-
|
14
|
-
gem.add_dependency('liquid', '>= 2.0.0')
|
15
|
-
gem.add_dependency('bluecloth', '>= 2.0.7')
|
16
|
-
end
|
17
|
-
Jeweler::GemcutterTasks.new
|
18
|
-
rescue LoadError
|
19
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
20
|
-
end
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
data/bin/diary
CHANGED
@@ -1,43 +1,4 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
4
|
-
|
5
2
|
require 'diary'
|
6
|
-
require 'diary/cli'
|
7
|
-
|
8
|
-
options = Diary::CLI.parse(ARGV)
|
9
|
-
# Diary.config(options)
|
10
3
|
|
11
|
-
|
12
|
-
when 1
|
13
|
-
case ARGV[0]
|
14
|
-
when "compile"
|
15
|
-
Diary::Site.compile(options.force)
|
16
|
-
when "init"
|
17
|
-
Diary::Site.new(options)
|
18
|
-
else
|
19
|
-
puts "Invalid option. Run `diary --help`."
|
20
|
-
end
|
21
|
-
when 2
|
22
|
-
case ARGV[0]
|
23
|
-
when "draft"
|
24
|
-
Draft.new(ARGV[1])
|
25
|
-
when "page"
|
26
|
-
Page.new(ARGV[1])
|
27
|
-
when "post"
|
28
|
-
Post.new(ARGV[1])
|
29
|
-
when "publish"
|
30
|
-
Draft.new(ARGV[1]).publish
|
31
|
-
else
|
32
|
-
puts "Invalid option. Run `diary --help`."
|
33
|
-
end
|
34
|
-
when 3
|
35
|
-
case ARGV[0]
|
36
|
-
when "publish"
|
37
|
-
Draft.new(ARGV[1]).publish(ARGV[2])
|
38
|
-
else
|
39
|
-
puts "Invalid option. Run `diary --help`."
|
40
|
-
end
|
41
|
-
else
|
42
|
-
puts "Invalid option(s). Run `diary --help`."
|
43
|
-
end
|
4
|
+
Diary::CLI.command(*ARGV)
|
data/diary.gemspec
CHANGED
@@ -1,67 +1,26 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/diary/version", __FILE__)
|
5
3
|
|
6
4
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
5
|
+
s.name = "diary"
|
6
|
+
s.version = Diary::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Robin Clart"]
|
9
|
+
s.email = ["robin@charlin.be"]
|
10
|
+
s.homepage = "http://rubygems.org/gems/diary"
|
11
|
+
s.summary = "Another static blog generator"
|
12
|
+
s.description = "Diary makes it easy to maintain a file based website with template blog posts and pages."
|
9
13
|
|
10
|
-
s.required_rubygems_version =
|
11
|
-
s.
|
12
|
-
s.date = %q{2010-07-02}
|
13
|
-
s.default_executable = %q{diary}
|
14
|
-
s.email = %q{robin@clart.me}
|
15
|
-
s.executables = ["diary"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE",
|
18
|
-
"README.rdoc"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.rdoc",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"bin/diary",
|
27
|
-
"diary.gemspec",
|
28
|
-
"lib/diary.rb",
|
29
|
-
"lib/diary/cli.rb",
|
30
|
-
"lib/diary/draft.rb",
|
31
|
-
"lib/diary/item.rb",
|
32
|
-
"lib/diary/message.rb",
|
33
|
-
"lib/diary/output.rb",
|
34
|
-
"lib/diary/page.rb",
|
35
|
-
"lib/diary/post.rb",
|
36
|
-
"lib/diary/site.rb",
|
37
|
-
"lib/diary/template.rb",
|
38
|
-
"test/helper.rb",
|
39
|
-
"test/test_diary.rb"
|
40
|
-
]
|
41
|
-
s.homepage = %q{http://github.com/robinclart/diary}
|
42
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
43
|
-
s.require_paths = ["lib"]
|
44
|
-
s.rubygems_version = %q{1.3.6}
|
45
|
-
s.summary = %q{Dead Simple, Static Blog Generator}
|
46
|
-
s.test_files = [
|
47
|
-
"test/helper.rb",
|
48
|
-
"test/test_diary.rb"
|
49
|
-
]
|
14
|
+
s.required_rubygems_version = ">= 1.3.6"
|
15
|
+
s.rubyforge_project = "diary"
|
50
16
|
|
51
|
-
|
52
|
-
|
53
|
-
|
17
|
+
s.add_dependency "activesupport", ">= 3.0.0"
|
18
|
+
s.add_dependency "bluecloth", ">= 2.0.11"
|
19
|
+
s.add_dependency "sinatra", ">= 1.1.0"
|
54
20
|
|
55
|
-
|
56
|
-
s.add_runtime_dependency(%q<liquid>, [">= 2.0.0"])
|
57
|
-
s.add_runtime_dependency(%q<bluecloth>, [">= 2.0.7"])
|
58
|
-
else
|
59
|
-
s.add_dependency(%q<liquid>, [">= 2.0.0"])
|
60
|
-
s.add_dependency(%q<bluecloth>, [">= 2.0.7"])
|
61
|
-
end
|
62
|
-
else
|
63
|
-
s.add_dependency(%q<liquid>, [">= 2.0.0"])
|
64
|
-
s.add_dependency(%q<bluecloth>, [">= 2.0.7"])
|
65
|
-
end
|
66
|
-
end
|
21
|
+
s.add_development_dependency "bundler", ">= 1.0.0.rc.6"
|
67
22
|
|
23
|
+
s.files = `git ls-files`.split("\n")
|
24
|
+
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
25
|
+
s.require_path = 'lib'
|
26
|
+
end
|
data/lib/diary.rb
CHANGED
@@ -1,30 +1,33 @@
|
|
1
|
-
$:.unshift File.dirname(__FILE__)
|
2
|
-
|
3
|
-
# rubygems
|
4
|
-
require 'rubygems'
|
5
|
-
|
6
|
-
# stdlib
|
7
1
|
require 'fileutils'
|
8
2
|
require 'date'
|
9
3
|
require 'yaml'
|
10
4
|
require 'ostruct'
|
5
|
+
require 'singleton'
|
6
|
+
require 'erb'
|
11
7
|
|
12
|
-
|
13
|
-
require 'liquid'
|
8
|
+
require 'active_support/inflector'
|
14
9
|
require 'bluecloth'
|
15
10
|
|
16
|
-
# internals
|
17
|
-
require 'diary/message'
|
18
|
-
require 'diary/site'
|
19
|
-
require 'diary/template'
|
20
|
-
require 'diary/output'
|
21
|
-
require 'diary/item'
|
22
|
-
require 'diary/draft'
|
23
|
-
require 'diary/page'
|
24
|
-
require 'diary/post'
|
25
|
-
|
26
11
|
module Diary
|
27
|
-
|
28
|
-
|
12
|
+
autoload :CLI, "diary/cli"
|
13
|
+
autoload :Message, "diary/message"
|
14
|
+
autoload :Snippet, "diary/snippet"
|
15
|
+
autoload :VERSION, "diary/version"
|
16
|
+
|
17
|
+
module Item
|
18
|
+
autoload :Base, "diary/item/base"
|
19
|
+
autoload :Data, "diary/item/data"
|
20
|
+
autoload :Template, "diary/item/template"
|
21
|
+
autoload :Url, "diary/item/url"
|
22
|
+
autoload :Snippet, "diary/item/snippet"
|
23
|
+
autoload :Output, "diary/item/output"
|
24
|
+
autoload :Creator, "diary/item/creator"
|
25
|
+
autoload :Finder, "diary/item/finder"
|
29
26
|
end
|
27
|
+
|
28
|
+
extend Message::Shorthand
|
29
|
+
end
|
30
|
+
|
31
|
+
Dir["#{File.dirname(__FILE__)}/diary/items/*.rb"].sort.each do |path|
|
32
|
+
require "diary/items/#{File.basename(path, '.rb')}"
|
30
33
|
end
|
data/lib/diary/cli.rb
CHANGED
@@ -1,47 +1,9 @@
|
|
1
|
-
require 'optparse'
|
2
|
-
|
3
1
|
module Diary
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
# We set default values here.
|
8
|
-
options = OpenStruct.new
|
9
|
-
options.verbose = false
|
10
|
-
options.force = false
|
11
|
-
|
12
|
-
opts = OptionParser.new do |opts|
|
13
|
-
opts.banner = "Usage: diary ACTION [-vf]"
|
14
|
-
|
15
|
-
opts.separator "\nSpecific options:"
|
16
|
-
|
17
|
-
# Verbose
|
18
|
-
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
19
|
-
options.verbose = v
|
20
|
-
end
|
21
|
-
|
22
|
-
# Force
|
23
|
-
opts.on("-f", "--[no-]force", "Force all items to compile") do |f|
|
24
|
-
options.force = f
|
25
|
-
end
|
26
|
-
|
27
|
-
opts.separator "\nCommon options:"
|
28
|
-
|
29
|
-
# No argument, shows at tail. This will print an options summary.
|
30
|
-
# Try it and see!
|
31
|
-
opts.on_tail("-h", "--help", "Show this message") do
|
32
|
-
puts opts
|
33
|
-
exit
|
34
|
-
end
|
35
|
-
|
36
|
-
# Another typical switch to print the version.
|
37
|
-
opts.on_tail("--version", "Show version") do
|
38
|
-
puts "diary #{Diary.version}"
|
39
|
-
exit
|
40
|
-
end
|
41
|
-
end
|
2
|
+
module CLI
|
3
|
+
autoload :Parser, "diary/cli/parser"
|
4
|
+
autoload :Commands, "diary/cli/commands"
|
42
5
|
|
43
|
-
|
44
|
-
|
45
|
-
end
|
6
|
+
extend Parser
|
7
|
+
extend Commands
|
46
8
|
end
|
47
9
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Dir["#{File.dirname(__FILE__)}/commands/*.rb"].sort.each do |path|
|
2
|
+
require "diary/cli/commands/#{File.basename(path, '.rb')}"
|
3
|
+
end
|
4
|
+
|
5
|
+
module Diary
|
6
|
+
module CLI
|
7
|
+
module Commands
|
8
|
+
def command(*args)
|
9
|
+
options = Diary::CLI.parse(args)
|
10
|
+
|
11
|
+
if args.size == 0
|
12
|
+
return
|
13
|
+
end
|
14
|
+
|
15
|
+
if respond_to?(args.first)
|
16
|
+
self.send(args.shift, args, options)
|
17
|
+
elsif
|
18
|
+
Diary.message :error, "No command found", :red
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Diary
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
def compile(args, options)
|
5
|
+
if (args.first == "all") or (args.size == 0)
|
6
|
+
Post.all.each { |p| p.output(options.force) }
|
7
|
+
Page.all.each { |p| p.output(options.force) }
|
8
|
+
elsif args.size >= 2
|
9
|
+
const_get(args.shift.capitalize).find(args.first).output(options.force)
|
10
|
+
else
|
11
|
+
const_get(args.shift.capitalize).all.each { |p| p.output(options.force) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Diary
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
def init(args, options)
|
5
|
+
# Create directories
|
6
|
+
%w{ templates posts pages snippets public }.each do |directory|
|
7
|
+
create_dir directory
|
8
|
+
end
|
9
|
+
|
10
|
+
# Create files
|
11
|
+
create_file "templates/index.html.erb", "<%= content %>"
|
12
|
+
create_file "config.yml", "sync:\n user: \n server: \n path: \n"
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def create_dir(path)
|
18
|
+
unless File.exists?(path)
|
19
|
+
FileUtils.mkdir_p(path)
|
20
|
+
|
21
|
+
Diary.message :create, path, :green
|
22
|
+
else
|
23
|
+
Diary.message :exist, path, :yellow
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_file(path, content)
|
28
|
+
unless File.exists?(path)
|
29
|
+
f = File.new(path, "w+")
|
30
|
+
f.puts(content)
|
31
|
+
f.close
|
32
|
+
|
33
|
+
Diary.message :create, path, :green
|
34
|
+
else
|
35
|
+
Diary.message :exist, path, :yellow
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Diary
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
def server(args, options)
|
5
|
+
Diary.message :start, "Diary server is starting...", :green
|
6
|
+
`ruby #{File.expand_path("../../../server.rb", __FILE__)}`
|
7
|
+
rescue Interrupt
|
8
|
+
Diary.message :close, "Diary server is closing...", :red
|
9
|
+
sleep(2)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Diary
|
2
|
+
module CLI
|
3
|
+
module Commands
|
4
|
+
def sync(args, options)
|
5
|
+
Diary.message :sync, sync_path, :magenta
|
6
|
+
`rsync --verbose --progress --stats --compress --recursive --times --perms --links --delete --exclude "*bak" ./public/* #{sync_path}`
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def sync_path
|
12
|
+
"#{sync_config.user}@#{sync_config.server}:#{sync_config.path}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def sync_config
|
16
|
+
OpenStruct.new(YAML.load_file("config.yml")["sync"]) if File.exists?("config.yml")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|