hx 0.8.3 → 0.8.4
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/Rakefile +6 -8
- data/VERSION +1 -1
- data/lib/hx.rb +6 -4
- data/lib/hx/backend/rawfiles.rb +1 -0
- data/lib/hx/cli.rb +2 -1
- data/spec/rawfiles_spec.rb +54 -0
- data/spec/spec_helper.rb +2 -7
- metadata +36 -17
- data/.gitignore +0 -21
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ EOS
|
|
15
15
|
gem.email = "mental@rydia.net"
|
16
16
|
gem.homepage = "http://github.com/mental/hx"
|
17
17
|
gem.authors = ["MenTaLguY"]
|
18
|
-
gem.add_development_dependency "rspec", ">=
|
18
|
+
gem.add_development_dependency "rspec", ">= 2.0.0"
|
19
19
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
20
20
|
end
|
21
21
|
Jeweler::GemcutterTasks.new
|
@@ -23,15 +23,13 @@ rescue LoadError
|
|
23
23
|
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
24
24
|
end
|
25
25
|
|
26
|
-
require '
|
27
|
-
|
28
|
-
spec.
|
29
|
-
spec.spec_files = FileList['spec/**/*_spec.rb']
|
26
|
+
require 'rspec/core/rake_task'
|
27
|
+
RSpec::Core::RakeTask.new(:spec) do |spec|
|
28
|
+
spec.rspec_opts = "--color"
|
30
29
|
end
|
31
30
|
|
32
|
-
|
33
|
-
spec.
|
34
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
31
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
32
|
+
spec.rspec_opts = "--color"
|
35
33
|
spec.rcov = true
|
36
34
|
end
|
37
35
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.4
|
data/lib/hx.rb
CHANGED
@@ -541,22 +541,24 @@ class Site
|
|
541
541
|
end
|
542
542
|
end
|
543
543
|
|
544
|
-
def self.refresh_file(pathname, content, update_time)
|
544
|
+
def self.refresh_file(pathname, content, update_time, executable=false)
|
545
545
|
begin
|
546
546
|
return false if update_time and update_time < pathname.mtime
|
547
547
|
rescue Errno::ENOENT
|
548
548
|
end
|
549
|
-
write_file(pathname, content)
|
549
|
+
write_file(pathname, content, executable)
|
550
550
|
true
|
551
551
|
end
|
552
552
|
|
553
|
-
def self.write_file(pathname, content)
|
553
|
+
def self.write_file(pathname, content, executable=false)
|
554
554
|
parent = pathname.parent
|
555
555
|
parent.mkpath()
|
556
556
|
tempfile = Tempfile.new('.hx-out', parent.to_s)
|
557
557
|
begin
|
558
558
|
File.open(tempfile.path, "wb") { |stream| stream << content.to_s }
|
559
|
-
|
559
|
+
base_mode = 0666
|
560
|
+
base_mode |= 0111 if executable
|
561
|
+
File.chmod(base_mode & ~File.umask, tempfile.path)
|
560
562
|
File.rename(tempfile.path, pathname.to_s)
|
561
563
|
ensure
|
562
564
|
tempfile.unlink
|
data/lib/hx/backend/rawfiles.rb
CHANGED
data/lib/hx/cli.rb
CHANGED
@@ -114,7 +114,8 @@ def self.do_gen(site, update_only)
|
|
114
114
|
else
|
115
115
|
update_time = nil
|
116
116
|
end
|
117
|
-
written = Hx.refresh_file(pathname, content, update_time
|
117
|
+
written = Hx.refresh_file(pathname, content, update_time,
|
118
|
+
entry['executable'])
|
118
119
|
puts "===> #{path}" if written
|
119
120
|
end
|
120
121
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
require 'hx/backend/rawfiles'
|
4
|
+
require 'enumerator'
|
5
|
+
require 'set'
|
6
|
+
require 'tmpdir'
|
7
|
+
|
8
|
+
describe Hx::Backend::RawFiles do
|
9
|
+
before :each do
|
10
|
+
@dir = Dir.mktmpdir
|
11
|
+
@input = Hx::Backend::RawFiles.new(Hx::NULL_INPUT, {:entry_dir => @dir})
|
12
|
+
end
|
13
|
+
|
14
|
+
after :each do
|
15
|
+
FileUtils.rm_rf @dir
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should retrieve file content" do
|
19
|
+
content = "foobar"
|
20
|
+
File.open(File.join(@dir, 'test'), 'w') { |s| s.write(content) }
|
21
|
+
@input.get_entry('test')['content'].to_s.should == content
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should enumerate files" do
|
25
|
+
entry_names = Set.new %q(foo bar baz)
|
26
|
+
for name in entry_names
|
27
|
+
File.open(File.join(@dir, name), 'w') {}
|
28
|
+
end
|
29
|
+
enum = Enumerable::Enumerator.new(@input, :each_entry_path, Hx::Path::ALL)
|
30
|
+
Set.new(enum).should == entry_names
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should retreive file content lazily" do
|
34
|
+
real_content = "foobar"
|
35
|
+
File.open(File.join(@dir, 'test'), 'w') { |s| s.write("blargh") }
|
36
|
+
entry_content = @input.get_entry('test')['content']
|
37
|
+
File.open(File.join(@dir, 'test'), 'w') { |s| s.write(real_content) }
|
38
|
+
entry_content.to_s.should == real_content
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should retrieve file mtime" do
|
42
|
+
File.open(File.join(@dir, 'test'), 'w') {}
|
43
|
+
time = Time.at(0)
|
44
|
+
File.utime(time, time, File.join(@dir, 'test'))
|
45
|
+
@input.get_entry('test')['updated'].should == time
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should return the executable bit" do
|
49
|
+
File.open(File.join(@dir, 'regular'), 'w') {}
|
50
|
+
File.open(File.join(@dir, 'executable'), 'w') { |s| s.chmod(0775) }
|
51
|
+
@input.get_entry('regular')['executable'].should be_false
|
52
|
+
@input.get_entry('executable')['executable'].should be_true
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -2,8 +2,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
3
|
require 'hx'
|
4
4
|
require 'ostruct'
|
5
|
-
require '
|
6
|
-
require 'spec/autorun'
|
5
|
+
require 'rspec'
|
7
6
|
begin
|
8
7
|
require 'rubygems'
|
9
8
|
rescue LoadError
|
@@ -36,12 +35,8 @@ class FakeInput
|
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
|
-
|
38
|
+
RSpec::Matchers.define :accept do |value|
|
40
39
|
match do |acceptor|
|
41
40
|
acceptor.accept?(value)
|
42
41
|
end
|
43
42
|
end
|
44
|
-
|
45
|
-
Spec::Runner.configure do |config|
|
46
|
-
|
47
|
-
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 55
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 8
|
9
|
+
- 4
|
10
|
+
version: 0.8.4
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- MenTaLguY
|
@@ -9,19 +15,25 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2011-02-09 00:00:00 -08:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
29
|
+
hash: 15
|
30
|
+
segments:
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
- 0
|
34
|
+
version: 2.0.0
|
35
|
+
type: :development
|
36
|
+
version_requirements: *id001
|
25
37
|
description: |
|
26
38
|
Hx is a simple static site generator in the spirit of Hobix which reads a
|
27
39
|
YAML configuration file, constructs a filter graph, and generates output
|
@@ -38,7 +50,6 @@ extra_rdoc_files:
|
|
38
50
|
- README.rdoc
|
39
51
|
files:
|
40
52
|
- .document
|
41
|
-
- .gitignore
|
42
53
|
- LICENSE
|
43
54
|
- README.rdoc
|
44
55
|
- Rakefile
|
@@ -64,6 +75,7 @@ files:
|
|
64
75
|
- spec/overlay_spec.rb
|
65
76
|
- spec/pathops_spec.rb
|
66
77
|
- spec/rack_spec.rb
|
78
|
+
- spec/rawfiles_spec.rb
|
67
79
|
- spec/selector_spec.rb
|
68
80
|
- spec/site_spec.rb
|
69
81
|
- spec/spec.opts
|
@@ -73,37 +85,44 @@ homepage: http://github.com/mental/hx
|
|
73
85
|
licenses: []
|
74
86
|
|
75
87
|
post_install_message:
|
76
|
-
rdoc_options:
|
77
|
-
|
88
|
+
rdoc_options: []
|
89
|
+
|
78
90
|
require_paths:
|
79
91
|
- lib
|
80
92
|
required_ruby_version: !ruby/object:Gem::Requirement
|
93
|
+
none: false
|
81
94
|
requirements:
|
82
95
|
- - ">="
|
83
96
|
- !ruby/object:Gem::Version
|
97
|
+
hash: 3
|
98
|
+
segments:
|
99
|
+
- 0
|
84
100
|
version: "0"
|
85
|
-
version:
|
86
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
87
103
|
requirements:
|
88
104
|
- - ">="
|
89
105
|
- !ruby/object:Gem::Version
|
106
|
+
hash: 3
|
107
|
+
segments:
|
108
|
+
- 0
|
90
109
|
version: "0"
|
91
|
-
version:
|
92
110
|
requirements: []
|
93
111
|
|
94
112
|
rubyforge_project:
|
95
|
-
rubygems_version: 1.3.
|
113
|
+
rubygems_version: 1.3.7
|
96
114
|
signing_key:
|
97
115
|
specification_version: 3
|
98
116
|
summary: A miniature static site generator.
|
99
117
|
test_files:
|
100
|
-
- spec/spec_helper.rb
|
101
118
|
- spec/cache_spec.rb
|
102
119
|
- spec/hx_dummy.rb
|
103
|
-
- spec/nullinput_spec.rb
|
104
|
-
- spec/site_spec.rb
|
105
120
|
- spec/hx_dummy2.rb
|
106
|
-
- spec/
|
121
|
+
- spec/nullinput_spec.rb
|
107
122
|
- spec/overlay_spec.rb
|
108
123
|
- spec/pathops_spec.rb
|
124
|
+
- spec/rack_spec.rb
|
125
|
+
- spec/rawfiles_spec.rb
|
109
126
|
- spec/selector_spec.rb
|
127
|
+
- spec/site_spec.rb
|
128
|
+
- spec/spec_helper.rb
|