gasoline 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.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,16 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gasoline.gemspec
4
+ gemspec
5
+
6
+ group :test do
7
+ # minitest provides a complete suite of testing facilities...
8
+ # [minitest](https://github.com/seattlerb/minitest)
9
+ gem 'minitest', '~> 3.3.0'
10
+
11
+ # Adds color to your MiniTest output
12
+ gem "minitest-rg", "~> 1.0.0"
13
+
14
+ # [mocha](http://gofreerange.com/mocha/docs)
15
+ gem 'mocha', '~> 0.12.2'
16
+ end
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 pjaspers
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.
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # Gasoline makes Campfire better
2
+
3
+ I'm an avid [Campfire](http://campfirenow.com) user and [Propane](http://propaneapp.com) is still my go to app for talking to it. At least on OSX, on iOS I'm using <plug>[Butane](http://getbutane.com)</plug>.
4
+
5
+ Since Propane 1.1.2 they've added a way to add some javascript, to augment the experience even more. Like adding avatars:
6
+
7
+ [Fancy screenshot](http://cl.ly/image/1r0T3h1q460I)
8
+
9
+ The only downside to that approach was managing the file. So that's where Gasoline comes in. It's a gem that installs the command line utility `gasoline` which can download gists and append them to the patch file.
10
+
11
+ ## Installation
12
+
13
+ `gem install gasoline`
14
+
15
+ ## Usage
16
+
17
+ `gasoline ignite` will download the default drops and install them to the patch file.
18
+
19
+ ## Contributing
20
+
21
+ Fork it! Improve it! Test it! Rewrite it! (technology)
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require 'rake/testtask'
4
+
5
+ desc 'Run Devise unit tests.'
6
+ Rake::TestTask.new(:test) do |t|
7
+ t.libs << 'lib'
8
+ t.libs << 'test'
9
+ t.pattern = 'test/**/*_test.rb'
10
+ t.verbose = true
11
+ end
12
+
13
+ task :default => :test
14
+
15
+ desc "Open an pry session with Gasoline loaded"
16
+ task :console do
17
+ sh "pry -I lib -r gasoline.rb"
18
+ end
data/bin/gasoline ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
5
+
6
+ require 'gasoline'
7
+
8
+ Gasoline::CLI.start
data/example_drops.yml ADDED
@@ -0,0 +1,14 @@
1
+ ---
2
+ :drops:
3
+ - :name: Avatars
4
+ :url: https://gist.github.com/065d1dc1906c153e4edc
5
+ :description: Adds avatars to friendly faces
6
+ - :name: Cloud App
7
+ :url: https://gist.github.com/431f7c803ddb0d751a40
8
+ :description: Adds support for Cloud.ly links
9
+ - :name: Flickr
10
+ :url: https://gist.github.com/6dcf1366df5203157fda
11
+ :description: Adds support for Flickr links
12
+ - :name: Instagram
13
+ :url: https://gist.github.com/3258692
14
+ :description: Instagram support
data/gasoline.gemspec ADDED
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/gasoline/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["pjaspers"]
6
+ gem.email = ["piet@jaspe.rs"]
7
+ gem.description = %q{Gasoline makes Campfire even brighter}
8
+ gem.summary = %q{Gasoline aims to make managing the patch file easier.}
9
+ gem.homepage = ""
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "gasoline"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Gasoline::VERSION
17
+
18
+ gem.add_runtime_dependency("thor", ["~> 0.15.4"])
19
+ end
@@ -0,0 +1,39 @@
1
+ require "thor"
2
+
3
+ module Gasoline
4
+ # [thor](http://github.com/wycats/thor)
5
+ class CLI < Thor
6
+ include Thor::Actions
7
+
8
+ map "-i" => :ignite
9
+ map "-a" => :add
10
+ map "-l" => :list
11
+ map "-c" => :config
12
+
13
+ desc "ignite", "Downloads and patches the file"
14
+ def ignite
15
+ Gasoline::Patchor.new.patch_it_chewie!
16
+ say_status :ok, "I have patched the patch file"
17
+ end
18
+
19
+ desc "list", "-l, Current installed drops of gasoline"
20
+ def list
21
+ first_line = ["Currently using these drops of gasoline:"]
22
+ installed_drops = Gasoline::Patchor.new.drops.collect(&:to_s)
23
+ say (first_line + installed_drops).join("\n\t- ")
24
+ end
25
+
26
+ desc "add NAME URL description", "-a, Adds a drop to the config"
27
+ def add(name, url, description)
28
+ can = Gasoline::Jerrycan.new
29
+ can.add_drops([{:name => name, :url => url, :description => description}])
30
+ can.save
31
+ say "Added #{name} - #{url}"
32
+ end
33
+
34
+ desc "config", "-c, Shows current config"
35
+ def config
36
+ say File.open(Gasoline::Jerrycan::YAML_FILE).read
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,80 @@
1
+ module Gasoline
2
+ # A drop of Gasoline is a glorified hash that knows how to
3
+ # retrieve the javascript needed to make the Campfire even
4
+ # shinier.
5
+ #
6
+ # Since Github's gists are pretty much the easiest way to
7
+ # share pieces of code, Drop uses them for all things JS.
8
+ class Drop
9
+
10
+ attr_accessor :name, :url, :description
11
+
12
+ def initialize(name, url, description)
13
+ @name = name
14
+ @url = url
15
+ @description = description
16
+ end
17
+
18
+ def to_s
19
+ "%s: %s" % [@name, @description]
20
+ end
21
+
22
+ def to_hash
23
+ {:name => @name, :url => @url, :description => @description}
24
+ end
25
+
26
+ # Takes the hash as usually found in the Jerrycan and
27
+ # creates a drop from it.
28
+ #
29
+ # Returns a Drop
30
+ def self.new_from_yml(hash)
31
+ new(hash[:name], hash[:url], hash[:description])
32
+ end
33
+
34
+ # Returns the raw url for the specified gist
35
+ def raw_gist_url
36
+ @url.gsub("gist.github.com/", "raw.github.com/gist/")
37
+ end
38
+
39
+ # Returns the javascript from the gist URL.
40
+ def download_content
41
+ puts "Downloading #{@name} (#{@url})"
42
+ open(raw_gist_url).read
43
+ end
44
+
45
+ # The header that will be displayed above the drop in the
46
+ # patched file.
47
+ #
48
+ # Returns a String
49
+ def header
50
+ <<HEADER
51
+ /*
52
+ * #{@name}
53
+ * #{@description}
54
+ *
55
+ */
56
+ HEADER
57
+ end
58
+
59
+ # Fetches the JS content and adds a header to it, ready to be
60
+ # inserted in the patchor file.
61
+ #
62
+ # force_refresh - true will redownload the JS
63
+ #
64
+ # Returns a String
65
+ def patch(force_refresh = false)
66
+ @js ||= download_content
67
+ @js = download_content if force_refresh
68
+
69
+ <<PATCH
70
+
71
+ #{header}
72
+ #{@js}
73
+
74
+
75
+ PATCH
76
+ end
77
+
78
+ end
79
+
80
+ end
@@ -0,0 +1,88 @@
1
+ module Gasoline
2
+ # Gasoline drops are stored in a Jerrycan (safety first), in this case
3
+ # it is disguised as a yaml file, stored in the users' home folder.
4
+ #
5
+ # Not directly in the home folder but in the `.config/gasoline` folder,
6
+ # since [Rob doesn't like them there](https://plus.google.com/101960720994009339267/posts/R58WgWwN9jp)
7
+ # and he seems to know this UNIX thingie.
8
+
9
+ class Jerrycan
10
+ YAML_FILE = "#{ENV['HOME']}/.config/gasoline/drops.yml"
11
+
12
+ attr_writer :drops
13
+
14
+ def initialize
15
+ @drops = []
16
+ bootstrap
17
+ add_drops(YAML.load_file(yaml_file)[:drops]) rescue nil
18
+ end
19
+
20
+ # Adds a drop of gasoline to the jerrycan
21
+ #
22
+ # drop - A Gasoline::Drop instance
23
+ #
24
+ # Returns the current list of drops
25
+ def add_drop(drop)
26
+ @drops << drop
27
+ end
28
+
29
+ # Takes an array of hashes and fills the can with `Drop`s
30
+ #
31
+ # Hash should be:
32
+ # {:name => "k", :url => "url", :description => "desc"}
33
+ #
34
+ # Returns nothing
35
+ def add_drops(array)
36
+ array.each do |h|
37
+ add_drop Gasoline::Drop.new_from_yml(h)
38
+ end
39
+ end
40
+
41
+ def yaml_file
42
+ YAML_FILE
43
+ end
44
+
45
+ # Will create the config file (if needed)
46
+ def bootstrap
47
+ return if File.exist?(yaml_file)
48
+
49
+ FileUtils.mkdir_p(File.split(yaml_file).first)
50
+ FileUtils.cp(example_config, yaml_file)
51
+ end
52
+
53
+ def example_config
54
+ File.join(File.dirname(__FILE__), "../../example_drops.yml")
55
+ end
56
+
57
+ # All the `Drop`s in this Jerrycan.
58
+ #
59
+ # Returns an array of `Drop`s
60
+ def drops
61
+ @drops
62
+ end
63
+
64
+ # Goes through all the drops and squeezes a hash out of them
65
+ # then cunningly makes a yaml out of those.
66
+ #
67
+ # Returns a yaml (as a String)
68
+ def to_yaml
69
+ {:drops => drops.collect(&:to_hash)}.to_yaml
70
+ end
71
+
72
+ # Writes the can to the yaml config file.
73
+ def save
74
+ File.open(yaml_file, 'w') {|f| f.write(to_yaml) }
75
+ end
76
+
77
+ # Mainly used to quickly load the hash I used previously back
78
+ # when this was just a onefile script. Those were the days.
79
+ #
80
+ # Returns a Jerrycan
81
+ def self.load_from_array(array)
82
+ can = new
83
+ can.add_drops(array)
84
+ can
85
+ end
86
+
87
+ end
88
+ end
@@ -0,0 +1,90 @@
1
+ module Gasoline
2
+ # The Patchor will do all the patching on the Propane support
3
+ # file, it finds (and creates if needed) the file, adds the
4
+ # Propane header, and then adds all the drops from the jerrycan.
5
+ class Patchor
6
+ PATCHOR_FILE = "#{ENV['HOME']}/Library/Application Support/Propane/unsupported/caveatPatchor.js"
7
+
8
+ def initialize
9
+ @lines = []
10
+ bootstrap
11
+ load_lines
12
+ end
13
+
14
+ def patchor_file
15
+ PATCHOR_FILE
16
+ end
17
+
18
+ # Will create the Propane, caveatPatchor.js file
19
+ def bootstrap
20
+ return if File.exist?(patchor_file)
21
+
22
+ FileUtils.mkdir_p(File.split(patchor_file).first)
23
+ FileUtils.touch(patchor_file)
24
+ File.open(patchor_file, "w") do |f|
25
+ f.write(Gasoline::Texts::propane_header)
26
+ end
27
+ end
28
+
29
+ # Current lines in memory
30
+ #
31
+ # Returns an array of lines
32
+ def lines
33
+ @lines
34
+ end
35
+
36
+ # Loads the entire file into memory
37
+ def load_lines
38
+ @lines = File.readlines(patchor_file)
39
+ end
40
+
41
+ # The index of the line matching the cut snippet, if it can't
42
+ # be found we'll take the last line.
43
+ #
44
+ # Returns an int
45
+ def cut_line_index
46
+ @lines.find_index{|line| line =~ /#{Gasoline::Texts::cut_here_line}/} || @lines.length
47
+ end
48
+
49
+ # An instance of the Jerrycan, mainly added to have quick
50
+ # access to it, while developing.
51
+ #
52
+ # Returns a `Jerrycan` instance
53
+ def jerrycan
54
+ @jerrycan ||= Gasoline::Jerrycan.new
55
+ end
56
+
57
+ # The contents of our Jerrycan, laid bare to be patched.
58
+ #
59
+ # Returns an array of `Drop`s
60
+ def drops
61
+ jerrycan.drops
62
+ end
63
+
64
+ # Transform the @lines to have:
65
+ #
66
+ # 1. All the lines above the cut
67
+ # 2. The cut here snippet
68
+ # 3. All patches from the drops. (will download them)
69
+ #
70
+ # Returns an array of lines
71
+ def patch_it_chewie
72
+ to_keep = @lines[0...cut_line_index]
73
+ snippet = [Gasoline::Texts::cut_here_snippet]
74
+ to_add = drops.collect {|d| d.patch}
75
+ @lines = (to_keep + snippet + to_add)
76
+ end
77
+
78
+ # First fills up the @lines instance, then saves the file
79
+ def patch_it_chewie!
80
+ patch_it_chewie
81
+ save
82
+ end
83
+
84
+ # Writes the file to disk.
85
+ def save
86
+ File.open("file.tmp", "w") {|f| f.write(@lines.join(""))}
87
+ FileUtils.mv("file.tmp", patchor_file)
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,41 @@
1
+ module Gasoline
2
+ module Texts
3
+ class << self
4
+ def cut_here_line
5
+ "_.:Gasoline Snippet:._"
6
+ end
7
+
8
+ def cut_here_snippet
9
+ <<SNIPPET
10
+ //#{cut_here_line}
11
+ //
12
+ // Anything below this line will be replaced by the gasoline gem.
13
+ //
14
+
15
+ SNIPPET
16
+ end
17
+
18
+ def propane_header
19
+ <<HEADER
20
+ /*
21
+ As of version 1.1.2, Propane will load and execute the contents of
22
+ ~Library/Application Support/Propane/unsupported/caveatPatchor.js
23
+ immediately following the execution of its own enhancer.js file.
24
+
25
+ You can use this mechanism to add your own customizations to Campfire
26
+ in Propane.
27
+
28
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
33
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
34
+ THE SOFTWARE.
35
+ */
36
+
37
+ HEADER
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module Gasoline
2
+ VERSION = "0.0.1"
3
+ end
data/lib/gasoline.rb ADDED
@@ -0,0 +1,14 @@
1
+ require "fileutils"
2
+ require 'open-uri'
3
+ require "yaml"
4
+
5
+ require "gasoline/version"
6
+ require "gasoline/jerrycan"
7
+ require "gasoline/drop"
8
+ require "gasoline/patchor"
9
+ require "gasoline/texts"
10
+ require "gasoline/cli"
11
+
12
+ module Gasoline
13
+
14
+ end
data/test/drop_test.rb ADDED
@@ -0,0 +1,63 @@
1
+ require "helper"
2
+
3
+ describe Gasoline::Drop do
4
+
5
+ describe "basic setup" do
6
+ before do
7
+ @drop = Gasoline::Drop.new("Fire", "http://water.com", "Burn")
8
+ end
9
+
10
+ it "should have a name" do
11
+ assert_equal "Fire", @drop.name
12
+ end
13
+
14
+ it "should have a url" do
15
+ assert_equal "http://water.com", @drop.url
16
+ end
17
+
18
+ it "should have a description" do
19
+ assert_equal "Burn", @drop.description
20
+ end
21
+ end
22
+
23
+ describe "loading from hash" do
24
+ before do
25
+ @h = {
26
+ :name => "Fire",
27
+ :url => "http://water.com",
28
+ :description => "Desc"
29
+ }
30
+ @drop = Gasoline::Drop.new_from_yml(@h)
31
+ end
32
+
33
+ [:name, :url, :description].each do |s|
34
+ it "should have a #{s}" do
35
+ assert_equal @h[s], @drop.send(s)
36
+ end
37
+ end
38
+ end
39
+
40
+ describe "getting the content" do
41
+ before do
42
+ @url = "https://gist.github.com/3258692"
43
+ @drop = Gasoline::Drop.new("xyz", @url, "zyx")
44
+ end
45
+
46
+ it "should get the raw gist url" do
47
+ assert_equal "https://raw.github.com/gist/3258692", @drop.raw_gist_url
48
+ end
49
+
50
+ it "should set header with name" do
51
+ assert_match "xyz", @drop.header
52
+ end
53
+
54
+ it "should set header with description" do
55
+ assert_match "zyx", @drop.description
56
+ end
57
+
58
+ it "should try to download when asked for patch" do
59
+ @drop.expects(:download_content).returns("ZE JS CONTENT")
60
+ assert_match "ZE JS", @drop.patch
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,4 @@
1
+ :drops:
2
+ - :name: Sounds
3
+ :url: https://gist.github.com/686d56fcc7d7081232c6
4
+ :description: Adds some extra sounds to Campfire
data/test/helper.rb ADDED
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ require "minitest/autorun"
4
+ require "mocha"
5
+
6
+ begin
7
+ # [turn](http://rubygems.org/gems/turn)
8
+ require 'turn/autorun'
9
+ rescue LoadError
10
+ end
11
+
12
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+
15
+ require 'gasoline'
@@ -0,0 +1,25 @@
1
+ require "helper"
2
+
3
+ describe Gasoline::Jerrycan do
4
+
5
+ before do
6
+ Gasoline::Jerrycan.any_instance.stubs(:save).returns(true)
7
+ Gasoline::Jerrycan.any_instance.stubs(:bootstrap).returns(true)
8
+ yaml = File.join(File.dirname(__FILE__), "example_drops.yml")
9
+ Gasoline::Jerrycan.any_instance.stubs(:yaml_file).returns(yaml)
10
+ end
11
+
12
+ describe "loading drops" do
13
+ before do
14
+ @jerry = Gasoline::Jerrycan.new
15
+ end
16
+
17
+ it "should load drops from config file on init" do
18
+ assert_equal 1, @jerry.drops.count
19
+ end
20
+
21
+ it "should load name for drops from config" do
22
+ assert_equal "Sounds", @jerry.drops.first.name
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,38 @@
1
+ require "helper"
2
+
3
+ describe Gasoline::Patchor do
4
+
5
+ before do
6
+ Gasoline::Patchor.any_instance.stubs(:save).returns(true)
7
+ Gasoline::Patchor.any_instance.stubs(:bootstrap).returns(true)
8
+
9
+ js = File.join(File.dirname(__FILE__), "patchor.js")
10
+ Gasoline::Patchor.any_instance.stubs(:patchor_file).returns(js)
11
+ end
12
+
13
+ describe "loading patchor" do
14
+ before do
15
+ @patchor = Gasoline::Patchor.new
16
+ end
17
+
18
+ it "should load the js file into lines" do
19
+ assert @patchor.lines.count > 1
20
+ end
21
+
22
+ end
23
+
24
+ describe "patching the patch" do
25
+ before do
26
+ @patchor = Gasoline::Patchor.new
27
+ drop = mock()
28
+ drop.expects(:patch).returns("ZE PATCH")
29
+ @patchor.expects(:drops).returns([drop])
30
+ end
31
+
32
+ it "should download the patches and add them to lines" do
33
+ @patchor.patch_it_chewie
34
+ assert @patchor.lines.include?("ZE PATCH")
35
+ end
36
+
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gasoline
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - pjaspers
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.15.4
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: 0.15.4
30
+ description: Gasoline makes Campfire even brighter
31
+ email:
32
+ - piet@jaspe.rs
33
+ executables:
34
+ - gasoline
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - Gemfile
40
+ - LICENSE
41
+ - README.md
42
+ - Rakefile
43
+ - bin/gasoline
44
+ - example_drops.yml
45
+ - gasoline.gemspec
46
+ - lib/gasoline.rb
47
+ - lib/gasoline/cli.rb
48
+ - lib/gasoline/drop.rb
49
+ - lib/gasoline/jerrycan.rb
50
+ - lib/gasoline/patchor.rb
51
+ - lib/gasoline/texts.rb
52
+ - lib/gasoline/version.rb
53
+ - test/drop_test.rb
54
+ - test/example_drops.yml
55
+ - test/helper.rb
56
+ - test/jerrycan_test.rb
57
+ - test/patchor_test.rb
58
+ homepage: ''
59
+ licenses: []
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 1.8.24
79
+ signing_key:
80
+ specification_version: 3
81
+ summary: Gasoline aims to make managing the patch file easier.
82
+ test_files:
83
+ - test/drop_test.rb
84
+ - test/example_drops.yml
85
+ - test/helper.rb
86
+ - test/jerrycan_test.rb
87
+ - test/patchor_test.rb