stevenson 1.0.1 → 2.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/assets/stevenson_dotfile.yml +29 -0
- data/lib/stevenson/application.rb +34 -29
- data/lib/stevenson/dotfile.rb +26 -0
- data/lib/stevenson/output_filter/generator.rb +30 -0
- data/lib/stevenson/output_filter.rb +42 -0
- data/lib/stevenson/output_filters/jekyll.rb +6 -13
- data/lib/stevenson/output_filters/zip.rb +12 -14
- data/lib/stevenson/template/loader.rb +36 -0
- data/lib/stevenson/template.rb +35 -0
- data/lib/stevenson/templates/git.rb +16 -17
- data/lib/stevenson/templates/local.rb +21 -0
- data/lib/stevenson/version.rb +1 -1
- data/lib/stevenson.rb +9 -7
- data/spec/bin/.gitkeep +0 -0
- data/spec/lib/output_filter/generator_spec.rb +37 -0
- data/spec/lib/output_filter_spec.rb +57 -0
- data/spec/lib/output_filters/jekyll_spec.rb +23 -0
- data/spec/lib/output_filters/zip_spec.rb +19 -0
- data/spec/lib/template/loader_spec.rb +35 -0
- data/spec/lib/template_spec.rb +20 -0
- data/spec/lib/templates/git_spec.rb +43 -0
- data/spec/lib/templates/local_spec.rb +42 -0
- data/stevenson.gemspec +3 -2
- metadata +44 -40
- data/assets/template_aliases.yml +0 -36
- data/lib/stevenson/configurators/yaml_configurator.rb +0 -79
- data/lib/stevenson/input/email.rb +0 -19
- data/lib/stevenson/input/password.rb +0 -19
- data/lib/stevenson/input/select.rb +0 -69
- data/lib/stevenson/input/text.rb +0 -28
- data/lib/stevenson/input/url.rb +0 -19
- data/lib/stevenson/input.rb +0 -51
- data/lib/stevenson/template_loader.rb +0 -50
- data/lib/stevenson/templates/base.rb +0 -45
- data/lib/stevenson/templates/invalid_template_exception.rb +0 -6
- data/spec/configurators/yaml_configurator_spec.rb +0 -12
- data/spec/input/email_spec.rb +0 -12
- data/spec/input/password_spec.rb +0 -12
- data/spec/input/select_spec.rb +0 -12
- data/spec/input/text_spec.rb +0 -12
- data/spec/input/url_spec.rb +0 -12
- data/spec/input_spec.rb +0 -38
- data/spec/output_filters/jekyll_spec.rb +0 -17
- data/spec/output_filters/zip_spec.rb +0 -17
- data/spec/template_loader_spec.rb +0 -51
- data/spec/templates/base_spec.rb +0 -83
- data/spec/templates/git_spec.rb +0 -37
@@ -1,12 +0,0 @@
|
|
1
|
-
describe Stevenson::Configurator::YAMLConfigurator do
|
2
|
-
describe '#initialize' do
|
3
|
-
let(:temporary_directory) { Dir.mktmpdir }
|
4
|
-
let(:yaml_configurator) { Stevenson::Configurator::YAMLConfigurator.new temporary_directory }
|
5
|
-
|
6
|
-
it 'creates a new configurator' do
|
7
|
-
expect(yaml_configurator).to be_an_instance_of Stevenson::Configurator::YAMLConfigurator
|
8
|
-
end
|
9
|
-
|
10
|
-
after { FileUtils.remove_entry_secure temporary_directory }
|
11
|
-
end
|
12
|
-
end
|
data/spec/input/email_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
describe Stevenson::Input::Email do
|
2
|
-
describe '#initialize' do
|
3
|
-
let(:text_input) { Stevenson::Input::Email.new({}) }
|
4
|
-
|
5
|
-
it 'creates a new email input' do
|
6
|
-
expect(text_input).to be_an_instance_of Stevenson::Input::Email
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#collect!' do
|
11
|
-
end
|
12
|
-
end
|
data/spec/input/password_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
describe Stevenson::Input::Password do
|
2
|
-
describe '#initialize' do
|
3
|
-
let(:text_input) { Stevenson::Input::Password.new({}) }
|
4
|
-
|
5
|
-
it 'creates a new password input' do
|
6
|
-
expect(text_input).to be_an_instance_of Stevenson::Input::Password
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#collect!' do
|
11
|
-
end
|
12
|
-
end
|
data/spec/input/select_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
describe Stevenson::Input::Select do
|
2
|
-
describe '#initialize' do
|
3
|
-
let(:text_input) { Stevenson::Input::Select.new({}) }
|
4
|
-
|
5
|
-
it 'creates a new selection input' do
|
6
|
-
expect(text_input).to be_an_instance_of Stevenson::Input::Select
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#collect!' do
|
11
|
-
end
|
12
|
-
end
|
data/spec/input/text_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
describe Stevenson::Input::Text do
|
2
|
-
describe '#initialize' do
|
3
|
-
let(:text_input) { Stevenson::Input::Text.new({}) }
|
4
|
-
|
5
|
-
it 'creates a new text input' do
|
6
|
-
expect(text_input).to be_an_instance_of Stevenson::Input::Text
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#collect!' do
|
11
|
-
end
|
12
|
-
end
|
data/spec/input/url_spec.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
describe Stevenson::Input::Url do
|
2
|
-
describe '#initialize' do
|
3
|
-
let(:text_input) { Stevenson::Input::Url.new({}) }
|
4
|
-
|
5
|
-
it 'creates a new url input' do
|
6
|
-
expect(text_input).to be_an_instance_of Stevenson::Input::Url
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#collect!' do
|
11
|
-
end
|
12
|
-
end
|
data/spec/input_spec.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Stevenson::Input
|
4
|
-
class Test
|
5
|
-
include Base
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe Stevenson::Input do
|
10
|
-
let(:input) { double(:test_input) }
|
11
|
-
let(:options) { Hash['type' => :test] }
|
12
|
-
before { allow(Stevenson::Input::Test).to receive(:new).and_return(input) }
|
13
|
-
|
14
|
-
describe ".input_for()" do
|
15
|
-
context "when the input has been registered previously" do
|
16
|
-
it "should return the input class from Stevenson.inputs" do
|
17
|
-
expect(Stevenson::Input.input_for(options)).to eq(input)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
context "when the input has not been registered previously" do
|
22
|
-
it "should return the fetched class from Stevenson" do
|
23
|
-
allow(Stevenson).to receive(:inputs).and_return({})
|
24
|
-
expect(Stevenson::Input.input_for(options)).to eq(input)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "when the input doesn't exist" do
|
29
|
-
it "should raise a NameError with a descriptive error message" do
|
30
|
-
expect { Stevenson::Input.input_for('type' => :bad_input) }.to raise_error do |error|
|
31
|
-
expect(error).to be_a(NameError)
|
32
|
-
expect(error.message).to eq("Type 'bad_input' is not a valid input type.")
|
33
|
-
expect(error.cause).to be_a(NameError)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
describe Stevenson::OutputFilters::JekyllFilter do
|
2
|
-
describe '#output' do
|
3
|
-
let(:temporary_directory) { Dir.mktmpdir }
|
4
|
-
let(:template) { Stevenson::TemplateLoader.load 'hyde-base' }
|
5
|
-
|
6
|
-
before do
|
7
|
-
template.extend(subject)
|
8
|
-
template.output temporary_directory
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'outputs a jekyll compiled directory' do
|
12
|
-
expect(File.exists? File.join(temporary_directory, '_config.yml')).to eq false
|
13
|
-
end
|
14
|
-
|
15
|
-
after { FileUtils.remove_entry_secure temporary_directory }
|
16
|
-
end
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
describe Stevenson::OutputFilters::ZipFilter do
|
2
|
-
describe '#output' do
|
3
|
-
let(:temporary_directory) { Dir.mktmpdir }
|
4
|
-
let(:template) { Stevenson::Templates::GitTemplate.new 'https://github.com/RootsRated/stevenson-base-template.git' }
|
5
|
-
|
6
|
-
before do
|
7
|
-
template.extend(subject)
|
8
|
-
template.output File.join(temporary_directory, 'archive.zip')
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'outputs a zipped directory' do
|
12
|
-
expect(File.exists? File.join(temporary_directory, 'archive.zip')).to eq true
|
13
|
-
end
|
14
|
-
|
15
|
-
after { FileUtils.remove_entry_secure temporary_directory }
|
16
|
-
end
|
17
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
describe Stevenson::TemplateLoader do
|
2
|
-
subject { Stevenson::TemplateLoader }
|
3
|
-
|
4
|
-
describe '.load' do
|
5
|
-
context 'when given a template alias' do
|
6
|
-
let(:template_alias) { 'hyde-base' }
|
7
|
-
let(:template) { subject.load template_alias }
|
8
|
-
|
9
|
-
it 'returns the appropriate template' do
|
10
|
-
expect(template).to be_an_instance_of Stevenson::Templates::GitTemplate
|
11
|
-
end
|
12
|
-
|
13
|
-
after do
|
14
|
-
Dir.mktmpdir do |dir|
|
15
|
-
template.output dir
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context 'when given a git url' do
|
21
|
-
let(:url) { 'https://github.com/RootsRated/stevenson-base-template.git' }
|
22
|
-
let(:template) { subject.load url }
|
23
|
-
|
24
|
-
it 'returns the appropriate template' do
|
25
|
-
expect(template).to be_an_instance_of Stevenson::Templates::GitTemplate
|
26
|
-
end
|
27
|
-
|
28
|
-
after do
|
29
|
-
Dir.mktmpdir do |dir|
|
30
|
-
template.output dir
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
context 'when given a path' do
|
36
|
-
let(:path) { Dir.mktmpdir }
|
37
|
-
let(:template) { subject.load path }
|
38
|
-
|
39
|
-
it 'returns the appropriate template' do
|
40
|
-
expect(template).to be_an_instance_of Stevenson::Templates::Base
|
41
|
-
end
|
42
|
-
|
43
|
-
after do
|
44
|
-
FileUtils.remove_entry_secure path
|
45
|
-
Dir.mktmpdir do |dir|
|
46
|
-
template.output dir
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/spec/templates/base_spec.rb
DELETED
@@ -1,83 +0,0 @@
|
|
1
|
-
describe Stevenson::Templates::Base do
|
2
|
-
subject { Stevenson::Templates::Base }
|
3
|
-
|
4
|
-
describe '#initialize' do
|
5
|
-
context 'with a valid path' do
|
6
|
-
let(:path) { Dir.mktmpdir }
|
7
|
-
|
8
|
-
before { FileUtils.touch File.join(path, '_stevenson.yml') }
|
9
|
-
|
10
|
-
it 'creates a new Template' do
|
11
|
-
expect( subject.new path ).to be_an_instance_of Stevenson::Templates::Base
|
12
|
-
end
|
13
|
-
|
14
|
-
after { FileUtils.remove_entry_secure path }
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'with an invalid path' do
|
18
|
-
let(:path) { Dir.mktmpdir }
|
19
|
-
|
20
|
-
it 'raises an invalid template exception' do
|
21
|
-
expect{ subject.new File.join(path, 'not-a-path') }.to raise_exception Stevenson::Templates::InvalidTemplateException
|
22
|
-
end
|
23
|
-
|
24
|
-
after { FileUtils.remove_entry_secure path }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe '#path' do
|
29
|
-
let(:path) { Dir.mktmpdir }
|
30
|
-
let(:template) { subject.new path }
|
31
|
-
|
32
|
-
before do
|
33
|
-
FileUtils.touch File.join(path, '_stevenson.yml')
|
34
|
-
end
|
35
|
-
|
36
|
-
it 'returns the path of the template' do
|
37
|
-
expect(File.exists? File.join(template.path, '_stevenson.yml')).to eq true
|
38
|
-
end
|
39
|
-
|
40
|
-
after { FileUtils.remove_entry_secure path }
|
41
|
-
end
|
42
|
-
|
43
|
-
describe '#select_subdirectory' do
|
44
|
-
let(:path) { Dir.mktmpdir }
|
45
|
-
let(:subdirectory) { 'subdirectory' }
|
46
|
-
let(:template) { subject.new path }
|
47
|
-
|
48
|
-
before do
|
49
|
-
Dir.mkdir File.join(path, subdirectory)
|
50
|
-
FileUtils.touch File.join(path, subdirectory, '_stevenson.yml')
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'changes the path of the template to a given subdirectory' do
|
54
|
-
template.select_subdirectory subdirectory
|
55
|
-
expect(File.exists? File.join(template.path, '_stevenson.yml')).to eq true
|
56
|
-
end
|
57
|
-
|
58
|
-
after do
|
59
|
-
template.output path
|
60
|
-
FileUtils.remove_entry_secure path
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe '#output' do
|
65
|
-
let(:path) { Dir.mktmpdir }
|
66
|
-
let(:template) { subject.new path }
|
67
|
-
let(:temporary_directory) { Dir.mktmpdir }
|
68
|
-
|
69
|
-
before { template.output File.join(temporary_directory, 'output') }
|
70
|
-
|
71
|
-
it 'outputs the finished template to the directory' do
|
72
|
-
expect(File.exists? File.join(temporary_directory, 'output')).to eq true
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'destroys the temporary directory' do
|
76
|
-
expect(File.exists? template.path).to eq false
|
77
|
-
end
|
78
|
-
|
79
|
-
after do
|
80
|
-
FileUtils.remove_entry_secure temporary_directory
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
data/spec/templates/git_spec.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
describe Stevenson::Templates::GitTemplate do
|
2
|
-
subject { Stevenson::Templates::GitTemplate }
|
3
|
-
|
4
|
-
describe '#initialize' do
|
5
|
-
context 'with a valid URL' do
|
6
|
-
let(:template) { subject.new 'https://github.com/RootsRated/stevenson-base-template.git' }
|
7
|
-
|
8
|
-
it 'creates a new GitTemplate' do
|
9
|
-
expect(template).to be_an_instance_of Stevenson::Templates::GitTemplate
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'clones the given repository to the working template path' do
|
13
|
-
expect(File.exists? File.join(template.path, 'base', '_config.yml')).to eq true
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context 'with an invalid URL' do
|
18
|
-
let(:invalid_url) { 'https://github.com/RootsRated/not-a-repo.git' }
|
19
|
-
|
20
|
-
it 'raises an invalid template exception' do
|
21
|
-
expect{ subject.new invalid_url }.to raise_exception(Stevenson::Templates::InvalidTemplateException)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe '#switch_branch' do
|
27
|
-
let(:branch) { 'master' }
|
28
|
-
let(:template) { subject.new 'https://github.com/RootsRated/stevenson-base-template.git' }
|
29
|
-
|
30
|
-
before { template.switch_branch branch }
|
31
|
-
|
32
|
-
it 'checksout the repo to the given branch' do
|
33
|
-
repo = Git::Base.open(template.path)
|
34
|
-
expect(repo.current_branch).to eq branch
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|