pkgr 1.1.3 → 1.1.4pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +3 -2
- data/lib/pkgr/builder.rb +1 -1
- data/lib/pkgr/buildpack.rb +8 -5
- data/lib/pkgr/cli.rb +3 -1
- data/lib/pkgr/config.rb +8 -3
- data/lib/pkgr/data/distributions/debian/dependencies.yml +4 -1
- data/lib/pkgr/distributions/debian.rb +5 -4
- data/lib/pkgr/env.rb +33 -0
- data/lib/pkgr/version.rb +1 -1
- metadata +4 -3
data/README.md
CHANGED
@@ -19,11 +19,11 @@ Install `pkgr` on a Debian/Ubuntu machine (only `wheezy` flavour for now):
|
|
19
19
|
|
20
20
|
To package your app, you can either execute `pkgr` locally if your app repository is on the same machine:
|
21
21
|
|
22
|
-
pkgr path/to/app/repo
|
22
|
+
pkgr package path/to/app/repo
|
23
23
|
|
24
24
|
Or, assuming your build machine is accessible via SSH by doing `ssh pkgr-build-machine` (set this in your `~/.ssh/config` file), you can do as follows:
|
25
25
|
|
26
|
-
pkgr path/to/app/repo --host pkgr-build-machine
|
26
|
+
pkgr package path/to/app/repo --host pkgr-build-machine
|
27
27
|
|
28
28
|
The resulting .deb package will be in your current working directory.
|
29
29
|
|
@@ -60,6 +60,7 @@ Full command line options are given below:
|
|
60
60
|
[--verbose] # Run verbosely
|
61
61
|
[--debug] # Run very verbosely
|
62
62
|
[--name=NAME] # Application name (if directory given, it will default to the directory name)
|
63
|
+
[--env="RACK_ENV=staging" ] # Specify environment variables for buildpack
|
63
64
|
|
64
65
|
## Why?
|
65
66
|
|
data/lib/pkgr/builder.rb
CHANGED
data/lib/pkgr/buildpack.rb
CHANGED
@@ -13,13 +13,14 @@ module Pkgr
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
attr_reader :url, :banner, :type, :uuid, :branch
|
16
|
+
attr_reader :url, :banner, :type, :uuid, :branch, :env
|
17
17
|
|
18
|
-
def initialize(url, type = :builtin)
|
18
|
+
def initialize(url, type = :builtin, env = nil)
|
19
19
|
@uuid = Digest::SHA1.hexdigest(url)
|
20
20
|
@url, @branch = url.split("#")
|
21
21
|
@branch ||= "master"
|
22
22
|
@type = type
|
23
|
+
@env = env
|
23
24
|
end
|
24
25
|
|
25
26
|
def buildpack_cache_dir
|
@@ -34,8 +35,10 @@ module Pkgr
|
|
34
35
|
end
|
35
36
|
|
36
37
|
def compile(path, compile_cache_dir)
|
38
|
+
cmd = %{env -i PATH="$PATH"#{env} #{dir}/bin/compile "#{path}" "#{compile_cache_dir}" }
|
39
|
+
|
37
40
|
Dir.chdir(path) do
|
38
|
-
IO.popen(
|
41
|
+
IO.popen(cmd) do |io|
|
39
42
|
until io.eof?
|
40
43
|
data = io.gets
|
41
44
|
print data
|
@@ -86,10 +89,10 @@ module Pkgr
|
|
86
89
|
|
87
90
|
def replace_app_with_app_home(app_home)
|
88
91
|
Dir.chdir(dir) do
|
89
|
-
buildpack_replace = Mixlib::ShellOut.new("find . -type f -print0 | xargs -0
|
92
|
+
buildpack_replace = Mixlib::ShellOut.new("find . -type f -print0 | xargs -0 perl -pi -e s,/app,#{app_home},g")
|
90
93
|
buildpack_replace.run_command
|
91
94
|
buildpack_replace.error!
|
92
95
|
end
|
93
96
|
end
|
94
97
|
end
|
95
|
-
end
|
98
|
+
end
|
data/lib/pkgr/cli.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "thor"
|
2
2
|
require 'pkgr'
|
3
3
|
require 'pkgr/buildpack'
|
4
|
+
require 'pkgr/env'
|
4
5
|
|
5
6
|
module Pkgr
|
6
7
|
class CLI < Thor
|
@@ -40,6 +41,7 @@ module Pkgr
|
|
40
41
|
method_option :clean, :type => :boolean, :default => true, :desc => "Automatically clean up temporary dirs"
|
41
42
|
method_option :buildpack, :type => :string, :desc => "Custom buildpack to use"
|
42
43
|
method_option :edge, :type => :boolean, :default => true, :desc => "Always use the latest version of the buildpack if already installed"
|
44
|
+
method_option :env, :type => :array, default: [], :description => 'Specify environment variables for buildpack (--env "CURL_TIMEOUT=2" "BUNDLE_WITHOUT=development test")'
|
43
45
|
|
44
46
|
def package(tarball)
|
45
47
|
Pkgr.level = Logger::INFO if options[:verbose]
|
@@ -55,4 +57,4 @@ module Pkgr
|
|
55
57
|
exit 1
|
56
58
|
end
|
57
59
|
end
|
58
|
-
end
|
60
|
+
end
|
data/lib/pkgr/config.rb
CHANGED
@@ -58,6 +58,10 @@ module Pkgr
|
|
58
58
|
@table[:description] || "No description given"
|
59
59
|
end
|
60
60
|
|
61
|
+
def env
|
62
|
+
Pkgr::Env.new(@table[:env])
|
63
|
+
end
|
64
|
+
|
61
65
|
def valid?
|
62
66
|
@errors = []
|
63
67
|
@errors.push("name can't be blank") if name.nil? || name.empty?
|
@@ -84,11 +88,12 @@ module Pkgr
|
|
84
88
|
"--target \"#{target}\"",
|
85
89
|
"--description \"#{description}\"",
|
86
90
|
]
|
87
|
-
args.push "--dependencies #{dependencies.map{|d| "\"#{d}\""}.join
|
88
|
-
args.push "--build-dependencies #{build_dependencies.map{|d| "\"#{d}\""}.join
|
91
|
+
args.push "--dependencies #{dependencies.map{|d| "\"#{d}\""}.join}" unless dependencies.nil? || dependencies.empty?
|
92
|
+
args.push "--build-dependencies #{build_dependencies.map{|d| "\"#{d}\""}.join}" unless build_dependencies.nil? || build_dependencies.empty?
|
89
93
|
args.push "--compile-cache-dir \"#{compile_cache_dir}\"" unless compile_cache_dir.nil? || compile_cache_dir.empty?
|
90
|
-
args.push "--before-precompile \"#{before_precompile}\"" unless
|
94
|
+
args.push "--before-precompile \"#{before_precompile}\"" unless before_precompile.nil? || before_precompile.empty?
|
91
95
|
args.push "--buildpack \"#{buildpack}\"" unless buildpack.nil? || buildpack.empty?
|
96
|
+
args.push "--env #{env.variables.map{|v| "\"#{v}\""}.join(" ")}" if env.present?
|
92
97
|
args.push "--auto" if auto
|
93
98
|
args.push "--verbose" if verbose
|
94
99
|
args.push "--debug" if debug
|
@@ -3,28 +3,31 @@ default:
|
|
3
3
|
- mysql-common
|
4
4
|
- libpq5
|
5
5
|
- libsqlite3-0
|
6
|
-
- libssl0.9.8
|
7
6
|
- openssl
|
8
7
|
- libxml2
|
9
8
|
- libxslt1.1
|
10
9
|
- libreadline5
|
11
10
|
- libreadline6
|
12
11
|
debian-squeeze:
|
12
|
+
- libssl0.9.8
|
13
13
|
- libmysqlclient16
|
14
14
|
- libevent-1.4-2
|
15
15
|
- libevent-core-1.4-2
|
16
16
|
- libevent-extra-1.4-2
|
17
17
|
ubuntu-lucid:
|
18
|
+
- libssl0.9.8
|
18
19
|
- libmysqlclient16
|
19
20
|
- libevent-1.4-2
|
20
21
|
- libevent-core-1.4-2
|
21
22
|
- libevent-extra-1.4-2
|
22
23
|
debian-wheezy:
|
24
|
+
- libssl1.0.0
|
23
25
|
- libmysqlclient18
|
24
26
|
- libevent-2.0-5
|
25
27
|
- libevent-core-2.0-5
|
26
28
|
- libevent-extra-2.0-5
|
27
29
|
ubuntu-precise:
|
30
|
+
- libssl1.0.0
|
28
31
|
- libmysqlclient18
|
29
32
|
- libevent-2.0-5
|
30
33
|
- libevent-core-2.0-5
|
@@ -91,10 +91,11 @@ module Pkgr
|
|
91
91
|
}
|
92
92
|
end
|
93
93
|
|
94
|
-
def buildpacks(
|
94
|
+
def buildpacks(config)
|
95
|
+
custom_buildpack_uri = config.buildpack
|
95
96
|
if custom_buildpack_uri
|
96
97
|
uuid = Digest::SHA1.hexdigest(custom_buildpack_uri)
|
97
|
-
[Buildpack.new(custom_buildpack_uri, :custom)]
|
98
|
+
[Buildpack.new(custom_buildpack_uri, :custom, config.env)]
|
98
99
|
else
|
99
100
|
case version
|
100
101
|
when "ubuntu-precise", "debian-wheezy", "ubuntu-lucid", "debian-squeeze"
|
@@ -112,7 +113,7 @@ module Pkgr
|
|
112
113
|
https://github.com/igrigorik/heroku-buildpack-dart.git
|
113
114
|
https://github.com/rhy-jot/buildpack-nginx.git
|
114
115
|
https://github.com/Kloadut/heroku-buildpack-static-apache.git
|
115
|
-
}.map{|url| Buildpack.new(url)}
|
116
|
+
}.map{|url| Buildpack.new(url, :builtin, config.env)}
|
116
117
|
else
|
117
118
|
[]
|
118
119
|
end
|
@@ -162,4 +163,4 @@ module Pkgr
|
|
162
163
|
end
|
163
164
|
end
|
164
165
|
end
|
165
|
-
end
|
166
|
+
end
|
data/lib/pkgr/env.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Pkgr
|
2
|
+
class Env
|
3
|
+
attr_reader :variables
|
4
|
+
|
5
|
+
def initialize(variables)
|
6
|
+
@variables = variables || []
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_s
|
10
|
+
to_hash.map {|k, v| " #{k}=#{v}" }.join
|
11
|
+
end
|
12
|
+
|
13
|
+
def present?
|
14
|
+
create_env_hash_from_string.length > 0
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_hash
|
18
|
+
create_env_hash_from_string
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def create_env_hash_from_string
|
24
|
+
return {} if variables == []
|
25
|
+
|
26
|
+
variables.inject({}) do |h, var|
|
27
|
+
name, value = var.split('=')
|
28
|
+
h[name.strip] = value.strip
|
29
|
+
h
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/pkgr/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pkgr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.4pre1
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Cyril Rohr
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -155,6 +155,7 @@ files:
|
|
155
155
|
- lib/pkgr/dispatcher.rb
|
156
156
|
- lib/pkgr/distributions/debian.rb
|
157
157
|
- lib/pkgr/distributions.rb
|
158
|
+
- lib/pkgr/env.rb
|
158
159
|
- lib/pkgr/git.rb
|
159
160
|
- lib/pkgr/process.rb
|
160
161
|
- lib/pkgr/templates/dir_template.rb
|