pkgr 1.5.1 → 1.7.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +2 -2
  3. data/README.md +29 -19
  4. data/data/build_dependencies/debian.yml +16 -2
  5. data/data/build_dependencies/ubuntu.yml +6 -0
  6. data/data/buildpacks/amazon-2014 +2 -2
  7. data/data/buildpacks/amazon-2015 +2 -2
  8. data/data/buildpacks/centos-6 +2 -2
  9. data/data/buildpacks/centos-7 +2 -2
  10. data/data/buildpacks/centos-8 +4 -0
  11. data/data/buildpacks/debian-10 +4 -0
  12. data/data/buildpacks/debian-6 +1 -1
  13. data/data/buildpacks/debian-7 +2 -2
  14. data/data/buildpacks/debian-8 +2 -2
  15. data/data/buildpacks/debian-9 +4 -0
  16. data/data/buildpacks/fedora-20 +2 -2
  17. data/data/buildpacks/sles-11 +2 -2
  18. data/data/buildpacks/sles-12 +2 -2
  19. data/data/buildpacks/ubuntu-10.04 +1 -1
  20. data/data/buildpacks/ubuntu-12.04 +2 -2
  21. data/data/buildpacks/ubuntu-14.04 +2 -2
  22. data/data/buildpacks/ubuntu-16.04 +2 -2
  23. data/data/buildpacks/ubuntu-18.04 +4 -0
  24. data/data/buildpacks/ubuntu-20.04 +4 -0
  25. data/data/cli/cli.sh.erb +201 -59
  26. data/data/dependencies/centos.yml +6 -1
  27. data/data/dependencies/debian.yml +15 -4
  28. data/data/dependencies/sles.yml +1 -1
  29. data/data/dependencies/ubuntu.yml +23 -2
  30. data/data/hooks/postinstall.sh +2 -1
  31. data/data/hooks/postuninstall.sh +1 -1
  32. data/data/hooks/preinstall.sh +1 -1
  33. data/data/hooks/preuninstall.sh +1 -1
  34. data/data/init/systemd/default/process.service.erb +1 -1
  35. data/data/init/sysv/lsb-3.1/process.erb +3 -4
  36. data/data/init/upstart/1.5/process.conf.erb +1 -1
  37. data/data/logrotate/logrotate.erb +2 -2
  38. data/lib/pkgr/builder.rb +31 -22
  39. data/lib/pkgr/buildpack.rb +30 -8
  40. data/lib/pkgr/cli.rb +16 -3
  41. data/lib/pkgr/config.rb +20 -0
  42. data/lib/pkgr/dispatcher.rb +1 -1
  43. data/lib/pkgr/distributions/amazon.rb +38 -1
  44. data/lib/pkgr/distributions/base.rb +11 -10
  45. data/lib/pkgr/distributions/debian.rb +1 -1
  46. data/lib/pkgr/distributions/redhat.rb +0 -2
  47. data/lib/pkgr/distributions/ubuntu.rb +3 -3
  48. data/lib/pkgr/env.rb +10 -4
  49. data/lib/pkgr/env_value.rb +55 -0
  50. data/lib/pkgr/version.rb +1 -1
  51. metadata +14 -9
@@ -42,7 +42,7 @@ module Pkgr
42
42
  v = (Git.new(path).latest_tag || "").gsub(/^[^\d]+(\d.*)/, '\1')
43
43
  # If it's not a Git archive, try to figure out svn revision number
44
44
  begin
45
- v = `cd #{path.to_s}&&svn info|grep Revision`.to_s.gsub!(/\D/, "") if (v !~ /^\d/)
45
+ v = `cd #{path.to_s} && svn info 2>/dev/null | grep Revision`.to_s.gsub!(/\D/, "") if (v !~ /^\d/)
46
46
  rescue
47
47
  end
48
48
  v = "0.0.0" if v !~ /^\d/
@@ -1,6 +1,43 @@
1
1
  module Pkgr
2
+
2
3
  module Distributions
3
- class Amazon < Redhat
4
+
5
+ class Amazon < Base
6
+
7
+ def release
8
+ @release[/^[0-9]+/]
9
+ end
10
+
11
+ def runner
12
+ @runner ||= Runner.new("upstart", "1.5", "initctl")
13
+ end
14
+
15
+ def package_test_command(package)
16
+ "rpm -qa '#{package}' | grep '#{package}' > /dev/null 2>&1"
17
+ end
18
+
19
+ def package_install_command(packages)
20
+ "sudo yum -q check-update ; sudo yum install -y #{packages.map{|package| "\"#{package}\""}.join(" ")}"
21
+ end
22
+
23
+ def installer_dependencies
24
+ super.push("which").uniq
25
+ end
26
+
27
+ def fpm_command(build_dir)
28
+ AmazonFpmCommand.new(self, build_dir).command
29
+ end
30
+
31
+ class AmazonFpmCommand < FpmCommand
32
+ def args
33
+ list = super
34
+ list << "-t" << "rpm"
35
+ list
36
+ end
37
+ end
38
+
4
39
  end
40
+
5
41
  end
42
+
6
43
  end
@@ -30,7 +30,8 @@ module Pkgr
30
30
  def target
31
31
  {
32
32
  "centos-6" => "el:6",
33
- "centos-7" => "el:7"
33
+ "centos-7" => "el:7",
34
+ "centos-8" => "el:8"
34
35
  }.fetch(slug, slug.sub("-", ":"))
35
36
  end
36
37
 
@@ -76,12 +77,10 @@ module Pkgr
76
77
 
77
78
  # Returns a list of Buildpack objects
78
79
  def buildpacks
79
- custom_buildpack_uri = config.buildpack
80
- if custom_buildpack_uri
81
- uuid = Digest::SHA1.hexdigest(custom_buildpack_uri)
82
- [Buildpack.new(custom_buildpack_uri, :custom, config.env)]
80
+ if config.buildpacks
81
+ [:custom, config.buildpacks.map { |url| Buildpack.new(url, :custom, config.env) }]
83
82
  else
84
- load_buildpack_list
83
+ [:builtin, load_buildpack_list]
85
84
  end
86
85
  end # def buildpacks
87
86
 
@@ -101,16 +100,17 @@ module Pkgr
101
100
  app_name = config.name
102
101
  list = []
103
102
 
104
- # directories
105
- [
106
- "usr/bin",
103
+ directories = [
107
104
  config.home.gsub(/^\//, ""),
108
105
  "etc/#{app_name}/conf.d",
109
106
  "etc/default",
110
107
  "var/log/#{app_name}",
111
108
  "var/db/#{app_name}",
112
109
  "usr/share/#{app_name}"
113
- ].each{|dir| list.push Templates::DirTemplate.new(dir) }
110
+ ]
111
+
112
+ directories << "usr/bin" if config.cli?
113
+ directories.each{|dir| list.push Templates::DirTemplate.new(dir) }
114
114
 
115
115
  list.push Templates::FileTemplate.new("etc/default/#{app_name}", data_file("environment", "default.erb"))
116
116
  list.push Templates::FileTemplate.new("etc/logrotate.d/#{app_name}", data_file("logrotate", "logrotate.erb"))
@@ -195,3 +195,4 @@ end # module Pkgr
195
195
  require 'pkgr/distributions/debian'
196
196
  require 'pkgr/distributions/fedora'
197
197
  require 'pkgr/distributions/sles'
198
+ require 'pkgr/distributions/amazon'
@@ -14,7 +14,7 @@ module Pkgr
14
14
 
15
15
  def runner
16
16
  @runner ||= case release
17
- when /^8/
17
+ when /^8/, /^9/, /^10/
18
18
  Runner.new("systemd", "default", "systemctl")
19
19
  else
20
20
  Runner.new("sysv", "lsb-3.1", "update-rc.d")
@@ -24,5 +24,3 @@ module Pkgr
24
24
  end
25
25
  end
26
26
  end
27
-
28
- require 'pkgr/distributions/amazon'
@@ -11,10 +11,10 @@ module Pkgr
11
11
 
12
12
  def runner
13
13
  @runner ||= case release
14
- when /^16.04/
15
- Runner.new("systemd", "default", "systemctl")
16
- else
14
+ when /^12.04/, /^14.04/
17
15
  Runner.new("upstart", "1.5", "initctl")
16
+ else
17
+ Runner.new("systemd", "default", "systemctl")
18
18
  end
19
19
  end
20
20
 
@@ -1,13 +1,20 @@
1
+ require 'pkgr/env_value'
2
+
1
3
  module Pkgr
2
4
  class Env
3
5
  attr_reader :variables
4
6
 
7
+ def self.from_export(file)
8
+ new(File.read(file).split("\n").map { |line| line.sub(/^export\s+/, "") })
9
+ end
10
+
5
11
  def initialize(variables = nil)
6
12
  @variables = variables || []
13
+ @variables.compact!
7
14
  end
8
15
 
9
16
  def to_s
10
- to_hash.map {|k, v| " #{k}=#{v}" }.join
17
+ to_hash.map{|k, v| [k, v.quote].join("=")}.join(" ")
11
18
  end
12
19
 
13
20
  def present?
@@ -23,13 +30,12 @@ module Pkgr
23
30
  end
24
31
 
25
32
  private
26
-
27
33
  def create_env_hash_from_string
28
34
  return {} if variables == []
29
35
 
30
36
  variables.inject({}) do |h, var|
31
- name, value = var.split('=')
32
- h[name.strip] = value.strip
37
+ name, value = var.split('=', 2)
38
+ h[name.strip] = EnvValue.new(value || "").strip.unquote
33
39
  h
34
40
  end
35
41
  end
@@ -0,0 +1,55 @@
1
+ class EnvValue < String
2
+ def quote(type=:double, count=nil)
3
+ if Integer === type
4
+ tmp = count
5
+ count = type
6
+ type = tmp || :mixed
7
+ else
8
+ count ||= 1
9
+ end
10
+
11
+ type = type.to_s unless Integer===type
12
+
13
+ case type
14
+ when "'", 'single', 's', 1
15
+ f = "'" * count
16
+ b = f
17
+ when '"', 'double', 'd', 2
18
+ f = '"' * count
19
+ b = f
20
+ when '`', 'back', 'b', -1
21
+ f = '`' * count
22
+ b = f
23
+ when "`'", 'bracket', 'sb'
24
+ f = "`" * count
25
+ b = "'" * count
26
+ when "'\"", 'mixed', "m", Integer
27
+ c = (count.to_f / 2).to_i
28
+ f = '"' * c
29
+ b = f
30
+ if count % 2 != 0
31
+ f = "'" + f
32
+ b = b + "'"
33
+ end
34
+ else
35
+ raise ArgumentError, "unrecognized quote type -- #{type}"
36
+ end
37
+ "#{f}#{self}#{b}"
38
+ end
39
+
40
+ def unquote
41
+ s = self.dup
42
+
43
+ case self[0,1]
44
+ when "'", '"', '`'
45
+ s[0] = ''
46
+ end
47
+
48
+ case self[-1,1]
49
+ when "'", '"', '`'
50
+ s[-1] = ''
51
+ end
52
+
53
+ return s
54
+ end
55
+ end
@@ -1,3 +1,3 @@
1
1
  module Pkgr
2
- VERSION = "1.5.1"
2
+ VERSION = "1.7.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkgr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Rohr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-08 00:00:00.000000000 Z
11
+ date: 2021-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '10.0'
19
+ version: 12.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '10.0'
26
+ version: 12.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: thor
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2'
103
+ version: '3'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '2'
110
+ version: '3'
111
111
  description: Simplify the deployment of your applications by automatically packaging
112
112
  your application and its dependencies on multiple platforms.
113
113
  email:
@@ -132,9 +132,12 @@ files:
132
132
  - data/buildpacks/amazon-2015
133
133
  - data/buildpacks/centos-6
134
134
  - data/buildpacks/centos-7
135
+ - data/buildpacks/centos-8
136
+ - data/buildpacks/debian-10
135
137
  - data/buildpacks/debian-6
136
138
  - data/buildpacks/debian-7
137
139
  - data/buildpacks/debian-8
140
+ - data/buildpacks/debian-9
138
141
  - data/buildpacks/fedora-20
139
142
  - data/buildpacks/sles-11
140
143
  - data/buildpacks/sles-12
@@ -142,6 +145,8 @@ files:
142
145
  - data/buildpacks/ubuntu-12.04
143
146
  - data/buildpacks/ubuntu-14.04
144
147
  - data/buildpacks/ubuntu-16.04
148
+ - data/buildpacks/ubuntu-18.04
149
+ - data/buildpacks/ubuntu-20.04
145
150
  - data/cli/cli.sh.erb
146
151
  - data/dependencies/amazon.yml
147
152
  - data/dependencies/centos.yml
@@ -185,6 +190,7 @@ files:
185
190
  - lib/pkgr/distributions/sles.rb
186
191
  - lib/pkgr/distributions/ubuntu.rb
187
192
  - lib/pkgr/env.rb
193
+ - lib/pkgr/env_value.rb
188
194
  - lib/pkgr/fpm_command.rb
189
195
  - lib/pkgr/git.rb
190
196
  - lib/pkgr/installer.rb
@@ -205,7 +211,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
211
  requirements:
206
212
  - - ">="
207
213
  - !ruby/object:Gem::Version
208
- version: 1.8.7
214
+ version: 1.9.3
209
215
  required_rubygems_version: !ruby/object:Gem::Requirement
210
216
  requirements:
211
217
  - - ">="
@@ -213,9 +219,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
219
  version: '1.3'
214
220
  requirements: []
215
221
  rubyforge_project:
216
- rubygems_version: 2.2.2
222
+ rubygems_version: 2.7.9
217
223
  signing_key:
218
224
  specification_version: 4
219
225
  summary: Package any Ruby, NodeJS or Go app as a deb or rpm package
220
226
  test_files: []
221
- has_rdoc: