toggle 0.0.0.alpha → 1.0.0.rc

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.
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+ require 'toggle/parser/yaml'
3
+
4
+ describe Toggle::Parser::YAML do
5
+ describe "parse" do
6
+ let(:parser) { Toggle::Parser::YAML.new }
7
+
8
+ it "parses the passed content, converting erb tags" do
9
+ parser.parse("Hello world <%= 40 + 2 %>").should == "Hello world 42"
10
+ end
11
+
12
+ it "parses the passed content, serializing as yaml" do
13
+ parser.parse(":hello: world").should == {hello: 'world'}
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe Toggle::Parser do
4
+ describe "non-found parser" do
5
+ it "raises a parser not found error" do
6
+ lambda {
7
+ Toggle::Parser.for 'nonexistent-parser'
8
+ }.should raise_error Toggle::Parser::ParserNotFound
9
+ end
10
+ end
11
+
12
+ describe "'yaml' parser" do
13
+ it "returns an instance of the Toggle Yaml parser" do
14
+ parser = Toggle::Parser.for 'yaml'
15
+ parser.should be_an_instance_of Toggle::Parser::YAML
16
+ end
17
+ end
18
+
19
+ describe "'yml' parser" do
20
+ it "returns an instance of the Toggle Yaml parser" do
21
+ parser = Toggle::Parser.for 'yml'
22
+ parser.should be_an_instance_of Toggle::Parser::YAML
23
+ end
24
+ end
25
+
26
+ describe ":yaml parser" do
27
+ it "returns an instance of the Toggle Yaml parser" do
28
+ parser = Toggle::Parser.for :yaml
29
+ parser.should be_an_instance_of Toggle::Parser::YAML
30
+ end
31
+ end
32
+
33
+ describe ":yml parser" do
34
+ it "returns an instance of the Toggle Yaml parser" do
35
+ parser = Toggle::Parser.for :yml
36
+ parser.should be_an_instance_of Toggle::Parser::YAML
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,3 @@
1
+ require 'toggle'
2
+
3
+ FIXTURES_PATH = File.join(File.dirname(__FILE__), 'test', 'fixtures')
File without changes
@@ -0,0 +1,9 @@
1
+ <% @local_erb_attribute_value = 'local_erb_attribute_value' %>
2
+ <% @remote_erb_attribute_value = 'remote_erb_attribute_value' %>
3
+ :local:
4
+ :plain_attribute: local_plain_attribute_value
5
+ :erb_attribute: <%= @local_erb_attribute_value %>
6
+
7
+ :remote:
8
+ :plain_attribute: remote_plain_attribute_value
9
+ :erb_attribute: <%= @remote_erb_attribute_value %>
@@ -0,0 +1 @@
1
+ local
@@ -0,0 +1,2 @@
1
+ # here are some comments that should not be parsed
2
+ local
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+
3
+ describe Toggle do
4
+ let(:config_filepath) { File.join(FIXTURES_PATH, 'config.yml') }
5
+
6
+ describe "#configs" do
7
+ let(:toggle) { described_class.new config_filepath: config_filepath }
8
+
9
+ it "returns compiled content for the specified config file as a hash" do
10
+ toggle.configs.should == {
11
+ 'local' => {
12
+ 'plain_attribute' => 'local_plain_attribute_value',
13
+ 'erb_attribute' => 'local_erb_attribute_value'
14
+ },
15
+ 'remote' => {
16
+ 'plain_attribute' => 'remote_plain_attribute_value',
17
+ 'erb_attribute' => 'remote_erb_attribute_value'
18
+ }
19
+ }
20
+ end
21
+ end
22
+
23
+ describe "#key" do
24
+ let(:toggle) { described_class.new }
25
+
26
+ it "returns the specified attribute as a symbol" do
27
+ toggle.key = 'something'
28
+ toggle.key.should == :something
29
+ end
30
+
31
+ it "returns the flat value when file has no extension" do
32
+ toggle.key_filepath = File.join(FIXTURES_PATH, 'flat-key-local')
33
+ toggle.key.should == :local
34
+ end
35
+
36
+ it "returns the compiled key as a symbol from the key file if no key attribute is set" do
37
+ toggle.key_filepath = File.join(FIXTURES_PATH, 'key-local.yml')
38
+ toggle.key.should == :local
39
+ end
40
+
41
+ it "returns the set key attribute as a symbol over the compiled key file's key value" do
42
+ toggle.key = 'something'
43
+ toggle.key_filepath = File.join(FIXTURES_PATH, 'key-local.yml')
44
+ toggle.key.should == :something
45
+ end
46
+ end
47
+
48
+ describe "#config" do
49
+ let(:toggle) { described_class.new }
50
+
51
+ it "returns the config data that corresponds to #key" do
52
+ toggle.config_filepath = config_filepath
53
+ toggle.key = :local
54
+ toggle.config.should == {
55
+ 'plain_attribute' => 'local_plain_attribute_value',
56
+ 'erb_attribute' => 'local_erb_attribute_value'
57
+ }
58
+ end
59
+ end
60
+
61
+ describe "#[]" do
62
+ let(:key) { :local }
63
+ let(:toggle) { described_class.new config_filepath: config_filepath, key: key }
64
+
65
+ it "indifferently returns the value corresponding to the passed argument for the loaded config" do
66
+ toggle['plain_attribute'].should == 'local_plain_attribute_value'
67
+ toggle[:plain_attribute].should == 'local_plain_attribute_value'
68
+ end
69
+ end
70
+
71
+ describe "#using" do
72
+ let(:toggle) { described_class.new config_filepath: config_filepath }
73
+
74
+ it "does not raise an exception when a block is not supplied" do
75
+ lambda {
76
+ toggle.using(:no_block)
77
+ }.should_not raise_error
78
+ end
79
+
80
+ it "allows block access to the specified configs data without changing internal state" do
81
+ toggle.key = :local
82
+
83
+ toggle.using(:remote) do |config|
84
+ config[:plain_attribute].should == 'remote_plain_attribute_value'
85
+ config[:erb_attribute].should == 'remote_erb_attribute_value'
86
+ end
87
+
88
+ toggle.config.should == {
89
+ 'plain_attribute' => 'local_plain_attribute_value',
90
+ 'erb_attribute' => 'local_erb_attribute_value'
91
+ }
92
+ end
93
+ end
94
+ end
data/toggle.gemspec CHANGED
@@ -1,19 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'toggle/version'
2
+ require File.expand_path('../lib/toggle/version', __FILE__)
5
3
 
6
4
  Gem::Specification.new do |gem|
7
- gem.name = "toggle"
8
- gem.version = Toggle::VERSION
9
5
  gem.authors = ["Jeff Iacono"]
10
- gem.email = ["jeff.iacono@gmail.com"]
11
- gem.description = %q{toggle your ruby script environment}
12
- gem.summary = %q{simple environment toggling}
13
- gem.homepage = ""
6
+ gem.email = ["iacono@squareup.com"]
7
+ gem.description = %q{Easily control and change the path of your script}
8
+ gem.summary = %q{Easily control and change the path of your script}
9
+ gem.homepage = "https://github.com/square/toggle"
14
10
 
15
- gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "toggle"
18
15
  gem.require_paths = ["lib"]
16
+ gem.version = Toggle::VERSION
17
+
18
+ gem.add_runtime_dependency "activesupport", [">= 3.2.3"]
19
+
20
+ gem.add_development_dependency "rake"
21
+ gem.add_development_dependency "cane"
22
+ gem.add_development_dependency "rspec", [">= 2"]
19
23
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toggle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.alpha
4
+ version: 1.0.0.rc
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,24 +9,108 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-17 00:00:00.000000000Z
13
- dependencies: []
14
- description: toggle your ruby script environment
12
+ date: 2013-03-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.2.3
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: cane
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '2'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '2'
78
+ description: Easily control and change the path of your script
15
79
  email:
16
- - jeff.iacono@gmail.com
17
- executables: []
80
+ - iacono@squareup.com
81
+ executables:
82
+ - toggle
18
83
  extensions: []
19
84
  extra_rdoc_files: []
20
85
  files:
21
86
  - .gitignore
87
+ - .rspec
88
+ - .travis.yml
89
+ - CONTRIBUTING.md
22
90
  - Gemfile
23
- - LICENSE.txt
91
+ - LICENSE
24
92
  - README.md
25
93
  - Rakefile
94
+ - bin/toggle
95
+ - defaults/config.yml.default
96
+ - defaults/key.yml.default
26
97
  - lib/toggle.rb
98
+ - lib/toggle/compiler.rb
99
+ - lib/toggle/parser.rb
100
+ - lib/toggle/parser/yaml.rb
27
101
  - lib/toggle/version.rb
102
+ - script/ci
103
+ - spec/cli_spec.rb
104
+ - spec/parser/yaml_spec.rb
105
+ - spec/parser_spec.rb
106
+ - spec/spec_helper.rb
107
+ - spec/test/fixtures/cli/.gitkeep
108
+ - spec/test/fixtures/config.yml
109
+ - spec/test/fixtures/flat-key-local
110
+ - spec/test/fixtures/key-local.yml
111
+ - spec/toggle_spec.rb
28
112
  - toggle.gemspec
29
- homepage: ''
113
+ homepage: https://github.com/square/toggle
30
114
  licenses: []
31
115
  post_install_message:
32
116
  rdoc_options: []
@@ -46,8 +130,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
130
  version: 1.3.1
47
131
  requirements: []
48
132
  rubyforge_project:
49
- rubygems_version: 1.8.6
133
+ rubygems_version: 1.8.24
50
134
  signing_key:
51
135
  specification_version: 3
52
- summary: simple environment toggling
53
- test_files: []
136
+ summary: Easily control and change the path of your script
137
+ test_files:
138
+ - spec/cli_spec.rb
139
+ - spec/parser/yaml_spec.rb
140
+ - spec/parser_spec.rb
141
+ - spec/spec_helper.rb
142
+ - spec/test/fixtures/cli/.gitkeep
143
+ - spec/test/fixtures/config.yml
144
+ - spec/test/fixtures/flat-key-local
145
+ - spec/test/fixtures/key-local.yml
146
+ - spec/toggle_spec.rb
data/LICENSE.txt DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2013 Jeff Iacono
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.