docks 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source "http://rubygems.org"
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ gem "rspec", "~> 2.8.0"
10
+ gem "rdoc", "~> 3.12"
11
+ gem "bundler", ">= 1.0.0"
12
+ gem "jeweler", "~> 1.8.4"
13
+ # gem "rcov", ">= 0"
14
+ end
15
+
16
+
17
+ gem 'mharris_ext'
data/Gemfile.lock ADDED
@@ -0,0 +1,37 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ diff-lcs (1.1.3)
5
+ facets (2.9.3)
6
+ fattr (2.2.1)
7
+ git (1.2.5)
8
+ jeweler (1.8.4)
9
+ bundler (~> 1.0)
10
+ git (>= 1.2.5)
11
+ rake
12
+ rdoc
13
+ json (1.8.0)
14
+ mharris_ext (1.7.0)
15
+ facets
16
+ fattr
17
+ rake (10.0.4)
18
+ rdoc (3.12.2)
19
+ json (~> 1.4)
20
+ rspec (2.8.0)
21
+ rspec-core (~> 2.8.0)
22
+ rspec-expectations (~> 2.8.0)
23
+ rspec-mocks (~> 2.8.0)
24
+ rspec-core (2.8.0)
25
+ rspec-expectations (2.8.0)
26
+ diff-lcs (~> 1.1.2)
27
+ rspec-mocks (2.8.0)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ bundler (>= 1.0.0)
34
+ jeweler (~> 1.8.4)
35
+ mharris_ext
36
+ rdoc (~> 3.12)
37
+ rspec (~> 2.8.0)
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Mike Harris
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,19 @@
1
+ = docks
2
+
3
+ Description goes here.
4
+
5
+ == Contributing to docks
6
+
7
+ * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
8
+ * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
9
+ * Fork the project.
10
+ * Start a feature/bugfix branch.
11
+ * Commit and push until you are happy with your contribution.
12
+ * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
+ * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2013 Mike Harris. See LICENSE.txt for
18
+ further details.
19
+
data/Rakefile ADDED
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "docks"
18
+ gem.homepage = "http://github.com/mharris717/docks"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{docks}
21
+ gem.description = %Q{docks}
22
+ gem.email = "mharris717@gmail.com"
23
+ gem.authors = ["Mike Harris"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rspec/core'
29
+ require 'rspec/core/rake_task'
30
+ RSpec::Core::RakeTask.new(:spec) do |spec|
31
+ spec.pattern = FileList['spec/**/*_spec.rb']
32
+ end
33
+
34
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
35
+ spec.pattern = 'spec/**/*_spec.rb'
36
+ spec.rcov = true
37
+ end
38
+
39
+ task :default => :spec
40
+
41
+ require 'rdoc/task'
42
+ Rake::RDocTask.new do |rdoc|
43
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
+
45
+ rdoc.rdoc_dir = 'rdoc'
46
+ rdoc.title = "docks #{version}"
47
+ rdoc.rdoc_files.include('README*')
48
+ rdoc.rdoc_files.include('lib/**/*.rb')
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,2 @@
1
+ mharris717:
2
+ rubybuild_rails: rubybuild_rails
@@ -0,0 +1,27 @@
1
+ # setup libs
2
+ RUN apt-get update -yq
3
+ RUN apt-get install curl build-essential wget -yq
4
+ RUN apt-get install libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion -yq
5
+
6
+ # Download the ruby-build code
7
+ RUN \curl -L https://github.com/sstephenson/ruby-build/archive/v20130518.tar.gz | tar -zxvf - -C /tmp/
8
+
9
+ # Install ruby-build
10
+ RUN cd /tmp/ruby-build-* && ./install.sh && cd / && rm -rfv /tmp/ruby-build-master
11
+
12
+ # Install ruby
13
+ RUN ruby-build -v 1.9.3-p429 /usr/local
14
+
15
+ # Install gems
16
+ RUN gem install bundler rubygems-bundler --no-rdoc --no-ri
17
+ RUN gem install rails -v 3.2.13 --no-rdoc --no-ri
18
+ RUN gem install mharris_ext therubyracer --no-rdoc --no-ri
19
+
20
+ # Regenerate binstubs
21
+ RUN gem regenerate_binstubs
22
+
23
+ # Make test rails app
24
+ RUN mkdir ~/code
25
+ RUN cd ~/code && rails new testapp
26
+ RUN echo "\ngem 'therubyracer'\ngem 'mharris_ext'" >> ~/code/testapp/Gemfile
27
+ RUN cd ~/code/testapp && bundle install
data/docks.gemspec ADDED
@@ -0,0 +1,69 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "docks"
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Mike Harris"]
12
+ s.date = "2013-07-10"
13
+ s.description = "docks"
14
+ s.email = "mharris717@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "defs/mharris717.yml",
29
+ "dockerfiles/rubybuild_rails",
30
+ "docks.gemspec",
31
+ "lib/docks.rb",
32
+ "lib/docks/line.rb",
33
+ "lib/docks/list.rb",
34
+ "lib/docks/parser.rb",
35
+ "spec/data/Basic.dock",
36
+ "spec/docks_spec.rb",
37
+ "spec/spec_helper.rb"
38
+ ]
39
+ s.homepage = "http://github.com/mharris717/docks"
40
+ s.licenses = ["MIT"]
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = "1.8.25"
43
+ s.summary = "docks"
44
+
45
+ if s.respond_to? :specification_version then
46
+ s.specification_version = 3
47
+
48
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
+ s.add_runtime_dependency(%q<mharris_ext>, [">= 0"])
50
+ s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
51
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
52
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
53
+ s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
54
+ else
55
+ s.add_dependency(%q<mharris_ext>, [">= 0"])
56
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
57
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
58
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
59
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
60
+ end
61
+ else
62
+ s.add_dependency(%q<mharris_ext>, [">= 0"])
63
+ s.add_dependency(%q<rspec>, ["~> 2.8.0"])
64
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
65
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
66
+ s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
67
+ end
68
+ end
69
+
data/lib/docks/line.rb ADDED
@@ -0,0 +1,19 @@
1
+ module Docks
2
+ class Line
3
+ include FromHash
4
+ attr_accessor :raw, :parser
5
+ def dock?
6
+ raw =~ /^DOCK /i
7
+ end
8
+ def to_s
9
+ dock? ? to_s_dock : raw
10
+ end
11
+ def to_s_dock
12
+ parser.list.body(dock_name)
13
+ end
14
+ def dock_name
15
+ raise 'foo' unless raw =~ /^DOCK (.+)$/
16
+ $1.strip
17
+ end
18
+ end
19
+ end
data/lib/docks/list.rb ADDED
@@ -0,0 +1,46 @@
1
+ module Docks
2
+ class List
3
+ fattr(:hash) do
4
+ res = {}
5
+ path = File.dirname(__FILE__) + "/../../defs/**/*.yml"
6
+ path = File.expand_path(path)
7
+ Dir[path].each do |f|
8
+ res = res.merge(add_file(f))
9
+ end
10
+ res
11
+ end
12
+
13
+ def add_file(f)
14
+ from_yaml = YAML::load(File.read(f))
15
+ handle_yaml_hash(from_yaml)
16
+ end
17
+
18
+ def expand_dock_path(path)
19
+ if path =~ /http/i
20
+ path
21
+ else
22
+ dir = File.expand_path(File.dirname(__FILE__)+"/../../dockerfiles")
23
+ "#{dir}/#{path}"
24
+ end
25
+ end
26
+
27
+ def handle_yaml_hash(from_yaml,prefixes=[])
28
+ res = {}
29
+ from_yaml.each do |k,v|
30
+ if v.kind_of?(Hash)
31
+ temp = handle_yaml_hash v, prefixes+[k]
32
+ res = res.merge(temp)
33
+ else
34
+ full_key = (prefixes+[k]).join("/")
35
+ res[full_key] = expand_dock_path(v)
36
+ end
37
+ end
38
+ res
39
+ end
40
+
41
+ def body(name)
42
+ url = hash[name].tap { |x| raise "nothing for #{name}" unless x }
43
+ open(url).read
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,15 @@
1
+ module Docks
2
+ class Parser
3
+ include FromHash
4
+ attr_accessor :filename, :list
5
+ fattr(:body) do
6
+ open(filename).read
7
+ end
8
+ fattr(:lines) do
9
+ body.split("\n").map { |x| Line.new(:raw => x, :parser => self) }
10
+ end
11
+ def to_s
12
+ lines.join("\n")
13
+ end
14
+ end
15
+ end
data/lib/docks.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'yaml'
2
+ require 'mharris_ext'
3
+ require 'open-uri'
4
+
5
+ %w(list parser line).each do |f|
6
+ load File.expand_path(File.dirname(__FILE__))+"/docks/#{f}.rb"
7
+ end
8
+
9
+ module Docks
10
+ class << self
11
+ def parsed(file)
12
+ parser = Parser.new(:filename => file, :list => List.new)
13
+ parser.to_s
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,8 @@
1
+ FROM base
2
+ MAINTAINER mharris717
3
+
4
+ DOCK mharris717/rubybuild_rails
5
+
6
+ # setup cmd to run server and expose port
7
+ CMD cd ~/code/testapp && rails server -p 7990
8
+ EXPOSE 7990
@@ -0,0 +1,12 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "Docks" do
4
+ it "smoke" do
5
+ 2.should == 2
6
+ end
7
+
8
+ it 'basic' do
9
+ file = File.dirname(__FILE__)+"/data/Basic.dock"
10
+ Docks.parsed(file).should =~ /gem install bundler/
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'docks'
5
+
6
+ # Requires supporting files with custom matchers and macros, etc,
7
+ # in ./support/ and its subdirectories.
8
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
+
10
+ RSpec.configure do |config|
11
+
12
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Mike Harris
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-07-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mharris_ext
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
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'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.8.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: 2.8.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rdoc
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '3.12'
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: '3.12'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 1.0.0
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: 1.0.0
78
+ - !ruby/object:Gem::Dependency
79
+ name: jeweler
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.8.4
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.8.4
94
+ description: docks
95
+ email: mharris717@gmail.com
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files:
99
+ - LICENSE.txt
100
+ - README.rdoc
101
+ files:
102
+ - .document
103
+ - .rspec
104
+ - Gemfile
105
+ - Gemfile.lock
106
+ - LICENSE.txt
107
+ - README.rdoc
108
+ - Rakefile
109
+ - VERSION
110
+ - defs/mharris717.yml
111
+ - dockerfiles/rubybuild_rails
112
+ - docks.gemspec
113
+ - lib/docks.rb
114
+ - lib/docks/line.rb
115
+ - lib/docks/list.rb
116
+ - lib/docks/parser.rb
117
+ - spec/data/Basic.dock
118
+ - spec/docks_spec.rb
119
+ - spec/spec_helper.rb
120
+ homepage: http://github.com/mharris717/docks
121
+ licenses:
122
+ - MIT
123
+ post_install_message:
124
+ rdoc_options: []
125
+ require_paths:
126
+ - lib
127
+ required_ruby_version: !ruby/object:Gem::Requirement
128
+ none: false
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ segments:
134
+ - 0
135
+ hash: -2932652095204847182
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubyforge_project:
144
+ rubygems_version: 1.8.25
145
+ signing_key:
146
+ specification_version: 3
147
+ summary: docks
148
+ test_files: []