buildizer 0.0.6 → 0.0.7

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.
@@ -4,8 +4,14 @@ module Buildizer
4
4
  def underscore
5
5
  self.gsub(/(.)([A-Z])/,'\1_\2').downcase
6
6
  end
7
+
8
+ def match_glob?(glob)
9
+ File.fnmatch? glob, self, File::FNM_EXTGLOB
10
+ end
11
+
12
+ def on?
13
+ ['1', 'true', 'yes'].include? self.downcase
14
+ end
7
15
  end
8
16
  end # Refine
9
-
10
- using Refine
11
17
  end # Buildizer
@@ -11,10 +11,12 @@ module Buildizer
11
11
  attr_reader :prepare
12
12
  attr_reader :build_dep
13
13
  attr_reader :before_build
14
+ attr_reader :maintainer
14
15
 
15
16
  def initialize(builder, image,
16
- name:, package_name:, package_version:, package_cloud:,
17
- prepare: [], build_dep: [], before_build: [])
17
+ name:, package_name:, package_version:, package_cloud: [],
18
+ prepare: [], build_dep: [], before_build: [],
19
+ maintainer: nil, &blk)
18
20
  @builder = builder
19
21
  @image = image
20
22
 
@@ -25,14 +27,84 @@ module Buildizer
25
27
  @prepare = prepare
26
28
  @build_dep = build_dep
27
29
  @before_build = before_build
30
+ @maintainer = maintainer
31
+
32
+ yield if block_given?
33
+
34
+ image_work_path.mkpath
35
+ image_build_path.mkpath
36
+ image_extra_path.mkpath
37
+ end
38
+
39
+ def image_work_path
40
+ raise
41
+ end
42
+
43
+ def container_package_name
44
+ raise
45
+ end
46
+
47
+ def package_version_tag_param_name
48
+ raise
49
+ end
50
+
51
+ def maintainer_email
52
+ match = maintainer.match(/<(.*)>/) if maintainer
53
+ match[1] if match
54
+ end
55
+
56
+ def package_version
57
+ @package_version.nil? ? nil : @package_version.to_s
58
+ end
59
+
60
+ def base_package_name
61
+ package_name.split('-').first
62
+ end
63
+
64
+ def docker_image_repository
65
+ "#{builder.packager.docker_image || "buildizer/#{package_name}"}"
66
+ end
67
+
68
+ def docker_image_tag
69
+ name.gsub('/', '__')
28
70
  end
29
71
 
30
72
  def docker_image
31
- "#{builder.packager.docker_image || "buildizer/#{package_name}"}:#{name}"
73
+ "#{docker_image_repository}:#{docker_image_tag}"
74
+ end
75
+
76
+ def package_cloud
77
+ @package_cloud.map do |desc|
78
+ desc.merge(package_path: _package_cloud_path(desc[:repo]))
79
+ end
80
+ end
81
+
82
+ def _package_cloud_path(repo)
83
+ "#{repo}/#{image.os_package_cloud_name}/#{image.os_package_cloud_version}"
84
+ end
85
+
86
+ def image_build_path
87
+ image_work_path.join('build')
88
+ end
89
+
90
+ def image_extra_path
91
+ image_work_path.join('extra')
92
+ end
93
+
94
+ def package_version_tag
95
+ send(package_version_tag_param_name)
96
+ end
97
+
98
+ def container_package_archive_name
99
+ "#{container_package_name}.tar.gz"
100
+ end
101
+
102
+ def container_package_path
103
+ Pathname.new('/').join(container_package_name)
32
104
  end
33
105
 
34
- def package_cloud_path
35
- "#{package_cloud}/#{image.os_package_cloud_name}/#{image.os_package_cloud_version}"
106
+ def container_package_archive_path
107
+ Pathname.new('/').join(container_package_archive_name)
36
108
  end
37
109
  end # Base
38
110
  end # Target
@@ -1,16 +1,63 @@
1
1
  module Buildizer
2
2
  module Target
3
3
  class Fpm < Base
4
+ include PackageNameMod
5
+
4
6
  attr_reader :fpm_script
5
7
  attr_reader :fpm_config_files
6
8
  attr_reader :fpm_files
9
+ attr_reader :fpm_conflicts
10
+ attr_reader :fpm_replaces
11
+ attr_reader :fpm_provides
12
+ attr_reader :fpm_depends
13
+ attr_reader :fpm_description
14
+ attr_reader :fpm_url
15
+
16
+ def initialize(builder, image,
17
+ fpm_script: [], fpm_config_files: {}, fpm_files: {},
18
+ fpm_conflicts: [], fpm_replaces: {}, fpm_provides: [],
19
+ fpm_depends: [], fpm_description: nil, fpm_url: nil, **kwargs, &blk)
20
+ super(builder, image, **kwargs) do
21
+ @fpm_script = fpm_script
22
+ @fpm_config_files = fpm_config_files
23
+ @fpm_files = fpm_files
24
+ @fpm_conflicts = fpm_conflicts
25
+ @fpm_replaces = fpm_replaces
26
+ @fpm_provides = fpm_provides
27
+ @fpm_depends = fpm_depends
28
+ @fpm_description = fpm_description
29
+ @fpm_url = fpm_url
30
+
31
+ yield if block_given?
32
+ end
33
+ end
34
+
35
+ def image_work_path
36
+ builder.work_path.join('fpm').join(package_name).join(package_version).join(name)
37
+ end
7
38
 
8
- def initialize(builder, image, fpm_script: [], fpm_config_files: {}, fpm_files: {}, **kwargs)
9
- super(builder, image, **kwargs)
39
+ def package_version_tag_param_name
40
+ :package_version
41
+ end
42
+
43
+ def fpm_config_files_expand
44
+ _expand_files_directive fpm_config_files
45
+ end
46
+
47
+ def fpm_files_expand
48
+ _expand_files_directive fpm_files
49
+ end
10
50
 
11
- @fpm_script = fpm_script
12
- @fpm_config_files = fpm_config_files
13
- @fpm_files = fpm_files
51
+ def _expand_files_directive(files)
52
+ files.reduce({}) do |res, (dst, src)|
53
+ if src.is_a? Array
54
+ res.merge src.map {|src_file| [File.join(dst, src_file), src_file]}.to_h
55
+ elsif src.nil?
56
+ res.merge dst => File.basename(dst)
57
+ else
58
+ res.merge dst => src
59
+ end
60
+ end
14
61
  end
15
62
  end # Fpm
16
63
  end # Target
@@ -1,6 +1,15 @@
1
1
  module Buildizer
2
2
  module Target
3
3
  class Native < Base
4
+ include PackageNameMod
5
+
6
+ def image_work_path
7
+ builder.work_path.join('native').join(package_name).join(package_version).join(name)
8
+ end
9
+
10
+ def package_version_tag_param_name
11
+ :package_version
12
+ end
4
13
  end # Native
5
14
  end # Target
6
15
  end # Buildizer
@@ -0,0 +1,17 @@
1
+ module Buildizer
2
+ module Target
3
+ module PackageNameMod
4
+ def package_upstream_version
5
+ package_version.split('-')[0]
6
+ end
7
+
8
+ def package_release
9
+ package_version.split('-')[1]
10
+ end
11
+
12
+ def container_package_name
13
+ "#{package_name}-#{package_upstream_version}"
14
+ end
15
+ end # PackageNameMod
16
+ end # Target
17
+ end # Buildizer
@@ -0,0 +1,33 @@
1
+ module Buildizer
2
+ module Target
3
+ class Patch < Base
4
+ attr_reader :patch
5
+ attr_reader :patch_version
6
+
7
+ def initialize(builder, image, patch: [], patch_version: nil, **kwargs, &blk)
8
+ super(builder, image, **kwargs) do
9
+ @patch = patch
10
+ @patch_version = patch_version
11
+
12
+ yield if block_given?
13
+ end
14
+ end
15
+
16
+ def patch_version
17
+ @patch_version.nil? ? nil : @patch_version.to_s
18
+ end
19
+
20
+ def image_work_path
21
+ builder.work_path.join('patch').join(package_name).join(patch_version).join(name)
22
+ end
23
+
24
+ def container_package_name
25
+ "#{package_name}-#{patch_version}"
26
+ end
27
+
28
+ def package_version_tag_param_name
29
+ :patch_version
30
+ end
31
+ end # Patch
32
+ end # Target
33
+ end # Buildizer
@@ -1,3 +1,3 @@
1
1
  module Buildizer
2
- VERSION = '0.0.6'
2
+ VERSION = '0.0.7'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - flant
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-18 00:00:00.000000000 Z
11
+ date: 2016-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -223,6 +223,7 @@ files:
223
223
  - lib/buildizer/builder/base.rb
224
224
  - lib/buildizer/builder/fpm.rb
225
225
  - lib/buildizer/builder/native.rb
226
+ - lib/buildizer/builder/patch.rb
226
227
  - lib/buildizer/cli.rb
227
228
  - lib/buildizer/docker.rb
228
229
  - lib/buildizer/error.rb
@@ -234,12 +235,15 @@ files:
234
235
  - lib/buildizer/image/ubuntu.rb
235
236
  - lib/buildizer/image/ubuntu1204.rb
236
237
  - lib/buildizer/image/ubuntu1404.rb
238
+ - lib/buildizer/image/ubuntu1604.rb
237
239
  - lib/buildizer/packager.rb
238
240
  - lib/buildizer/refine.rb
239
241
  - lib/buildizer/target.rb
240
242
  - lib/buildizer/target/base.rb
241
243
  - lib/buildizer/target/fpm.rb
242
244
  - lib/buildizer/target/native.rb
245
+ - lib/buildizer/target/package_name_mod.rb
246
+ - lib/buildizer/target/patch.rb
243
247
  - lib/buildizer/version.rb
244
248
  homepage: https://github.com/flant/buildizer
245
249
  licenses: