pith 0.0.12 → 0.1.1

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/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