pith 0.0.12 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/bin/pith CHANGED
@@ -3,87 +3,96 @@
3
3
  $: << File.expand_path("../../lib", __FILE__)
4
4
 
5
5
  require "rubygems"
6
- require "optparse"
6
+ require "clamp"
7
7
  require "pathname"
8
8
  require "pith/version"
9
9
  require "thin"
10
10
 
11
- $input_dir = Pathname(".")
12
- $interval = 2
13
- $port = 4321
14
-
15
- BANNER = <<EOF
16
- usage: pith [OPTIONS] [COMMAND]
17
-
18
- Commands: (default: "build")
19
-
20
- build Generate the website (into OUTPUT_DIR)
21
- watch Monitor INPUT_DIR, and incrementally rebuild OUTPUT_DIR
22
- serve Serve the generated website at "http://localhost:#{$port}"
11
+ require "pith/console_logger"
12
+ require "pith/project"
23
13
 
24
- EOF
14
+ class PithCommand < Clamp::Command
25
15
 
26
- OptionParser.new do |opts|
27
- opts.banner = BANNER
28
- opts.version = Pith::VERSION
29
- opts.separator " Options:"
30
- opts.on("-i", "--input INPUT_DIR", %[Input directory (default: ".")]) do |dir|
31
- $input_dir = Pathname(dir)
32
- end
33
- opts.on("-o", "--output OUTPUT_DIR", %[Output directory (default: "INPUT_DIR/_out")]) do |dir|
34
- $output_dir = Pathname(dir)
16
+ option ["-i", "--input"], "INPUT_DIR", "Input directory", :attribute_name => :input_dir, :default => "." do |dir|
17
+ Pathname(dir)
35
18
  end
36
- opts.on("-n", "--interval N", Integer, %[Rebuild interval (default: #{$interval})]) do |n|
37
- $interval = n
19
+
20
+ option ["-o", "--output"], "OUTPUT_DIR", "Output directory", :attribute_name => :output_dir, :default => "INPUT_DIR/_out" do |dir|
21
+ Pathname(dir)
38
22
  end
39
- opts.on("-p", "--port N", Integer, %[Web-server port (default: #{$port})]) do |port|
40
- $port = port
23
+
24
+ option ["-n", "--interval"], "INTERVAL", "Rebuild interval", :default => 2 do |n|
25
+ Integer(n)
41
26
  end
42
- opts.on_tail("-h", "--help", "Show this message") do
43
- puts opts
44
- exit
27
+
28
+ option ["-p", "--port"], "PORT", "Web-server port", :default => 4321 do |n|
29
+ Integer(n)
45
30
  end
46
- end.parse!
47
31
 
48
- pith_dir = $input_dir + "_pith"
49
- unless pith_dir.directory?
50
- $stderr.puts %(ERROR: No "#{pith_dir}" directory ... this doesn't look right!)
51
- exit(1)
52
- end
32
+ option "--version", :flag, "Show version" do
33
+ puts Pith::VERSION
34
+ exit(0)
35
+ end
53
36
 
54
- unless $output_dir
55
- $output_dir = $input_dir + "_out"
56
- end
37
+ subcommand "build", "Generate the website (into OUTPUT_DIR)" do
38
+ def execute
39
+ build
40
+ end
41
+ end
57
42
 
58
- puts %{Generating to "#{$output_dir}"}
43
+ subcommand "watch", "Monitor INPUT_DIR; re-generate as required" do
44
+ def execute
45
+ watch
46
+ end
47
+ end
48
+
49
+ subcommand "serve", "Serve the generated website" do
50
+ def execute
51
+ build
52
+ Thread.new { watch }
53
+ serve
54
+ end
55
+ end
59
56
 
60
- require "pith/console_logger"
61
- require "pith/project"
57
+ protected
62
58
 
63
- @project = Pith::Project.new(:input_dir => $input_dir, :output_dir => $output_dir)
64
- @project.logger = Pith::ConsoleLogger.new
59
+ def default_input_dir
60
+ Pathname(".")
61
+ end
65
62
 
66
- def build
67
- @project.build
68
- end
63
+ def default_output_dir
64
+ input_dir + "_out"
65
+ end
66
+
67
+ def project
68
+ unless @project
69
+ pith_dir = input_dir + "_pith"
70
+ unless pith_dir.directory?
71
+ signal_usage_error %(No "#{pith_dir}" directory ... this doesn't look right!)
72
+ end
73
+ puts %{Generating to "#{output_dir}"}
74
+ @project = Pith::Project.new(:input_dir => input_dir, :output_dir => output_dir)
75
+ @project.logger = Pith::ConsoleLogger.new
76
+ end
77
+ @project
78
+ end
69
79
 
70
- def watch
71
- require "pith/watcher"
72
- Pith::Watcher.new(@project, :interval => $interval).call
73
- end
80
+ def build
81
+ project.build
82
+ end
74
83
 
75
- def serve
84
+ def watch
85
+ require "pith/watcher"
86
+ Pith::Watcher.new(project, :interval => interval).call
87
+ end
76
88
 
77
- require "pith/server"
78
- server = Pith::Server.new(@project)
89
+ def serve
90
+ require "pith/server"
91
+ server = Pith::Server.new(project)
92
+ puts %{>>> Now taking the Pith at "http://localhost:#{port}"}
93
+ Rack::Handler.get("thin").run(server, :Port => port)
94
+ end
79
95
 
80
- build
81
- Thread.new { watch }
82
-
83
- puts %{>>> Now taking the Pith at "http://localhost:#{$port}"}
84
- Rack::Handler.get("thin").run(server, :Port => $port)
85
-
86
96
  end
87
97
 
88
- action = ARGV.shift || "build"
89
- self.send(action)
98
+ PithCommand.run
@@ -46,7 +46,7 @@ module Pith
46
46
  # Returns a fully-qualified Pathname of the asset.
47
47
  #
48
48
  def resolve_path(ref)
49
- ref = ref.to_str
49
+ ref = ref.to_s
50
50
  if ref[0,1] == "/"
51
51
  Pathname(ref[1..-1])
52
52
  else
@@ -14,13 +14,13 @@ module Pith
14
14
  class Template < Abstract
15
15
 
16
16
  def self.can_handle?(path)
17
- path.to_str =~ /\.([^.]+)$/ && Tilt.registered?($1)
17
+ path.to_s =~ /\.([^.]+)$/ && Tilt.registered?($1)
18
18
  end
19
19
 
20
20
  def initialize(project, path)
21
21
  raise(ArgumentError, "#{path} is not a template") unless Template.can_handle?(path)
22
22
  super(project, path)
23
- path.to_str =~ /^(.+)\.(.+)$/ || raise("huh?")
23
+ path.to_s =~ /^(.+)\.(.+)$/ || raise("huh?")
24
24
  @output_path = Pathname($1)
25
25
  @type = $2
26
26
  end
@@ -125,7 +125,7 @@ module Pith
125
125
  else
126
126
  input.rewind
127
127
  end
128
- @tilt_template = Tilt.new(file, input.lineno + 1) { input.read }
128
+ @tilt_template = Tilt.new(file.to_s, input.lineno + 1) { input.read }
129
129
  end
130
130
  end
131
131
 
@@ -109,7 +109,7 @@ module Pith
109
109
  config_file = input_dir + "_pith/config.rb"
110
110
  project = self
111
111
  if config_file.exist?
112
- eval(config_file.read, binding, config_file)
112
+ eval(config_file.read, binding, config_file.to_s, 1)
113
113
  end
114
114
  end
115
115
 
@@ -53,7 +53,7 @@ module Pith
53
53
  end
54
54
 
55
55
  def relative_url_to(target_path)
56
- url = target_path.relative_path_from(page.path.parent).to_str
56
+ url = target_path.relative_path_from(page.path.parent).to_s
57
57
  url = url.sub(/index\.html$/, "") if project.assume_directory_index
58
58
  url = url.sub(/\.html$/, "") if project.assume_content_negotiation
59
59
  url = "./" if url.empty?
@@ -1,3 +1,3 @@
1
1
  module Pith
2
- VERSION = "0.0.12".freeze
2
+ VERSION = "0.1.1".freeze
3
3
  end
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pith
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 12
10
- version: 0.0.12
4
+ prerelease:
5
+ version: 0.1.1
11
6
  platform: ruby
12
7
  authors:
13
8
  - Mike Williams
@@ -15,8 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2010-11-30 00:00:00 +11:00
19
- default_executable: pith
13
+ date: 2011-05-08 00:00:00 Z
20
14
  dependencies:
21
15
  - !ruby/object:Gem::Dependency
22
16
  name: tilt
@@ -26,10 +20,6 @@ dependencies:
26
20
  requirements:
27
21
  - - ~>
28
22
  - !ruby/object:Gem::Version
29
- hash: 13
30
- segments:
31
- - 1
32
- - 1
33
23
  version: "1.1"
34
24
  type: :runtime
35
25
  version_requirements: *id001
@@ -41,11 +31,6 @@ dependencies:
41
31
  requirements:
42
32
  - - ~>
43
33
  - !ruby/object:Gem::Version
44
- hash: 21
45
- segments:
46
- - 1
47
- - 0
48
- - 1
49
34
  version: 1.0.1
50
35
  type: :runtime
51
36
  version_requirements: *id002
@@ -57,11 +42,6 @@ dependencies:
57
42
  requirements:
58
43
  - - ~>
59
44
  - !ruby/object:Gem::Version
60
- hash: 29
61
- segments:
62
- - 1
63
- - 2
64
- - 1
65
45
  version: 1.2.1
66
46
  type: :runtime
67
47
  version_requirements: *id003
@@ -73,102 +53,86 @@ dependencies:
73
53
  requirements:
74
54
  - - ~>
75
55
  - !ruby/object:Gem::Version
76
- hash: 17
77
- segments:
78
- - 1
79
- - 2
80
- - 7
81
56
  version: 1.2.7
82
57
  type: :runtime
83
58
  version_requirements: *id004
84
59
  - !ruby/object:Gem::Dependency
85
- name: rake
60
+ name: clamp
86
61
  prerelease: false
87
62
  requirement: &id005 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.1.7
68
+ type: :runtime
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake
72
+ prerelease: false
73
+ requirement: &id006 !ruby/object:Gem::Requirement
88
74
  none: false
89
75
  requirements:
90
76
  - - ">="
91
77
  - !ruby/object:Gem::Version
92
- hash: 3
93
- segments:
94
- - 0
95
78
  version: "0"
96
79
  type: :development
97
- version_requirements: *id005
80
+ version_requirements: *id006
98
81
  - !ruby/object:Gem::Dependency
99
82
  name: rspec
100
83
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
84
+ requirement: &id007 !ruby/object:Gem::Requirement
102
85
  none: false
103
86
  requirements:
104
87
  - - ~>
105
88
  - !ruby/object:Gem::Version
106
- hash: 13
107
- segments:
108
- - 1
109
- - 2
110
- - 9
111
89
  version: 1.2.9
112
90
  type: :development
113
- version_requirements: *id006
91
+ version_requirements: *id007
114
92
  - !ruby/object:Gem::Dependency
115
93
  name: cucumber
116
94
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
95
+ requirement: &id008 !ruby/object:Gem::Requirement
118
96
  none: false
119
97
  requirements:
120
98
  - - ~>
121
99
  - !ruby/object:Gem::Version
122
- hash: 57
123
- segments:
124
- - 0
125
- - 8
126
- - 3
127
100
  version: 0.8.3
128
101
  type: :development
129
- version_requirements: *id007
102
+ version_requirements: *id008
130
103
  - !ruby/object:Gem::Dependency
131
104
  name: haml
132
105
  prerelease: false
133
- requirement: &id008 !ruby/object:Gem::Requirement
106
+ requirement: &id009 !ruby/object:Gem::Requirement
134
107
  none: false
135
108
  requirements:
136
109
  - - ">="
137
110
  - !ruby/object:Gem::Version
138
- hash: 3
139
- segments:
140
- - 0
141
111
  version: "0"
142
112
  type: :development
143
- version_requirements: *id008
113
+ version_requirements: *id009
144
114
  - !ruby/object:Gem::Dependency
145
115
  name: RedCloth
146
116
  prerelease: false
147
- requirement: &id009 !ruby/object:Gem::Requirement
117
+ requirement: &id010 !ruby/object:Gem::Requirement
148
118
  none: false
149
119
  requirements:
150
120
  - - ">="
151
121
  - !ruby/object:Gem::Version
152
- hash: 3
153
- segments:
154
- - 0
155
122
  version: "0"
156
123
  type: :development
157
- version_requirements: *id009
124
+ version_requirements: *id010
158
125
  - !ruby/object:Gem::Dependency
159
126
  name: rdiscount
160
127
  prerelease: false
161
- requirement: &id010 !ruby/object:Gem::Requirement
128
+ requirement: &id011 !ruby/object:Gem::Requirement
162
129
  none: false
163
130
  requirements:
164
131
  - - ">="
165
132
  - !ruby/object:Gem::Version
166
- hash: 3
167
- segments:
168
- - 0
169
133
  version: "0"
170
134
  type: :development
171
- version_requirements: *id010
135
+ version_requirements: *id011
172
136
  description: |
173
137
  Pith builds static websites, using markup/template languages including Haml, Sass, ERb, Liquid, Markdown and Textile.
174
138
 
@@ -217,8 +181,6 @@ files:
217
181
  - lib/pith.rb
218
182
  - lib/pith.rb~
219
183
  - sample/_layouts/standard.haml
220
- - sample/_out/blah/deblah.txt
221
- - sample/_out/features/stuff.html
222
184
  - sample/_out/index.html
223
185
  - sample/_out/stylesheets/app.css
224
186
  - sample/index.html.haml
@@ -269,7 +231,6 @@ files:
269
231
  - features/verbatim.feature~
270
232
  - cucumber.yml
271
233
  - bin/pith
272
- has_rdoc: true
273
234
  homepage: http://github.com/mdub/pith
274
235
  licenses: []
275
236
 
@@ -283,23 +244,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
283
244
  requirements:
284
245
  - - ">="
285
246
  - !ruby/object:Gem::Version
286
- hash: 3
287
- segments:
288
- - 0
289
247
  version: "0"
290
248
  required_rubygems_version: !ruby/object:Gem::Requirement
291
249
  none: false
292
250
  requirements:
293
251
  - - ">="
294
252
  - !ruby/object:Gem::Version
295
- hash: 3
296
- segments:
297
- - 0
298
253
  version: "0"
299
254
  requirements: []
300
255
 
301
256
  rubyforge_project:
302
- rubygems_version: 1.3.7
257
+ rubygems_version: 1.7.2
303
258
  signing_key:
304
259
  specification_version: 3
305
260
  summary: A static website generator
@@ -348,3 +303,4 @@ test_files:
348
303
  - features/textile.feature~
349
304
  - features/verbatim.feature~
350
305
  - cucumber.yml
306
+ has_rdoc:
@@ -1 +0,0 @@
1
- dsfsdf