revamp 1.0.1 → 1.1.0
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.
- checksums.yaml +4 -4
- data/lib/revamp/application.rb +19 -2
- data/lib/revamp/cli.rb +1 -0
- data/lib/revamp/filter/puppetver2rpmreq.rb +2 -2
- data/lib/revamp/persister/rpm/builder.rb +143 -0
- data/lib/revamp/persister/rpm/commandline.rb +13 -0
- data/lib/revamp/persister/{rpm-spec.erb → rpm/rpm-spec.erb} +5 -2
- data/lib/revamp/persister/rpm.rb +11 -135
- data/lib/revamp/version.rb +1 -1
- data/lib/revamp.rb +23 -17
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/revamp/application_spec.rb +35 -0
- data/spec/unit/revamp/cli_spec.rb +3 -2
- data/spec/unit/revamp/persister/rpm/builder_spec.rb +61 -0
- data/spec/unit/revamp/persister/{rpm_spec.rb → rpm/commandline_spec.rb} +1 -2
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0688d93de82281a4b9a6b73132d736a10f92cb8
|
4
|
+
data.tar.gz: 55ad5ec9f79efb859a25f623ab5cdba1c47f8713
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57ffbe79238028462f58a583f323c1b889711eb355f3c068367ae816fa22824ba04891a3e1828325bb36808b369bd8052eb57f4d485ddc66916343c44717e679
|
7
|
+
data.tar.gz: 3d4c74dca145077d4b98d67032a58242b388aefa57885174f549c83f518a856cc4bdc37a8465281d054f279de83d7bc721a5d2fb5d0128b27cb0009a6ff76801
|
data/lib/revamp/application.rb
CHANGED
@@ -8,20 +8,37 @@ class Revamp::Application
|
|
8
8
|
@options = options
|
9
9
|
@filenames = options[:filenames]
|
10
10
|
@format = :rpm
|
11
|
+
@log = Revamp.logger
|
11
12
|
end
|
12
13
|
|
13
14
|
def run!
|
15
|
+
converted = []
|
14
16
|
@filenames.each do |file|
|
17
|
+
@log.info("Processing file: #{file} ...")
|
15
18
|
parser = Revamp::Parser::PuppetTarball.new(file)
|
16
19
|
model = parser.parse
|
17
20
|
persister = build_persister
|
18
|
-
persister.persist(model)
|
21
|
+
target = persister.persist(model)
|
22
|
+
report(converted, persister, target)
|
19
23
|
end
|
20
|
-
|
24
|
+
@log.info("#{converted.size} files converted.")
|
21
25
|
end
|
22
26
|
|
23
27
|
protected
|
24
28
|
|
29
|
+
def report(converted, persister, target)
|
30
|
+
if persister.respond_to? :persisted?
|
31
|
+
if persister.persisted?
|
32
|
+
converted << target
|
33
|
+
else
|
34
|
+
@log.info("File #{target} is already converted and clobber is false, skipped.")
|
35
|
+
end
|
36
|
+
else
|
37
|
+
converted << target
|
38
|
+
end
|
39
|
+
converted
|
40
|
+
end
|
41
|
+
|
25
42
|
def build_persister
|
26
43
|
persister = case @format
|
27
44
|
when :rpm then Revamp::Persister::Rpm.new
|
data/lib/revamp/cli.rb
CHANGED
@@ -80,6 +80,7 @@ Usage: #{$PROGRAM_NAME} [options]
|
|
80
80
|
p.option :filenames, 'Files which will be processed', default: []
|
81
81
|
p.option :verbose, 'Should print all information, by default: false', default: false
|
82
82
|
p.option :cleanup, 'Should temporary files be cleaned up, by default: true', default: true
|
83
|
+
p.option :clobber, 'Should overwrite output converted packages, by default: false', default: false
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
@@ -15,8 +15,8 @@ class Revamp::Filter::PuppetVerToRpmReq
|
|
15
15
|
end
|
16
16
|
|
17
17
|
# Filters a Puppet version
|
18
|
-
# @param [puppetver] Revamp::Model::PuppetDependency
|
19
|
-
# @return String[]
|
18
|
+
# @param [puppetver] Revamp::Model::PuppetDependency a puppet dependency object
|
19
|
+
# @return String[] a array of puppet compatibile version specs
|
20
20
|
def filter(puppetver)
|
21
21
|
@slug = slugger.map(puppetver.name)
|
22
22
|
reqs = []
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require 'revamp'
|
2
|
+
require 'revamp/persister/rpm/commandline'
|
3
|
+
|
4
|
+
# A internal methods for builder
|
5
|
+
module Revamp::Persister::Rpm::BuilderInternals
|
6
|
+
def configure_rpm_requirements_line
|
7
|
+
req = []
|
8
|
+
model.dependencies.each { |dep| req += Revamp::Filter::PuppetVerToRpmReq.new.filter(dep) }
|
9
|
+
req.join(', ')
|
10
|
+
end
|
11
|
+
|
12
|
+
def erbize(template, vars)
|
13
|
+
values = OpenStruct.new(vars).instance_eval { binding }
|
14
|
+
ERB.new(template).result(values)
|
15
|
+
end
|
16
|
+
|
17
|
+
def cleanup_files(files)
|
18
|
+
@log.debug("Files to be cleaned up: #{files}")
|
19
|
+
readable = files.reject { |path| !path.readable? }
|
20
|
+
readable.each do |path|
|
21
|
+
path.directory? ? FileUtils.rm_r(path) : path.unlink
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# A builder for RPM's packages
|
27
|
+
class Revamp::Persister::Rpm::Builder
|
28
|
+
SOURCES = 'SOURCES'
|
29
|
+
SPECS = 'SPECS'
|
30
|
+
RPMS = 'RPMS'
|
31
|
+
SELFDIR = Pathname.new(__FILE__).dirname
|
32
|
+
ATTRS = [
|
33
|
+
:name, :version, :filename, :rpm, :model, :tmpdir, :release, :filenames,
|
34
|
+
:specfile, :has_requirements, :requirements, :options
|
35
|
+
]
|
36
|
+
ATTRS.each { |attr| attr_accessor(attr) }
|
37
|
+
attr_reader :produced
|
38
|
+
alias_method :produced?, :produced
|
39
|
+
|
40
|
+
def initialize(model, dir, options)
|
41
|
+
@options = options
|
42
|
+
@name = "puppetmodule_#{model.slugname}"
|
43
|
+
@release = options[:release]
|
44
|
+
assign_model(model)
|
45
|
+
@filename = "#{name}-#{version}-#{release}.noarch.rpm"
|
46
|
+
@rpm = "#{name}-#{version}"
|
47
|
+
@specfile = rpm + '.spec'
|
48
|
+
@tmpdir = dir
|
49
|
+
@produced = false
|
50
|
+
@log = Revamp.logger
|
51
|
+
@requirements = configure_rpm_requirements_line
|
52
|
+
@log.debug("Target file: #{target}")
|
53
|
+
end
|
54
|
+
|
55
|
+
def produce
|
56
|
+
if needs_to_write?
|
57
|
+
@log.info("Converting to RPM package #{target}...")
|
58
|
+
cmd = "rpmbuild -ba #{SPECS}/#{specfile}"
|
59
|
+
verbose = options[:verbose]
|
60
|
+
ret = Revamp::Persister::Rpm::CommandLine.execute(cmd, tmpdir, verbose)
|
61
|
+
fail "RPM Build failed with retcode = #{ret.exitstatus}" unless ret.success?
|
62
|
+
end
|
63
|
+
move_produced
|
64
|
+
end
|
65
|
+
|
66
|
+
def make_structure
|
67
|
+
return unless needs_to_write?
|
68
|
+
FileUtils.mkdir_p(tmpdir.join(SOURCES))
|
69
|
+
FileUtils.mkdir_p(tmpdir.join(SPECS))
|
70
|
+
end
|
71
|
+
|
72
|
+
def write_spec
|
73
|
+
File.open(specfile_path, 'w') { |file| file.write(generate_spec) } if needs_to_write?
|
74
|
+
end
|
75
|
+
|
76
|
+
def write_sources
|
77
|
+
return unless needs_to_write?
|
78
|
+
pathsufix = Pathname.new(rpm)
|
79
|
+
File.open(sources_tgz_path, 'wb') do |tgz|
|
80
|
+
Zlib::GzipWriter.wrap(tgz) do |gz|
|
81
|
+
Gem::Package::TarWriter.new(gz) do |tar|
|
82
|
+
model.files.each do |file, content|
|
83
|
+
full = pathsufix.join(file).to_s
|
84
|
+
tar.add_file_simple(full, 0644, content.length) { |io| io.write(content) }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def cleanup
|
92
|
+
arch = RbConfig::CONFIG['arch'].gsub('-linux', '')
|
93
|
+
cleanup_files [
|
94
|
+
sources_tgz_path, specfile_path, tmpdir.join('BUILD').join(rpm),
|
95
|
+
tmpdir.join('BUILDROOT').join("#{rpm}-#{release}.#{arch}")
|
96
|
+
]
|
97
|
+
end
|
98
|
+
|
99
|
+
protected
|
100
|
+
|
101
|
+
def generate_spec
|
102
|
+
tpl = SELFDIR.join('rpm-spec.erb')
|
103
|
+
values = Hash[ATTRS.map { |key| [key, send(key)] }]
|
104
|
+
erbize(tpl.read, values)
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def assign_model(model)
|
110
|
+
@model = model
|
111
|
+
@filenames = model.files.keys
|
112
|
+
@version = model.version
|
113
|
+
@has_requirements = model.dependencies.any?
|
114
|
+
end
|
115
|
+
|
116
|
+
def sources_tgz_path
|
117
|
+
tmpdir.join(SOURCES).join("#{rpm}.tar.gz")
|
118
|
+
end
|
119
|
+
|
120
|
+
def specfile_path
|
121
|
+
tmpdir.join(SPECS).join(specfile)
|
122
|
+
end
|
123
|
+
|
124
|
+
def target
|
125
|
+
Pathname.new(options[:outdir]).join(filename)
|
126
|
+
end
|
127
|
+
|
128
|
+
def move_produced
|
129
|
+
produced = tmpdir.join(RPMS).join('noarch').join(filename)
|
130
|
+
@log.debug("Produced RPM in build dir: #{produced}")
|
131
|
+
if needs_to_write?
|
132
|
+
FileUtils.mv(produced, target)
|
133
|
+
@produced = true
|
134
|
+
end
|
135
|
+
target
|
136
|
+
end
|
137
|
+
|
138
|
+
def needs_to_write?
|
139
|
+
!File.exist?(target) || options[:clobber]
|
140
|
+
end
|
141
|
+
|
142
|
+
include Revamp::Persister::Rpm::BuilderInternals
|
143
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# A command line executor for command line
|
2
|
+
class Revamp::Persister::Rpm::CommandLine
|
3
|
+
class << self
|
4
|
+
def execute(command, directory, verbose)
|
5
|
+
Revamp.logger.debug("Executing: '#{command}' in directory: '#{directory}'")
|
6
|
+
out = '/dev/null'
|
7
|
+
out = $stdout if verbose
|
8
|
+
pid = Process.spawn(command, chdir: directory, out: out, err: out)
|
9
|
+
Process.wait pid
|
10
|
+
$? # rubocop:disable SpecialGlobalVars
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -6,7 +6,10 @@ Source0: <%= rpm %>.tar.gz
|
|
6
6
|
License: <%= model.license %>
|
7
7
|
Group: Development
|
8
8
|
BuildArch: noarch
|
9
|
-
Provides: puppetmodule(<%= model.slugname %>)
|
9
|
+
Provides: puppetmodule(<%= model.slugname %>) = <%= model.version %>
|
10
|
+
Provides: puppetmodule(<%= model.slugname %>) = <%= model.version %>-<%= release %>
|
11
|
+
Provides: puppetmodule_<%= model.slugname %> = <%= model.version %>
|
12
|
+
Provides: puppetmodule_<%= model.slugname %> = <%= model.version %>-<%= release %>
|
10
13
|
<% if has_requirements %>Requires: <%= requirements %><% end %>
|
11
14
|
%description
|
12
15
|
<%= model.summary %>
|
@@ -25,4 +28,4 @@ mv ${RPM_BUILD_ROOT}%{_sysconfdir}/puppet/modules/<%= rpm %> ${RPM_BUILD_ROOT}%{
|
|
25
28
|
%dir %{_sysconfdir}/puppet/modules
|
26
29
|
%dir %{_sysconfdir}/puppet/modules/<%= model.rawname %>
|
27
30
|
<% filenames.each do |file| %>%{_sysconfdir}/puppet/modules/<%= model.rawname %>/<%= file %>
|
28
|
-
<% end %>
|
31
|
+
<% end %>
|
data/lib/revamp/persister/rpm.rb
CHANGED
@@ -4,7 +4,6 @@ require 'tmpdir'
|
|
4
4
|
require 'erb'
|
5
5
|
require 'ostruct'
|
6
6
|
require 'rbconfig'
|
7
|
-
require 'revamp/filter/puppetver2rpmreq'
|
8
7
|
|
9
8
|
# A main RPM persister
|
10
9
|
class Revamp::Persister::Rpm
|
@@ -17,141 +16,18 @@ class Revamp::Persister::Rpm
|
|
17
16
|
def persist(model)
|
18
17
|
dir = File.expand_path('~')
|
19
18
|
workdir = Pathname.new(dir).join('rpmbuild')
|
20
|
-
builder = Builder.new(model, workdir, options)
|
21
|
-
builder.make_structure
|
22
|
-
builder.write_spec
|
23
|
-
builder.write_sources
|
24
|
-
|
25
|
-
builder.cleanup if options[:cleanup]
|
26
|
-
|
19
|
+
@builder = Builder.new(model, workdir, options)
|
20
|
+
@builder.make_structure
|
21
|
+
@builder.write_spec
|
22
|
+
@builder.write_sources
|
23
|
+
target = @builder.produce
|
24
|
+
@builder.cleanup if options[:cleanup]
|
25
|
+
target
|
27
26
|
end
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
class << self
|
32
|
-
def execute(command, directory, verbose)
|
33
|
-
Revamp.logger.debug("Executing: '#{command}' in directory: '#{directory}'")
|
34
|
-
out = '/dev/null'
|
35
|
-
out = $stdout if verbose
|
36
|
-
pid = Process.spawn(command, chdir: directory, out: out, err: out)
|
37
|
-
Process.wait pid
|
38
|
-
$? # rubocop:disable SpecialGlobalVars
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# A builder for RPM's packages
|
44
|
-
class Builder
|
45
|
-
SOURCES = 'SOURCES'
|
46
|
-
SPECS = 'SPECS'
|
47
|
-
RPMS = 'RPMS'
|
48
|
-
SELFDIR = Pathname.new(__FILE__).dirname
|
49
|
-
ATTRS = [
|
50
|
-
:name, :version, :filename, :rpm,
|
51
|
-
:model, :tmpdir, :release, :filenames,
|
52
|
-
:specfile, :has_requirements,
|
53
|
-
:requirements, :options
|
54
|
-
]
|
55
|
-
ATTRS.each { |attr| attr_accessor(attr) }
|
56
|
-
|
57
|
-
def initialize(model, dir, options)
|
58
|
-
@options = options
|
59
|
-
@name = "puppetmodule_#{model.slugname}"
|
60
|
-
@release = options[:release]
|
61
|
-
@version = model.version
|
62
|
-
@filename = "#{name}-#{version}-#{release}.noarch.rpm"
|
63
|
-
@rpm = "#{name}-#{version}"
|
64
|
-
@specfile = rpm + '.spec'
|
65
|
-
@model = model
|
66
|
-
@tmpdir = dir
|
67
|
-
@filenames = model.files.keys
|
68
|
-
@has_requirements = model.dependencies.any?
|
69
|
-
@requirements = configure_rpm_requirements_line
|
70
|
-
end
|
71
|
-
|
72
|
-
def configure_rpm_requirements_line
|
73
|
-
req = []
|
74
|
-
model.dependencies.each do |dep|
|
75
|
-
req += Revamp::Filter::PuppetVerToRpmReq.new.filter(dep)
|
76
|
-
end
|
77
|
-
req.join(', ')
|
78
|
-
end
|
79
|
-
|
80
|
-
def make_structure
|
81
|
-
FileUtils.mkdir_p(tmpdir.join(SOURCES))
|
82
|
-
FileUtils.mkdir_p(tmpdir.join(SPECS))
|
83
|
-
end
|
84
|
-
|
85
|
-
def erbize(template, vars)
|
86
|
-
values = OpenStruct.new(vars).instance_eval { binding }
|
87
|
-
ERB.new(template).result(values)
|
88
|
-
end
|
89
|
-
|
90
|
-
def write_spec
|
91
|
-
tpl = SELFDIR.join('rpm-spec.erb')
|
92
|
-
values = Hash[ATTRS.map { |key| [key, send(key)] }]
|
93
|
-
spec = erbize(tpl.read, values)
|
94
|
-
File.open(specfile_path, 'w') { |file| file.write(spec) }
|
95
|
-
end
|
96
|
-
|
97
|
-
def write_sources
|
98
|
-
pathsufix = Pathname.new(rpm)
|
99
|
-
File.open(sources_tgz_path, 'wb') do |tgz|
|
100
|
-
Zlib::GzipWriter.wrap(tgz) do |gz|
|
101
|
-
Gem::Package::TarWriter.new(gz) do |tar|
|
102
|
-
model.files.each do |file, content|
|
103
|
-
full = pathsufix.join(file).to_s
|
104
|
-
tar.add_file_simple(full, 0644, content.length) { |io| io.write(content) }
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
def sources_tgz_path
|
112
|
-
sources = tmpdir.join(SOURCES)
|
113
|
-
sources.join("#{rpm}.tar.gz")
|
114
|
-
end
|
115
|
-
|
116
|
-
def specfile_path
|
117
|
-
tmpdir.join(SPECS).join(specfile)
|
118
|
-
end
|
119
|
-
|
120
|
-
def target
|
121
|
-
outdir = options[:outdir]
|
122
|
-
Pathname.new(outdir).join(filename)
|
123
|
-
end
|
124
|
-
|
125
|
-
def produce
|
126
|
-
Revamp.logger.info("Converting to RPM package #{target}...")
|
127
|
-
cmd = "rpmbuild -ba #{SPECS}/#{specfile}"
|
128
|
-
verbose = options[:verbose]
|
129
|
-
ret = Revamp::Persister::Rpm::CommandLine.execute(cmd, tmpdir, verbose)
|
130
|
-
fail "RPM Build failed with retcode = #{ret.exitstatus}" unless ret.success?
|
131
|
-
move_produced
|
132
|
-
target
|
133
|
-
end
|
134
|
-
|
135
|
-
def move_produced
|
136
|
-
produced = tmpdir.join(RPMS).join('noarch').join(filename)
|
137
|
-
Revamp.logger.debug("Produced RPM in build dir: #{produced}")
|
138
|
-
FileUtils.mv(produced, target)
|
139
|
-
end
|
140
|
-
|
141
|
-
def cleanup
|
142
|
-
arch = RbConfig::CONFIG['arch'].gsub('-linux', '')
|
143
|
-
cleanup_files [
|
144
|
-
sources_tgz_path, specfile_path, tmpdir.join('BUILD').join(rpm),
|
145
|
-
tmpdir.join('BUILDROOT').join("#{rpm}-#{release}.#{arch}")
|
146
|
-
]
|
147
|
-
end
|
148
|
-
|
149
|
-
def cleanup_files(files)
|
150
|
-
Revamp.logger.debug("Files to be cleaned up: #{files}")
|
151
|
-
readable = files.reject { |path| !path.readable? }
|
152
|
-
readable.each do |path|
|
153
|
-
path.directory? ? FileUtils.rm_r(path) : path.unlink
|
154
|
-
end
|
155
|
-
end
|
28
|
+
def persisted?
|
29
|
+
@builder.nil? ? false : @builder.produced?
|
156
30
|
end
|
157
31
|
end
|
32
|
+
|
33
|
+
require 'revamp/persister/rpm/builder'
|
data/lib/revamp/version.rb
CHANGED
data/lib/revamp.rb
CHANGED
@@ -25,7 +25,7 @@ module Revamp
|
|
25
25
|
filepath = file.path
|
26
26
|
file.close
|
27
27
|
file.unlink
|
28
|
-
message = "v#{Revamp::VERSION}
|
28
|
+
message = "v#{Revamp::VERSION} #{ex.class}: #{ex.message}"
|
29
29
|
contents = message + "\n\n" + ex.backtrace.join("\n") + "\n"
|
30
30
|
File.write(filepath, contents)
|
31
31
|
bugo = {
|
@@ -37,26 +37,32 @@ module Revamp
|
|
37
37
|
bugo
|
38
38
|
end
|
39
39
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
module Revamp::Model
|
44
|
-
end
|
40
|
+
# A module for modeles
|
41
|
+
module Model
|
42
|
+
end
|
45
43
|
|
46
|
-
# A module for mapper
|
47
|
-
module
|
48
|
-
end
|
44
|
+
# A module for mapper
|
45
|
+
module Mapper
|
46
|
+
end
|
49
47
|
|
50
|
-
# A module for persister
|
51
|
-
module
|
52
|
-
end
|
48
|
+
# A module for persister
|
49
|
+
module Persister
|
50
|
+
end
|
53
51
|
|
54
|
-
# Parser module
|
55
|
-
module
|
56
|
-
end
|
52
|
+
# Parser module
|
53
|
+
module Parser
|
54
|
+
end
|
57
55
|
|
58
|
-
# A module for filters of persiters
|
59
|
-
module
|
56
|
+
# A module for filters of persiters
|
57
|
+
module Filter
|
58
|
+
end
|
60
59
|
end
|
61
60
|
|
62
61
|
require 'revamp/version'
|
62
|
+
require 'revamp/model/puppet-module'
|
63
|
+
require 'revamp/mapper/puppet-name-slugger'
|
64
|
+
require 'revamp/persister/rpm'
|
65
|
+
require 'revamp/filter/puppetver2rpmreq'
|
66
|
+
require 'revamp/parser/puppet-tarball'
|
67
|
+
require 'revamp/application'
|
68
|
+
require 'revamp/cli'
|
data/spec/spec_helper.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Revamp::Application do
|
4
|
+
before(:each) do
|
5
|
+
# Testing protected methods!!
|
6
|
+
described_class.send(:public, *described_class.protected_instance_methods)
|
7
|
+
@level = Revamp.logger.level
|
8
|
+
Revamp.logger.level = 100
|
9
|
+
end
|
10
|
+
after(:each) do
|
11
|
+
Revamp.logger.level = @level
|
12
|
+
end
|
13
|
+
let(:options) { {} }
|
14
|
+
let(:converted) { [] }
|
15
|
+
let(:target) { '/a/target/file.o' }
|
16
|
+
let(:instance) { described_class.new(options)}
|
17
|
+
|
18
|
+
describe '#report' do
|
19
|
+
subject { instance.report(converted, persister, target) }
|
20
|
+
context 'on non supporting :persisted?' do
|
21
|
+
let(:persister) { double() }
|
22
|
+
it { expect(subject).to eq([target]) }
|
23
|
+
end
|
24
|
+
context 'on non persisted one' do
|
25
|
+
let(:persister) { double(:persisted? => false) }
|
26
|
+
it { expect(subject).to eq([]) }
|
27
|
+
it { expect(subject).to be_empty }
|
28
|
+
end
|
29
|
+
context 'on persisted one' do
|
30
|
+
let(:persister) { double(:persisted? => true) }
|
31
|
+
it { expect(subject).to eq([target]) }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Revamp::Persister::Rpm::Builder do
|
4
|
+
let(:model) do
|
5
|
+
mod = Revamp::Model::PuppetModule.new
|
6
|
+
mod.name = 'puppetlabs/apache'
|
7
|
+
mod.version = '3.5.1'
|
8
|
+
mod.license = 'Apache-2.0'
|
9
|
+
mod.summary = 'Installs, configures, and manages Apache virtual hosts, web services, and modules.'
|
10
|
+
mod.dependencies = [
|
11
|
+
{'name' => 'puppetlabs/concat', 'version_requirement' => '>= 1.0.5 <2.0.0'}
|
12
|
+
]
|
13
|
+
mod
|
14
|
+
end
|
15
|
+
let(:spec) do
|
16
|
+
<<-eos
|
17
|
+
Name: puppetmodule_puppetlabs-apache
|
18
|
+
Version: 3.5.1
|
19
|
+
Release: 42
|
20
|
+
Summary: Installs, configures, and manages Apache virtual hosts, web services, and modules.
|
21
|
+
Source0: puppetmodule_puppetlabs-apache-3.5.1.tar.gz
|
22
|
+
License: Apache-2.0
|
23
|
+
Group: Development
|
24
|
+
BuildArch: noarch
|
25
|
+
Provides: puppetmodule(puppetlabs-apache) = 3.5.1
|
26
|
+
Provides: puppetmodule(puppetlabs-apache) = 3.5.1-42
|
27
|
+
Provides: puppetmodule_puppetlabs-apache = 3.5.1
|
28
|
+
Provides: puppetmodule_puppetlabs-apache = 3.5.1-42
|
29
|
+
Requires: puppetmodule(puppetlabs-concat) >= 1.0.5, puppetmodule(puppetlabs-concat) < 2.0.0
|
30
|
+
%description
|
31
|
+
Installs, configures, and manages Apache virtual hosts, web services, and modules.
|
32
|
+
%prep
|
33
|
+
%setup
|
34
|
+
%build
|
35
|
+
%install
|
36
|
+
rm -rf $RPM_BUILD_ROOT
|
37
|
+
mkdir -p ${RPM_BUILD_ROOT}/etc/puppet/modules
|
38
|
+
cp -r %{_builddir}/puppetmodule_puppetlabs-apache-3.5.1 ${RPM_BUILD_ROOT}%{_sysconfdir}/puppet/modules
|
39
|
+
mv ${RPM_BUILD_ROOT}%{_sysconfdir}/puppet/modules/puppetmodule_puppetlabs-apache-3.5.1 ${RPM_BUILD_ROOT}%{_sysconfdir}/puppet/modules/apache
|
40
|
+
%clean
|
41
|
+
%post
|
42
|
+
%files
|
43
|
+
%dir %{_sysconfdir}/puppet
|
44
|
+
%dir %{_sysconfdir}/puppet/modules
|
45
|
+
%dir %{_sysconfdir}/puppet/modules/apache
|
46
|
+
|
47
|
+
eos
|
48
|
+
end
|
49
|
+
before(:each) do
|
50
|
+
# Testing protected methods!!
|
51
|
+
described_class.send(:public, *described_class.protected_instance_methods)
|
52
|
+
end
|
53
|
+
let(:dir) { Dir.tmpdir }
|
54
|
+
let(:options) { { :release => 42, :outdir => '/tmp/revamp-output' } }
|
55
|
+
let(:instance) { described_class.new(model, dir, options) }
|
56
|
+
describe '#generate_spec' do
|
57
|
+
subject { instance.generate_spec }
|
58
|
+
it { expect(subject).to eq spec }
|
59
|
+
it { expect(subject).to match /Version: 3\.5\.1/ }
|
60
|
+
end
|
61
|
+
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'revamp/persister/rpm'
|
3
2
|
require 'rbconfig'
|
4
3
|
|
5
4
|
describe Revamp::Persister::Rpm::CommandLine do
|
@@ -29,4 +28,4 @@ describe Revamp::Persister::Rpm::CommandLine do
|
|
29
28
|
subject { described_class.execute(command, directory, options) }
|
30
29
|
it { expect(subject).to be_success }
|
31
30
|
end
|
32
|
-
end
|
31
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: revamp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Centralny Ośrodek Informatyki
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-12-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -83,17 +83,21 @@ files:
|
|
83
83
|
- lib/revamp/mapper/puppet-name-slugger.rb
|
84
84
|
- lib/revamp/model/puppet-module.rb
|
85
85
|
- lib/revamp/parser/puppet-tarball.rb
|
86
|
-
- lib/revamp/persister/rpm-spec.erb
|
87
86
|
- lib/revamp/persister/rpm.rb
|
87
|
+
- lib/revamp/persister/rpm/builder.rb
|
88
|
+
- lib/revamp/persister/rpm/commandline.rb
|
89
|
+
- lib/revamp/persister/rpm/rpm-spec.erb
|
88
90
|
- lib/revamp/version.rb
|
89
91
|
- revamp.gemspec
|
90
92
|
- spec/file_matchers.rb
|
91
93
|
- spec/fixtures/coi-sample-0.1.1.tar.gz
|
92
94
|
- spec/spec_helper.rb
|
95
|
+
- spec/unit/revamp/application_spec.rb
|
93
96
|
- spec/unit/revamp/cli_spec.rb
|
94
97
|
- spec/unit/revamp/filter/puppetver2rpmreq_spec.rb
|
95
98
|
- spec/unit/revamp/parser/puppet-tarball_spec.rb
|
96
|
-
- spec/unit/revamp/persister/
|
99
|
+
- spec/unit/revamp/persister/rpm/builder_spec.rb
|
100
|
+
- spec/unit/revamp/persister/rpm/commandline_spec.rb
|
97
101
|
- spec/unit/revamp/version_spec.rb
|
98
102
|
- spec/unit/revamp_spec.rb
|
99
103
|
homepage: https://github.com/coi-gov-pl/gem-revamp
|
@@ -124,10 +128,12 @@ test_files:
|
|
124
128
|
- spec/file_matchers.rb
|
125
129
|
- spec/fixtures/coi-sample-0.1.1.tar.gz
|
126
130
|
- spec/spec_helper.rb
|
131
|
+
- spec/unit/revamp/application_spec.rb
|
127
132
|
- spec/unit/revamp/cli_spec.rb
|
128
133
|
- spec/unit/revamp/filter/puppetver2rpmreq_spec.rb
|
129
134
|
- spec/unit/revamp/parser/puppet-tarball_spec.rb
|
130
|
-
- spec/unit/revamp/persister/
|
135
|
+
- spec/unit/revamp/persister/rpm/builder_spec.rb
|
136
|
+
- spec/unit/revamp/persister/rpm/commandline_spec.rb
|
131
137
|
- spec/unit/revamp/version_spec.rb
|
132
138
|
- spec/unit/revamp_spec.rb
|
133
139
|
has_rdoc:
|