palimpsest 0.0.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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.kateproject +4 -0
- data/.rspec +2 -0
- data/.travis.yml +3 -0
- data/.yardopts +7 -0
- data/CHANGELOG.md +10 -0
- data/Gemfile +4 -0
- data/Guardfile +10 -0
- data/LICENSE.txt +20 -0
- data/README.md +70 -0
- data/Rakefile +7 -0
- data/lib/palimpsest/assets.rb +189 -0
- data/lib/palimpsest/environment.rb +263 -0
- data/lib/palimpsest/utility.rb +69 -0
- data/lib/palimpsest/version.rb +4 -0
- data/lib/palimpsest.rb +9 -0
- data/palimpsest.gemspec +40 -0
- data/spec/assets_spec.rb +360 -0
- data/spec/environment_spec.rb +305 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/utility_spec.rb +56 -0
- metadata +297 -0
@@ -0,0 +1,305 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Palimpsest::Environment do
|
4
|
+
|
5
|
+
let(:site_1) { double name: 'site_1' }
|
6
|
+
let(:site_2) { double name: 'site_2' }
|
7
|
+
|
8
|
+
subject(:environment) { Palimpsest::Environment.new }
|
9
|
+
|
10
|
+
after :all do
|
11
|
+
Dir.glob("#{Palimpsest::Environment.new.options[:tmp_dir]}/#{Palimpsest::Environment.new.options[:dir_prefix]}*").each do |dir|
|
12
|
+
FileUtils.remove_entry_secure dir
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ".new" do
|
17
|
+
|
18
|
+
it "sets default options" do
|
19
|
+
expect(environment.options).to eq Palimpsest::Environment::DEFAULT_OPTIONS
|
20
|
+
end
|
21
|
+
|
22
|
+
it "merges default options" do
|
23
|
+
environment = Palimpsest::Environment.new options: { tmp_dir: '/tmp/path' }
|
24
|
+
expect(environment.options).to eq Palimpsest::Environment::DEFAULT_OPTIONS.merge(tmp_dir: '/tmp/path')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#options" do
|
29
|
+
|
30
|
+
it "merges with default options" do
|
31
|
+
environment.options[:tmp_dir] = '/tmp/path'
|
32
|
+
expect(environment.options).to eq Palimpsest::Environment::DEFAULT_OPTIONS.merge(tmp_dir: '/tmp/path')
|
33
|
+
end
|
34
|
+
|
35
|
+
it "can be called twice and merge options" do
|
36
|
+
environment.options[:tmp_dir] = '/tmp/path'
|
37
|
+
environment.options[:dir_prefix] = '/tmp/path'
|
38
|
+
expect(environment.options).to eq Palimpsest::Environment::DEFAULT_OPTIONS.merge(tmp_dir: '/tmp/path', dir_prefix: '/tmp/path')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#site" do
|
43
|
+
|
44
|
+
it "cannot be redefinfed while populated" do
|
45
|
+
environment.site = site_1
|
46
|
+
allow(environment).to receive(:populated).and_return(true)
|
47
|
+
expect { environment.site = site_2 }.to raise_error RuntimeError, /populated/
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#treeish" do
|
52
|
+
|
53
|
+
it "must be a string" do
|
54
|
+
expect { environment.treeish = 1 }.to raise_error TypeError
|
55
|
+
end
|
56
|
+
|
57
|
+
it "cannot be redefinfed while populated" do
|
58
|
+
environment.treeish = 'treeish_1'
|
59
|
+
allow(environment).to receive(:populated).and_return(true)
|
60
|
+
expect { environment.treeish = 'treeish_2' }.to raise_error RuntimeError, /populated/
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "#directory" do
|
65
|
+
|
66
|
+
context "when required values set" do
|
67
|
+
|
68
|
+
subject(:environment) { Palimpsest::Environment.new site: site_1 }
|
69
|
+
|
70
|
+
before :each do
|
71
|
+
allow(Palimpsest::Utility).to receive(:make_random_directory).and_return('/tmp/rand_dir')
|
72
|
+
end
|
73
|
+
|
74
|
+
context "when directory is unset" do
|
75
|
+
|
76
|
+
it "makes and returns a random directory" do
|
77
|
+
expect(environment.directory).to eq '/tmp/rand_dir'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context "when directory is set" do
|
82
|
+
|
83
|
+
it "returns the current directory" do
|
84
|
+
expect(Palimpsest::Utility).to receive(:make_random_directory).once
|
85
|
+
environment.directory
|
86
|
+
expect(environment.directory).to eq '/tmp/rand_dir'
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context "when required values are not set" do
|
92
|
+
|
93
|
+
it "fails if site is not set" do
|
94
|
+
expect { environment.directory }.to raise_error RuntimeError
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "#cleanup" do
|
100
|
+
|
101
|
+
subject(:environment) { Palimpsest::Environment.new site: site_1 }
|
102
|
+
|
103
|
+
it "removes the directory and resets @directory" do
|
104
|
+
environment.directory
|
105
|
+
FileUtils.should_receive(:remove_entry_secure).with(environment.directory)
|
106
|
+
environment.cleanup
|
107
|
+
expect(environment.instance_variable_get :@directory).to eq nil
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#populate" do
|
112
|
+
|
113
|
+
it "fails when missing site" do
|
114
|
+
environment.treeish = 'master'
|
115
|
+
expect { environment.populate }.to raise_error RuntimeError, /populate without/
|
116
|
+
end
|
117
|
+
|
118
|
+
context "populate from repo" do
|
119
|
+
|
120
|
+
subject(:environment) { Palimpsest::Environment.new site: site_1, treeish: 'master' }
|
121
|
+
|
122
|
+
before :each do
|
123
|
+
allow(site_1).to receive(:repo).and_return(double Grit::Repo)
|
124
|
+
allow(Palimpsest::Utility).to receive :extract_repo
|
125
|
+
end
|
126
|
+
|
127
|
+
it "extracts the repo to the directory and sets populated true" do
|
128
|
+
expect(Palimpsest::Utility).to receive(:extract_repo).with(site_1.repo, 'master', environment.directory)
|
129
|
+
environment.populate
|
130
|
+
expect(environment.populated).to eq true
|
131
|
+
end
|
132
|
+
|
133
|
+
it "fails when missing treeish" do
|
134
|
+
environment.site = site_1
|
135
|
+
environment.treeish = ''
|
136
|
+
expect { environment.populate }.to raise_error RuntimeError, /populate without/
|
137
|
+
end
|
138
|
+
|
139
|
+
it "returns itself" do
|
140
|
+
expect(environment.populate).to be environment
|
141
|
+
end
|
142
|
+
|
143
|
+
it "will cleanup if populated" do
|
144
|
+
environment.populate
|
145
|
+
expect(environment).to receive :cleanup
|
146
|
+
environment.populate
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context "populate from directory" do
|
151
|
+
|
152
|
+
it "copies the source files to the directory" do
|
153
|
+
environment.site = site_1
|
154
|
+
allow(site_1).to receive(:source).and_return('/path/to/source')
|
155
|
+
allow(Dir).to receive(:[]).with('/path/to/source/*').and_return( %w(dir_1 dir_2) )
|
156
|
+
expect(FileUtils).to receive(:cp_r).with( %w(dir_1 dir_2), environment.directory )
|
157
|
+
environment.populate from: :source
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "config" do
|
163
|
+
|
164
|
+
subject(:environment) { Palimpsest::Environment.new site: site_1, treeish: 'master' }
|
165
|
+
|
166
|
+
before :each do
|
167
|
+
allow(YAML).to receive(:load_file)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "populate if not populated" do
|
171
|
+
expect(environment).to receive :populate
|
172
|
+
environment.config
|
173
|
+
end
|
174
|
+
|
175
|
+
it "populate only if not populated" do
|
176
|
+
allow(environment).to receive(:populated).and_return(true)
|
177
|
+
expect(environment).not_to receive :populate
|
178
|
+
environment.config
|
179
|
+
end
|
180
|
+
|
181
|
+
it "loads the config if populated" do
|
182
|
+
allow(environment).to receive(:populated).and_return(true)
|
183
|
+
expect(YAML).to receive(:load_file).with("#{environment.directory}/palimpsest_config.yml")
|
184
|
+
environment.config
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
describe "methods that modify the working directory" do
|
189
|
+
|
190
|
+
let(:config) do
|
191
|
+
YAML.load <<-EOF
|
192
|
+
:assets:
|
193
|
+
:options:
|
194
|
+
:output: compiled
|
195
|
+
:src_pre: "(%"
|
196
|
+
:sources:
|
197
|
+
- public
|
198
|
+
- app/src
|
199
|
+
:javascripts:
|
200
|
+
:options:
|
201
|
+
:js_compressor: :uglifier
|
202
|
+
:gzip: true
|
203
|
+
:paths:
|
204
|
+
- assets/javascripts
|
205
|
+
- other/javascripts
|
206
|
+
:stylesheets:
|
207
|
+
:options:
|
208
|
+
:output: css
|
209
|
+
:css_compressor: :sass
|
210
|
+
:paths:
|
211
|
+
- assets/stylesheets
|
212
|
+
EOF
|
213
|
+
end
|
214
|
+
|
215
|
+
before :each do
|
216
|
+
environment.site = site_1
|
217
|
+
environment.directory
|
218
|
+
allow(environment).to receive(:populated).and_return(true)
|
219
|
+
allow(environment).to receive(:config).and_return(config)
|
220
|
+
end
|
221
|
+
|
222
|
+
describe "#assets" do
|
223
|
+
|
224
|
+
subject(:assets) { environment.assets }
|
225
|
+
|
226
|
+
it "returns an array" do
|
227
|
+
expect(assets).to be_a Array
|
228
|
+
end
|
229
|
+
|
230
|
+
it "returns an array of asset objects" do
|
231
|
+
expect(assets[0]).to be_a Palimpsest::Assets
|
232
|
+
expect(assets[1]).to be_a Palimpsest::Assets
|
233
|
+
end
|
234
|
+
|
235
|
+
it "sets the directory for each asset" do
|
236
|
+
expect(assets[0].directory).to eq environment.directory
|
237
|
+
expect(assets[1].directory).to eq environment.directory
|
238
|
+
end
|
239
|
+
|
240
|
+
it "sets the options for each asset" do
|
241
|
+
expect(assets[0].options).to include output: 'compiled'
|
242
|
+
expect(assets[0].options).to include js_compressor: :uglifier
|
243
|
+
expect(assets[0].options).to include gzip: true
|
244
|
+
expect(assets[1].options).to include output: 'css'
|
245
|
+
expect(assets[1].options).to include css_compressor: :sass
|
246
|
+
end
|
247
|
+
|
248
|
+
it "sets the paths for each asset" do
|
249
|
+
expect(assets[0].paths).to include 'assets/javascripts'
|
250
|
+
expect(assets[0].paths).to include 'other/javascripts'
|
251
|
+
expect(assets[1].paths).to include 'assets/stylesheets'
|
252
|
+
end
|
253
|
+
|
254
|
+
it "only loads the paths for each type of asset" do
|
255
|
+
expect(assets[0].paths).to_not include 'assets/stylesheets'
|
256
|
+
expect(assets[1].paths).to_not include 'assets/javascripts'
|
257
|
+
end
|
258
|
+
|
259
|
+
it "does not fail if assets are not configured" do
|
260
|
+
allow(environment).to receive(:config).and_return({})
|
261
|
+
expect { assets }.not_to raise_error
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
describe "#sources_with_assets" do
|
266
|
+
|
267
|
+
let(:dir) { environment.directory }
|
268
|
+
|
269
|
+
it "looks for all asset types" do
|
270
|
+
expect(Palimpsest::Assets).to receive(:find_tags).twice.with(anything, nil, anything)
|
271
|
+
environment.sources_with_assets
|
272
|
+
end
|
273
|
+
|
274
|
+
it "uses options as options" do
|
275
|
+
expect(Palimpsest::Assets).to receive(:find_tags).twice.with(anything, anything, { src_pre: '(%' } )
|
276
|
+
environment.sources_with_assets
|
277
|
+
end
|
278
|
+
|
279
|
+
it "returns assets with tags" do
|
280
|
+
allow(Palimpsest::Assets).to receive(:find_tags).with(dir + '/public', anything, anything).and_return(dir + '/public/header.html')
|
281
|
+
allow(Palimpsest::Assets).to receive(:find_tags).with(dir + '/app/src', anything, anything).and_return(dir + '/app/src/head.tpl')
|
282
|
+
expect(environment.sources_with_assets).to eq [ "#{dir}/public/header.html", "#{dir}/app/src/head.tpl" ]
|
283
|
+
end
|
284
|
+
end
|
285
|
+
|
286
|
+
describe "#compile_assets" do
|
287
|
+
|
288
|
+
let(:sources) { [ "#{environment.directory}/public/header.html", "#{environment.directory}/app/src/head.tpl" ] }
|
289
|
+
|
290
|
+
it "returns itself" do
|
291
|
+
allow(environment).to receive(:sources_with_assets).and_return([])
|
292
|
+
expect(environment.compile_assets).to be environment
|
293
|
+
end
|
294
|
+
|
295
|
+
it "compiles the assets and writes the sources" do
|
296
|
+
allow(environment).to receive(:sources_with_assets).and_return sources
|
297
|
+
allow(File).to receive(:read).with(sources[0]).and_return('data_1')
|
298
|
+
allow(File).to receive(:read).with(sources[1]).and_return('data_2')
|
299
|
+
expect(Palimpsest::Utility).to receive(:write).with 'data_1', sources[0]
|
300
|
+
expect(Palimpsest::Utility).to receive(:write).with 'data_2', sources[1]
|
301
|
+
environment.compile_assets
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'palimpsest'
|
2
|
+
|
3
|
+
require 'coveralls'
|
4
|
+
require 'simplecov'
|
5
|
+
|
6
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
7
|
+
SimpleCov::Formatter::HTMLFormatter,
|
8
|
+
Coveralls::SimpleCov::Formatter
|
9
|
+
]
|
10
|
+
|
11
|
+
SimpleCov.start
|
12
|
+
|
13
|
+
RSpec.configure do |c|
|
14
|
+
c.expect_with(:rspec) { |e| e.syntax = :expect }
|
15
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Palimpsest::Utility do
|
4
|
+
|
5
|
+
describe ".make_random_directory" do
|
6
|
+
|
7
|
+
root, prefix = '/tmp', 'rspec'
|
8
|
+
|
9
|
+
it "makes a directory where expected" do
|
10
|
+
dir = Palimpsest::Utility.make_random_directory root, prefix
|
11
|
+
expect(Dir.exists? dir).to be_true
|
12
|
+
FileUtils.remove_entry_secure dir if dir =~ %r{^/tmp}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ".validate_path" do
|
17
|
+
|
18
|
+
context "valid path" do
|
19
|
+
|
20
|
+
it "returns the input path" do
|
21
|
+
expect(Palimpsest::Utility.validate_path '/path').to eq '/path'
|
22
|
+
end
|
23
|
+
|
24
|
+
it "returns the input path when the root path matches" do
|
25
|
+
expect(Palimpsest::Utility.validate_path '/path/to/dir', '/path/to').to eq '/path/to/dir'
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
context "bad path" do
|
31
|
+
|
32
|
+
it "rasises an error if path contains '../'" do
|
33
|
+
expect { Palimpsest::Utility.validate_path 'path/with/../in/it' }.to raise_error RuntimeError
|
34
|
+
end
|
35
|
+
|
36
|
+
it "rasises an error if using '~/'" do
|
37
|
+
expect { Palimpsest::Utility.validate_path '~/path' }.to raise_error RuntimeError
|
38
|
+
end
|
39
|
+
|
40
|
+
it "rasises an error if given root does not match path root" do
|
41
|
+
expect { Palimpsest::Utility.validate_path '/other_root/path', '/root/path' }.to raise_error RuntimeError
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "write" do
|
47
|
+
|
48
|
+
let(:file) { double File }
|
49
|
+
|
50
|
+
it "writes to file" do
|
51
|
+
allow(File).to receive(:open).with('path/to/file', 'w').and_yield(file)
|
52
|
+
expect(file).to receive(:write).with('data')
|
53
|
+
Palimpsest::Utility.write 'data', 'path/to/file'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
metadata
ADDED
@@ -0,0 +1,297 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: palimpsest
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Evan Boyd Sosenko
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: archive-tar-minitar
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.5.2
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.5.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: grit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.5.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.5.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sprockets
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.10.0
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 2.10.0
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '10.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '10.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: bump
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.4'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.4'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: yard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.8.7.2
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.8.7.2
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: redcarpet
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 3.0.0
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 3.0.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: github-markup
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.7.5
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.7.5
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rspec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 2.14.1
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 2.14.1
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: simplecov
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 0.7.1
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 0.7.1
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: coveralls
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.7.0
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 0.7.0
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: fuubar
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 1.2.1
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 1.2.1
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: guard-rspec
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 3.1.0
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 3.1.0
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: guard-yard
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 2.1.0
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 2.1.0
|
237
|
+
description: 'No web framework, no problem: Palimpsest gives any custom or legacy
|
238
|
+
project a modern workflow and toolset.'
|
239
|
+
email:
|
240
|
+
- razorx@evansosenko.com
|
241
|
+
executables: []
|
242
|
+
extensions: []
|
243
|
+
extra_rdoc_files: []
|
244
|
+
files:
|
245
|
+
- ".gitignore"
|
246
|
+
- ".kateproject"
|
247
|
+
- ".rspec"
|
248
|
+
- ".travis.yml"
|
249
|
+
- ".yardopts"
|
250
|
+
- CHANGELOG.md
|
251
|
+
- Gemfile
|
252
|
+
- Guardfile
|
253
|
+
- LICENSE.txt
|
254
|
+
- README.md
|
255
|
+
- Rakefile
|
256
|
+
- lib/palimpsest.rb
|
257
|
+
- lib/palimpsest/assets.rb
|
258
|
+
- lib/palimpsest/environment.rb
|
259
|
+
- lib/palimpsest/utility.rb
|
260
|
+
- lib/palimpsest/version.rb
|
261
|
+
- palimpsest.gemspec
|
262
|
+
- spec/assets_spec.rb
|
263
|
+
- spec/environment_spec.rb
|
264
|
+
- spec/spec_helper.rb
|
265
|
+
- spec/utility_spec.rb
|
266
|
+
homepage: https://github.com/razor-x/palimpsest
|
267
|
+
licenses:
|
268
|
+
- MIT
|
269
|
+
metadata: {}
|
270
|
+
post_install_message:
|
271
|
+
rdoc_options: []
|
272
|
+
require_paths:
|
273
|
+
- lib
|
274
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
280
|
+
requirements:
|
281
|
+
- - ">="
|
282
|
+
- !ruby/object:Gem::Version
|
283
|
+
version: '0'
|
284
|
+
requirements: []
|
285
|
+
rubyforge_project:
|
286
|
+
rubygems_version: 2.0.3
|
287
|
+
signing_key:
|
288
|
+
specification_version: 4
|
289
|
+
summary: Built flexible, simple, and customizable. Palimpsest runs on top of any project
|
290
|
+
and acts as a post processor for your code. Features a Sprockets asset pipeline
|
291
|
+
and easy integration with Kit.
|
292
|
+
test_files:
|
293
|
+
- spec/assets_spec.rb
|
294
|
+
- spec/environment_spec.rb
|
295
|
+
- spec/spec_helper.rb
|
296
|
+
- spec/utility_spec.rb
|
297
|
+
has_rdoc:
|