pkgr 1.1.2 → 1.1.3

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.
@@ -17,9 +17,10 @@ module Pkgr
17
17
 
18
18
  # Launch the full packaging procedure
19
19
  def call
20
+ extract
21
+ update_config
20
22
  check
21
23
  setup
22
- extract
23
24
  compile
24
25
  write_env
25
26
  write_init
@@ -45,7 +46,7 @@ module Pkgr
45
46
 
46
47
  # Extract the given tarball to the target directory
47
48
  def extract
48
- raise "#{source_dir} does not exist" unless File.directory?(source_dir)
49
+ FileUtils.mkdir_p source_dir
49
50
 
50
51
  opts = {}
51
52
  if tarball == "-"
@@ -58,6 +59,14 @@ module Pkgr
58
59
  tarball_extract.error!
59
60
  end
60
61
 
62
+ # Update existing config with the one from .pkgr.yml file, if any
63
+ def update_config
64
+ if File.exist?(config_file)
65
+ @config = Config.load_file(config_file, distribution.version).merge(config)
66
+ Pkgr.debug "Found .pkgr.yml file. Updated config is now: #{config.inspect}"
67
+ end
68
+ end
69
+
61
70
  # Pass the app through the buildpack
62
71
  def compile
63
72
  if buildpack_for_app
@@ -142,6 +151,10 @@ module Pkgr
142
151
  File.join(source_dir, ".release")
143
152
  end
144
153
 
154
+ def config_file
155
+ File.join(source_dir, ".pkgr.yml")
156
+ end
157
+
145
158
  # Path to the directory containing the main app files.
146
159
  def source_dir
147
160
  File.join(build_dir, "opt/#{config.name}")
@@ -1,5 +1,6 @@
1
1
  require "thor"
2
2
  require 'pkgr'
3
+ require 'pkgr/buildpack'
3
4
 
4
5
  module Pkgr
5
6
  class CLI < Thor
@@ -30,10 +31,10 @@ module Pkgr
30
31
  method_option :iteration, :type => :string, :default => Time.now.strftime("%Y%m%d%H%M%S"), :desc => "Package iteration (you should keep the default here)"
31
32
  method_option :user, :type => :string, :desc => "User to run the app under (defaults to your app name)"
32
33
  method_option :group, :type => :string, :desc => "Group to run the app under (defaults to your app name)"
33
- method_option :compile_cache_dir, :type => :string, :desc => "Where to store the files cached between packaging runs"
34
+ method_option :compile_cache_dir, :type => :string, :desc => "Where to store the files cached between packaging runs. Path will be resolved from the temporary code repository folder, so use absolute paths if needed."
35
+ method_option :before_precompile, :type => :string, :desc => "Provide a script to run just before the buildpack compilation. Path will be resolved from the temporary code repository folder, so use absolute paths if needed."
34
36
  method_option :dependencies, :type => :array, :default => [], :desc => "Specific system dependencies that you want to install with the package"
35
37
  method_option :build_dependencies, :type => :array, :default => [], :desc => "Specific system dependencies that must be present before building"
36
- method_option :before_precompile, :type => :string, :desc => "Provide a script to run just before the buildpack compilation"
37
38
  method_option :host, :type => :string, :desc => "Remote host to build on (default: local machine)"
38
39
  method_option :auto, :type => :boolean, :default => false, :desc => "Automatically attempt to install missing dependencies"
39
40
  method_option :clean, :type => :boolean, :default => true, :desc => "Automatically clean up temporary dirs"
@@ -1,11 +1,39 @@
1
1
  require 'ostruct'
2
+ require 'yaml'
2
3
 
3
4
  module Pkgr
4
5
  class Config < OpenStruct
6
+ class << self
7
+ def load_file(path, distribution)
8
+ config = YAML.load_file(path)
9
+
10
+ targets = config.delete("targets") || {}
11
+ (targets[distribution.to_s] || {}).each do |k,v|
12
+ config[k] = v
13
+ end
14
+
15
+ self.new(config)
16
+ end
17
+ end
18
+
5
19
  def sesame
6
20
  binding
7
21
  end
8
22
 
23
+ def merge(other)
24
+ new_config = self.class.new
25
+ self.each{|k,v| new_config.send("#{k}=".to_sym, v)}
26
+ other.each{|k,v| new_config.send("#{k}=".to_sym, v)}
27
+ new_config
28
+ end
29
+
30
+ def each
31
+ @table.each do |k,v|
32
+ next if v.nil?
33
+ yield k, v
34
+ end
35
+ end
36
+
9
37
  def home
10
38
  "/opt/#{name}"
11
39
  end
@@ -14,8 +14,6 @@ module Pkgr
14
14
 
15
15
  def setup
16
16
  tarify if File.directory?(path)
17
- config.before_precompile = File.expand_path(config.before_precompile) if config.before_precompile
18
- config.compile_cache_dir = File.expand_path(config.compile_cache_dir) if config.compile_cache_dir
19
17
  end
20
18
 
21
19
  def call
@@ -113,6 +113,8 @@ module Pkgr
113
113
  https://github.com/rhy-jot/buildpack-nginx.git
114
114
  https://github.com/Kloadut/heroku-buildpack-static-apache.git
115
115
  }.map{|url| Buildpack.new(url)}
116
+ else
117
+ []
116
118
  end
117
119
  end
118
120
  end
@@ -1,3 +1,3 @@
1
1
  module Pkgr
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-05 00:00:00.000000000 Z
12
+ date: 2013-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake