vanagon 0.14.2 → 0.14.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -17
- data/bin/ship +13 -9
- data/lib/vanagon.rb +4 -0
- data/lib/vanagon/common/pathname.rb +11 -8
- data/lib/vanagon/engine/always_be_scheduling.rb +22 -6
- data/lib/vanagon/environment.rb +1 -0
- data/lib/vanagon/extensions/hashable.rb +3 -2
- data/lib/vanagon/platform.rb +5 -5
- data/lib/vanagon/platform/rpm/aix.rb +2 -2
- data/lib/vanagon/platform/rpm/sles.rb +2 -2
- data/lib/vanagon/platform/rpm/wrl.rb +5 -5
- data/lib/vanagon/platform/windows.rb +29 -19
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfdf9e485d076f8615fb5dec7ee3659bdb30cadf
|
4
|
+
data.tar.gz: 11c28aee93eaa0c737ceb44fc6152bef2d5fe421
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d88904c2f719cbd894784ef42792b78dbcf7c407eea7320f80e208780de4e60858aad4835109a94018a956b3596732226c48131488efd6b10dc95ae54ca816bf
|
7
|
+
data.tar.gz: a934492d38471190d3c984d2ff35a6d87bbf459ade415d44e39a68a2c48639845e7c7831bb360f4c99bb09e06b9478642dc18f07ef619186a1e44c50d84ecf54
|
data/README.md
CHANGED
@@ -9,13 +9,13 @@
|
|
9
9
|
- [Local Host:](#local-host)
|
10
10
|
- [Remote Build Target:](#remote-build-target)
|
11
11
|
- [Configuration and Usage](#configuration-and-usage)
|
12
|
+
- [Overview](#overview)
|
12
13
|
- [`build` usage](#build-usage)
|
13
14
|
- [`inspect` usage](#inspect-usage)
|
14
15
|
- [Engines](#engines)
|
15
16
|
- [Amazon Ec2](#amazon-ec2)
|
16
17
|
- [Contributing](#contributing)
|
17
18
|
- [License](#license)
|
18
|
-
- [Overview](#overview)
|
19
19
|
- [Maintainers](#maintainers)
|
20
20
|
|
21
21
|
<!-- /MarkdownTOC -->
|
@@ -26,7 +26,8 @@
|
|
26
26
|
Vanagon is a tool to build a single package out of a project, which can itself
|
27
27
|
contain one or more components. This tooling is being used to develop the
|
28
28
|
puppet-agent package, which contains components such as openssl, ruby, and
|
29
|
-
augeas among others. For a simple example, please see the project in the
|
29
|
+
augeas among others. For a simple example, please see the project in the
|
30
|
+
[`examples/`](examples) directory.
|
30
31
|
|
31
32
|
Vanagon builds up a Makefile and packaging files (specfile for RPM,
|
32
33
|
control/rules/etc for DEB) and copies them to a remote host, where make can be
|
@@ -71,6 +72,18 @@ Vanagon won't be much use without a project to build. Beyond that, you must
|
|
71
72
|
define any platforms you want to build for. Vanagon ships with some simple
|
72
73
|
binaries to use, but the one you probably care about is named 'build'.
|
73
74
|
|
75
|
+
### Overview
|
76
|
+
|
77
|
+
Vanagon is broken down into three core ideas: the project, the component and
|
78
|
+
the platform. The project contains one or more components and is built for a
|
79
|
+
platform. As a quick example, if I had a ruby app and wanted to package it, the
|
80
|
+
project would probably contain a component for ruby and a component for my app.
|
81
|
+
If I wanted to build it for debian wheezy, I would define a platform called
|
82
|
+
wheezy and build my project against it.
|
83
|
+
|
84
|
+
For more detailed examples of the DSLs available, please see the
|
85
|
+
[examples](examples) directory and the YARD documentation for Vanagon.
|
86
|
+
|
74
87
|
### `build` usage
|
75
88
|
The build command has positional arguments and position independent flags.
|
76
89
|
|
@@ -281,24 +294,12 @@ end
|
|
281
294
|
Contributing
|
282
295
|
---
|
283
296
|
We'd love to get contributions from you! Once you are up and running, take a look at the
|
284
|
-
[Contribution Documents](
|
297
|
+
[Contribution Documents](docs/CONTRIBUTING.md) to see how to get your changes merged
|
285
298
|
in.
|
286
299
|
|
287
300
|
License
|
288
301
|
---
|
289
|
-
See [LICENSE](
|
290
|
-
|
291
|
-
Overview
|
292
|
-
---
|
293
|
-
Vanagon is broken down into three core ideas: the project, the component and
|
294
|
-
the platform. The project contains one or more components and is built for a
|
295
|
-
platform. As a quick example, if I had a ruby app and wanted to package it, the
|
296
|
-
project would probably contain a component for ruby and a component for my app.
|
297
|
-
If I wanted to build it for debian wheezy, I would define a platform called
|
298
|
-
wheezy and build my project against it.
|
299
|
-
|
300
|
-
For more detailed examples of the DSLs available, please see the
|
301
|
-
[examples](https://github.com/puppetlabs/vanagon/tree/master/examples) directory and the YARD documentation for Vanagon.
|
302
|
+
See [LICENSE](LICENSE) file.
|
302
303
|
|
303
304
|
## Maintainers
|
304
|
-
See MAINTAINERS file.
|
305
|
+
See [MAINTAINERS](MAINTAINERS) file.
|
data/bin/ship
CHANGED
@@ -6,6 +6,16 @@ ENV["PROJECT_ROOT"] = Dir.pwd
|
|
6
6
|
# This is not intended to function outside of Puppet Labs' infrastructure.
|
7
7
|
# End of warning.
|
8
8
|
|
9
|
+
artifactory_warning = <<-DOC
|
10
|
+
Unable to ship packages to artifactory. Please make sure you are pointing to a
|
11
|
+
recent version of packaging in your Gemfile. Please also make sure you include
|
12
|
+
the artifactory gem in your Gemfile.
|
13
|
+
|
14
|
+
i.e.,
|
15
|
+
gem 'packaging', :github => 'puppetlabs/packaging', branch: '1.0.x'
|
16
|
+
gem 'artifactory'
|
17
|
+
DOC
|
18
|
+
|
9
19
|
if Dir["output/**/*"].select { |entry| File.file?(entry) }.empty?
|
10
20
|
fail "No packages to ship in the output directory. Maybe you want to build some first?"
|
11
21
|
else
|
@@ -15,14 +25,8 @@ else
|
|
15
25
|
begin
|
16
26
|
Pkg::Util::RakeUtils.invoke_task('pl:jenkins:ship_to_artifactory', 'output')
|
17
27
|
rescue LoadError
|
18
|
-
warn
|
19
|
-
|
20
|
-
|
21
|
-
the artifactory gem in your Gemfile.
|
22
|
-
|
23
|
-
i.e.,
|
24
|
-
gem 'packaging', :github => 'puppetlabs/packaging', branch: '1.0.x'
|
25
|
-
gem 'artifactory'
|
26
|
-
DOC
|
28
|
+
warn artifactory_warning
|
29
|
+
rescue
|
30
|
+
warn artifactory_warning
|
27
31
|
end
|
28
32
|
end
|
data/lib/vanagon.rb
CHANGED
@@ -21,7 +21,7 @@ class Vanagon
|
|
21
21
|
# representing the group name of the owner of self.
|
22
22
|
attr_accessor :path, :mode, :owner, :group
|
23
23
|
|
24
|
-
# Each Pathname requires a filesystem path, and has many optional
|
24
|
+
# Each {Pathname} requires a filesystem path, and has many optional
|
25
25
|
# properties that may be set at initialization time.
|
26
26
|
# @param [String, Integer] mode the UNIX Octal permission string to use when this file is archived
|
27
27
|
# @param [String, Integer] owner the username or UID to use when this file is archived
|
@@ -38,17 +38,17 @@ class Vanagon
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# An alias to {Vanagon::Common::Pathname}'s constructor method,
|
41
|
-
# which returns a new Vanagon::Common::Pathname, explicitly marked as a file
|
41
|
+
# which returns a new {Vanagon::Common::Pathname}, explicitly marked as a file
|
42
42
|
# @see Vanagon::Common::Pathname#initialize
|
43
43
|
#
|
44
|
-
# @example Create a new Vanagon::Common::Pathname, marked as a file.
|
44
|
+
# @example Create a new {Vanagon::Common::Pathname}, marked as a file.
|
45
45
|
# Vanagon::Common::Pathname.file('/etc/puppet/puppet/puppet.conf')
|
46
46
|
def self.file(path, **args)
|
47
47
|
new(path, **args.merge!({ config: false }))
|
48
48
|
end
|
49
49
|
|
50
50
|
# An alias to {Vanagon::Common::Pathname}'s constructor method,
|
51
|
-
# which returns a new Vanagon::Common::Pathname, explicitly marked as a configuration file
|
51
|
+
# which returns a new {Vanagon::Common::Pathname}, explicitly marked as a configuration file
|
52
52
|
# @see Vanagon::Common::Pathname#initialize
|
53
53
|
#
|
54
54
|
# @example Create a new configuration file, marked as a configuration file.
|
@@ -69,9 +69,9 @@ class Vanagon
|
|
69
69
|
!!(@mode || @owner || @group)
|
70
70
|
end
|
71
71
|
|
72
|
-
# Equality -- Two instances of Vanagon::Common::Pathname are equal if they
|
72
|
+
# Equality -- Two instances of {Vanagon::Common::Pathname} are equal if they
|
73
73
|
# contain the same number attributes and if each attribute is equal to
|
74
|
-
# (according to
|
74
|
+
# (according to `Object#==`) the corresponding attribute in other_pathname.
|
75
75
|
#
|
76
76
|
# @return [Boolean] true if all attributes have equal values, or otherwise false.
|
77
77
|
def ==(other)
|
@@ -79,8 +79,11 @@ class Vanagon
|
|
79
79
|
end
|
80
80
|
alias :eql? :==
|
81
81
|
|
82
|
-
#
|
83
|
-
#
|
82
|
+
# Compute a hash-code for self, derived from its attributes. Two
|
83
|
+
# {Pathname} objects with the same content will have the same hash code
|
84
|
+
# (and will compare as equal using {#eql?})
|
85
|
+
#
|
86
|
+
# @return [Fixnum]
|
84
87
|
def hash
|
85
88
|
instance_variables.map { |v| instance_variable_get(v) }.hash
|
86
89
|
end
|
@@ -3,8 +3,8 @@ require 'json'
|
|
3
3
|
|
4
4
|
class Vanagon
|
5
5
|
class Engine
|
6
|
-
# This engine allows build resources to be managed by the "Always be
|
7
|
-
# Scheduling" (ABS) scheduler
|
6
|
+
# This engine allows build resources to be managed by the ["Always be
|
7
|
+
# Scheduling" (ABS) scheduler](https://github.com/puppetlabs/always-be-scheduling)
|
8
8
|
#
|
9
9
|
# ABS expects to ask `build_host_info` for the needed resources for a build,
|
10
10
|
# and to have that return a platform name. ABS will then acquire the
|
@@ -18,53 +18,69 @@ class Vanagon
|
|
18
18
|
# `build_host_info ... --engine always_be_scheduling` is specified on the
|
19
19
|
# command-line.
|
20
20
|
#
|
21
|
-
# Configuration
|
21
|
+
# Configuration
|
22
|
+
# -------------
|
22
23
|
#
|
23
24
|
# Project platform configurations can specify the platform name to be returned
|
24
25
|
# via the `abs_resource_name` attribute. If this is not set but `vmpooler_template`
|
25
26
|
# is set, then the `vmpooler_template` value will be used. Otherwise, the
|
26
27
|
# platform name will be returned unchanged.
|
27
28
|
#
|
28
|
-
# Example 1
|
29
|
+
# Example 1
|
30
|
+
# ---------
|
29
31
|
#
|
32
|
+
# ```
|
30
33
|
# platform 'ubuntu-10.04-amd64' do |plat|
|
31
34
|
# plat.vmpooler_template 'ubuntu-1004-amd64'
|
32
35
|
# end
|
36
|
+
# ```
|
33
37
|
#
|
38
|
+
# ```
|
34
39
|
# $ build_host_info puppet-agent ubuntu-10.04-amd64
|
35
40
|
# {"name":"ubuntu-10.04-amd64","engine":"pooler"}
|
36
41
|
#
|
37
42
|
# $ build_host_info puppet-agent ubuntu-10.04-amd64 --engine always_be_scheduling
|
38
43
|
# {"name":"ubuntu-10.04-amd64","engine":"always_be_scheduling"}
|
44
|
+
# ```
|
39
45
|
#
|
40
46
|
#
|
41
|
-
# Example 2
|
47
|
+
# Example 2
|
48
|
+
# ---------
|
42
49
|
#
|
50
|
+
# ```
|
43
51
|
# platform 'aix-5.3-ppc' do |plat|
|
44
52
|
# plat.build_host ['aix53-builder-1.example.com']
|
45
53
|
# plat.abs_resource_name 'aix-53-ppc'
|
46
54
|
# end
|
55
|
+
# ```
|
47
56
|
#
|
57
|
+
# ```
|
48
58
|
# $ build_host_info puppet-agent aix-5.3-ppc
|
49
59
|
# {"name":"aix53-builder-1.example.com","engine":"hardware"}
|
50
60
|
#
|
51
61
|
# $ build_host_info puppet-agent aix-5.3-ppc --engine always_be_scheduling
|
52
62
|
# {"name":"aix-53-ppc","engine":"always_be_scheduling"}
|
63
|
+
# ```
|
53
64
|
#
|
54
65
|
#
|
55
|
-
# Example 3
|
66
|
+
# Example 3
|
67
|
+
# ---------
|
56
68
|
#
|
69
|
+
# ```
|
57
70
|
# platform 'aix-5.3-ppc' do |plat|
|
58
71
|
# plat.build_host ['aix53-builder-1.example.com']
|
59
72
|
# plat.vmpooler_template
|
60
73
|
# plat.abs_resource_name 'aix-53-ppc'
|
61
74
|
# end
|
75
|
+
# ```
|
62
76
|
#
|
77
|
+
# ```
|
63
78
|
# $ build_host_info puppet-agent aix-5.3-ppc
|
64
79
|
# {"name":"aix53-builder-1.example.com","engine":"hardware"}
|
65
80
|
#
|
66
81
|
# $ build_host_info puppet-agent aix-5.3-ppc --engine always_be_scheduling
|
67
82
|
# {"name":"aix-53-ppc","engine":"always_be_scheduling"}
|
83
|
+
# ```
|
68
84
|
class AlwaysBeScheduling < Base
|
69
85
|
def initialize(platform, target, **opts)
|
70
86
|
super
|
data/lib/vanagon/environment.rb
CHANGED
@@ -50,6 +50,7 @@ class Vanagon
|
|
50
50
|
# Associates the value given by value with the key given by key. Keys will
|
51
51
|
# be cast to Strings, and should conform to the Open Group's guidelines for
|
52
52
|
# portable shell variable names:
|
53
|
+
#
|
53
54
|
# Environment variable names used by the utilities in the Shell and
|
54
55
|
# Utilities volume of IEEE Std 1003.1-2001 consist solely of uppercase
|
55
56
|
# letters, digits, and the '_' (underscore) from the characters defined
|
@@ -18,9 +18,10 @@ module HashableAttributes
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
# Vanagon classes generally don't implement JSON or Hash functionality
|
22
|
-
# so those need to be monkey-patched for useful inspection.
|
23
21
|
class Vanagon
|
22
|
+
# Vanagon classes generally don't implement JSON or Hash functionality
|
23
|
+
# so those need to be monkey-patched for useful inspection.
|
24
|
+
|
24
25
|
class Platform
|
25
26
|
include HashableAttributes
|
26
27
|
end
|
data/lib/vanagon/platform.rb
CHANGED
@@ -28,7 +28,7 @@ class Vanagon
|
|
28
28
|
attr_accessor :defaultdir
|
29
29
|
|
30
30
|
# Each of these holds the path or name of the command in question,
|
31
|
-
# e.g. `copy = "/usr/local/bin/gcp"`, or `copy = "cp"
|
31
|
+
# e.g. `copy = "/usr/local/bin/gcp"`, or `copy = "cp"`
|
32
32
|
attr_accessor :copy
|
33
33
|
attr_accessor :find
|
34
34
|
attr_accessor :install
|
@@ -42,14 +42,14 @@ class Vanagon
|
|
42
42
|
# Hold a string containing the values that a given platform
|
43
43
|
# should use when a Makefile is run - resolves to the CFLAGS
|
44
44
|
# and LDFLAGS variables. This should be changed to take advantage
|
45
|
-
# of the Environment, so that we can better leverage Make's
|
46
|
-
# Implicit Variables
|
47
|
-
#
|
45
|
+
# of the {Vanagon::Environment}, so that we can better leverage Make's
|
46
|
+
# {https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html Implicit Variables}.
|
47
|
+
#
|
48
48
|
# It should also be extended to support CXXFLAGS and CPPFLAGS ASAP.
|
49
49
|
attr_accessor :cflags
|
50
50
|
attr_accessor :ldflags
|
51
51
|
|
52
|
-
# The overall Environment that a given platform
|
52
|
+
# The overall {Vanagon::Environment} that a given platform
|
53
53
|
# should pass to each component
|
54
54
|
attr_accessor :environment
|
55
55
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
# AIX is special. This subclassing gives us the chance to define some sane
|
2
|
-
# defaults for aix without cluttering the main rpm class in if statements.
|
3
1
|
class Vanagon
|
4
2
|
class Platform
|
5
3
|
class RPM
|
4
|
+
# AIX is special. This subclassing gives us the chance to define some sane
|
5
|
+
# defaults for aix without cluttering the main rpm class in if statements.
|
6
6
|
class AIX < Vanagon::Platform::RPM
|
7
7
|
def rpm_defines
|
8
8
|
%(--define '_topdir $(tempdir)/rpmbuild' )
|
@@ -1,8 +1,8 @@
|
|
1
|
-
# SLES is special, mainly in the differences between yum and zypper,
|
2
|
-
# so here we subclass SLES off of rpm.
|
3
1
|
class Vanagon
|
4
2
|
class Platform
|
5
3
|
class RPM
|
4
|
+
# SLES is special, mainly in the differences between yum and zypper,
|
5
|
+
# so here we subclass SLES off of rpm.
|
6
6
|
class SLES < Vanagon::Platform::RPM
|
7
7
|
# Helper to setup a zypper repository on a target system
|
8
8
|
#
|
@@ -1,11 +1,11 @@
|
|
1
|
-
# This platform definition was created to account for oddities with
|
2
|
-
# the RPM available on WindRiver Linux based systems. WRL uses RPMv5
|
3
|
-
# and some of the WRL-based OS platforms we support (e.g, HuaweiOS)
|
4
|
-
# do not have package repo systems or support for installing remote
|
5
|
-
# RPMs via urls
|
6
1
|
class Vanagon
|
7
2
|
class Platform
|
8
3
|
class RPM
|
4
|
+
# This platform definition was created to account for oddities with
|
5
|
+
# the RPM available on WindRiver Linux based systems. WRL uses RPMv5
|
6
|
+
# and some of the WRL-based OS platforms we support (e.g, HuaweiOS)
|
7
|
+
# do not have package repo systems or support for installing remote
|
8
|
+
# RPMs via urls
|
9
9
|
class WRL < Vanagon::Platform::RPM
|
10
10
|
# Some WRL RPM platforms (e.g, HuaweiOS) don't allow you to
|
11
11
|
# install remote packages via url, so we'll do a dance to
|
@@ -71,6 +71,7 @@ class Vanagon
|
|
71
71
|
|
72
72
|
# Method to recursively copy from a source project resource directory
|
73
73
|
# to a destination (wix) work directory.
|
74
|
+
#
|
74
75
|
# strongly suspect the original cp_r command would have done all of this.
|
75
76
|
#
|
76
77
|
# @param proj_resources [String] Project Resource File directory
|
@@ -81,7 +82,8 @@ class Vanagon
|
|
81
82
|
end
|
82
83
|
|
83
84
|
# Method to merge in the files from the Vanagon (generic) directories.
|
84
|
-
#
|
85
|
+
#
|
86
|
+
# Project specific files take precedence, so since these are copied prior
|
85
87
|
# to this function, then this merge operation will ignore existing files
|
86
88
|
#
|
87
89
|
# @param vanagon_root [String] Vanagon wix resources directory
|
@@ -143,13 +145,14 @@ class Vanagon
|
|
143
145
|
end
|
144
146
|
|
145
147
|
# The specific bits used to generate a windows nuget package for a given project
|
146
|
-
#
|
147
|
-
#
|
148
|
+
#
|
149
|
+
# Nexus expects packages to be named `#{name}-#{version}.nupkg`. However, chocolatey
|
150
|
+
# will generate them to be `#{name}.#{version}.nupkg`. So, we have to rename the
|
148
151
|
# package after we build it.
|
149
152
|
#
|
150
153
|
# @param project [Vanagon::Project] project to build a nuget package of
|
151
154
|
# @return [Array] list of commands required to build a nuget package for
|
152
|
-
#
|
155
|
+
# the given project from a tarball
|
153
156
|
def generate_nuget_package(project) # rubocop:disable Metrics/AbcSize
|
154
157
|
target_dir = project.repo ? output_dir(project.repo) : output_dir
|
155
158
|
["mkdir -p output/#{target_dir}",
|
@@ -163,11 +166,13 @@ class Vanagon
|
|
163
166
|
end
|
164
167
|
|
165
168
|
# The specific bits used to generate a windows msi package for a given project
|
169
|
+
#
|
166
170
|
# Have changed this to reflect the overall commands we need to generate the package.
|
167
171
|
# Question - should we break this down into some simpler Make tasks ?
|
168
|
-
#
|
169
|
-
#
|
170
|
-
#
|
172
|
+
#
|
173
|
+
# 1. Heat the directory tree to produce the file list
|
174
|
+
# 2. Compile (candle) all the wxs files into wixobj files
|
175
|
+
# 3. Run light to produce the final MSI
|
171
176
|
#
|
172
177
|
# @param project [Vanagon::Project] project to build a msi package of
|
173
178
|
# @return [Array] list of commands required to build an msi package for the given project from a tarball
|
@@ -228,6 +233,7 @@ class Vanagon
|
|
228
233
|
end
|
229
234
|
|
230
235
|
# Method to derive the package name for the project.
|
236
|
+
#
|
231
237
|
# Neither chocolatey nor nexus know how to deal with architecture, so
|
232
238
|
# we are just pretending it's part of the package name.
|
233
239
|
#
|
@@ -261,12 +267,14 @@ class Vanagon
|
|
261
267
|
# determine what version type to deliver.
|
262
268
|
#
|
263
269
|
# Examples of final versions:
|
264
|
-
#
|
265
|
-
#
|
270
|
+
#
|
271
|
+
# * 1.2.3
|
272
|
+
# * 1.5.3.1
|
266
273
|
#
|
267
274
|
# Examples of prerelease versions:
|
268
|
-
#
|
269
|
-
#
|
275
|
+
#
|
276
|
+
# * 1.2.3.1234-g124dm9302
|
277
|
+
# * 3.2.5.23-gd329nd
|
270
278
|
#
|
271
279
|
# @param project [Vanagon::Project] project to version
|
272
280
|
# @return [String] the version of the nuget package for this project
|
@@ -281,6 +289,7 @@ class Vanagon
|
|
281
289
|
end
|
282
290
|
|
283
291
|
# Add a repository (or install Chocolatey)
|
292
|
+
#
|
284
293
|
# Note - this only prepares the list of commands to be executed once the Platform
|
285
294
|
# has been setup
|
286
295
|
#
|
@@ -304,13 +313,14 @@ class Vanagon
|
|
304
313
|
commands
|
305
314
|
end
|
306
315
|
|
307
|
-
# Generate the underlying directory structure of
|
308
|
-
#
|
309
|
-
#
|
310
|
-
#
|
316
|
+
# Generate the underlying directory structure of any binary files
|
317
|
+
# referenced in services.
|
318
|
+
#
|
319
|
+
# Note that this function does not generate the structure of the
|
320
|
+
# installation directory, only the structure above it.
|
311
321
|
#
|
312
|
-
# @param services
|
313
|
-
# @param project
|
322
|
+
# @param services list of all services in a project
|
323
|
+
# @param project actual project we are creating the directory structure for
|
314
324
|
def generate_service_bin_dirs(services, project)
|
315
325
|
# All service files will need a directory reference
|
316
326
|
items = services.map do |svc|
|
@@ -389,7 +399,7 @@ class Vanagon
|
|
389
399
|
# Recursively generate wix element structure
|
390
400
|
#
|
391
401
|
# @param root, the (empty) root of an n-ary tree containing the
|
392
|
-
#
|
402
|
+
# structure of directories
|
393
403
|
def generate_wix_from_graph(root)
|
394
404
|
string = ''
|
395
405
|
unless root[:children].empty?
|
@@ -409,7 +419,7 @@ class Vanagon
|
|
409
419
|
end
|
410
420
|
|
411
421
|
# Grab only the first three values from the version input
|
412
|
-
# and strip off any non-digit characters
|
422
|
+
# and strip off any non-digit characters.
|
413
423
|
#
|
414
424
|
# @param [string] version, the original version number
|
415
425
|
def wix_product_version(version)
|