bozo-scripts 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/LICENSE +18 -18
- data/VERSION +1 -1
- data/lib/bozo/compilers/msbuild.rb +299 -299
- data/lib/bozo/configuration.rb +154 -154
- data/lib/bozo/dependency_resolvers/bundler.rb +53 -53
- data/lib/bozo/dependency_resolvers/nuget.rb +85 -85
- data/lib/bozo/erubis_templating_coordinator.rb +127 -127
- data/lib/bozo/hooks/build_number_version.rb +22 -22
- data/lib/bozo/hooks/fxcop.rb +151 -151
- data/lib/bozo/hooks/git_commit_hashes.rb +22 -22
- data/lib/bozo/hooks/git_hub.rb +79 -79
- data/lib/bozo/hooks/git_tag_release.rb +22 -22
- data/lib/bozo/hooks/hipchat.rb +101 -101
- data/lib/bozo/hooks/jenkins.rb +18 -18
- data/lib/bozo/hooks/teamcity.rb +91 -91
- data/lib/bozo/hooks/timing.rb +40 -40
- data/lib/bozo/packagers/nuget.rb +229 -220
- data/lib/bozo/packagers/rubygems.rb +49 -49
- data/lib/bozo/preparers/common_assembly_info.rb +35 -35
- data/lib/bozo/preparers/file_templating.rb +152 -152
- data/lib/bozo/publishers/file_copy.rb +82 -82
- data/lib/bozo/publishers/nuget.rb +38 -38
- data/lib/bozo/publishers/rubygems.rb +17 -17
- data/lib/bozo/test_runners/dotcover.rb +157 -157
- data/lib/bozo/test_runners/nunit.rb +130 -130
- data/lib/bozo/test_runners/runit.rb +34 -34
- data/lib/bozo/version.rb +4 -4
- data/lib/bozo_scripts.rb +31 -31
- metadata +3 -3
@@ -1,35 +1,35 @@
|
|
1
|
-
module Bozo::Preparers
|
2
|
-
|
3
|
-
class CommonAssemblyInfo
|
4
|
-
|
5
|
-
def company_name(name)
|
6
|
-
@company_name = name
|
7
|
-
end
|
8
|
-
|
9
|
-
def execute
|
10
|
-
log_info 'Generating common assembly info'
|
11
|
-
|
12
|
-
git_hash = env['GIT_HASH_FULL']
|
13
|
-
computer_name = env['COMPUTERNAME']
|
14
|
-
trademark = computer_name ? "#{computer_name} #{git_hash}" : git_hash
|
15
|
-
path = File.expand_path(File.join('build', 'CommonAssemblyInfo.cs'))
|
16
|
-
build_version = env['BUILD_VERSION']
|
17
|
-
|
18
|
-
log_debug "Version: #{build_version}"
|
19
|
-
log_debug "Commit hash: #{git_hash}"
|
20
|
-
log_debug "Computer name: #{computer_name}" if computer_name
|
21
|
-
log_debug "Path: #{path}"
|
22
|
-
|
23
|
-
File.open(path, 'w+') do |f|
|
24
|
-
f << "using System.Reflection;\n"
|
25
|
-
f << "\n"
|
26
|
-
f << "[assembly: AssemblyCompany(\"#{@company_name}\")]\n"
|
27
|
-
f << "[assembly: AssemblyVersion(\"#{build_version}\")]\n"
|
28
|
-
f << "[assembly: AssemblyFileVersion(\"#{build_version}\")]\n"
|
29
|
-
f << "[assembly: AssemblyTrademark(\"#{trademark}\")]"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
1
|
+
module Bozo::Preparers
|
2
|
+
|
3
|
+
class CommonAssemblyInfo
|
4
|
+
|
5
|
+
def company_name(name)
|
6
|
+
@company_name = name
|
7
|
+
end
|
8
|
+
|
9
|
+
def execute
|
10
|
+
log_info 'Generating common assembly info'
|
11
|
+
|
12
|
+
git_hash = env['GIT_HASH_FULL']
|
13
|
+
computer_name = env['COMPUTERNAME']
|
14
|
+
trademark = computer_name ? "#{computer_name} #{git_hash}" : git_hash
|
15
|
+
path = File.expand_path(File.join('build', 'CommonAssemblyInfo.cs'))
|
16
|
+
build_version = env['BUILD_VERSION']
|
17
|
+
|
18
|
+
log_debug "Version: #{build_version}"
|
19
|
+
log_debug "Commit hash: #{git_hash}"
|
20
|
+
log_debug "Computer name: #{computer_name}" if computer_name
|
21
|
+
log_debug "Path: #{path}"
|
22
|
+
|
23
|
+
File.open(path, 'w+') do |f|
|
24
|
+
f << "using System.Reflection;\n"
|
25
|
+
f << "\n"
|
26
|
+
f << "[assembly: AssemblyCompany(\"#{@company_name}\")]\n"
|
27
|
+
f << "[assembly: AssemblyVersion(\"#{build_version}\")]\n"
|
28
|
+
f << "[assembly: AssemblyFileVersion(\"#{build_version}\")]\n"
|
29
|
+
f << "[assembly: AssemblyTrademark(\"#{trademark}\")]"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -1,152 +1,152 @@
|
|
1
|
-
module Bozo::Preparers
|
2
|
-
|
3
|
-
# Preparer for creating files based upon configuration files and ERB-style
|
4
|
-
# templates before any compilation occurs.
|
5
|
-
#
|
6
|
-
# == Overview
|
7
|
-
#
|
8
|
-
# This preparer is primarily intended for generating config files with shared
|
9
|
-
# values but it is capable of generating whatever files you want. Each
|
10
|
-
# instance of the preparer is isolated from the anothers so you could specify
|
11
|
-
# multiple preparers to work with different configurations and templates if
|
12
|
-
# you wished.
|
13
|
-
#
|
14
|
-
# By default the preparer will load <tt>default.rb</tt> followed by
|
15
|
-
# <tt>[environment].rb</tt> followed by <tt>[machine_name].rb</tt> from the
|
16
|
-
# configured config_path if the file exists. It will then load any files
|
17
|
-
# explicitly required through the config_file method.
|
18
|
-
#
|
19
|
-
# == Hook configuration
|
20
|
-
#
|
21
|
-
# prepare :file_templating do |t|
|
22
|
-
# t.config_path 'somewhere' # defaults to 'config' if not specified
|
23
|
-
# t.config_file 'my/specific/file.rb' # must be a specific file
|
24
|
-
# t.template_files 'src/**/*.config.template' # can use glob format
|
25
|
-
# end
|
26
|
-
#
|
27
|
-
# Source files are expected to have an additional extension compared to the
|
28
|
-
# target file. For example, a source file of
|
29
|
-
# <tt>src/csharp/Project/Project.config.template</tt> will generate the file
|
30
|
-
# <tt>src/csharp/Project/Project.config</tt>.
|
31
|
-
#
|
32
|
-
# == Configuration files
|
33
|
-
#
|
34
|
-
# Configuration files specify a hash of hashes in a more readable format.
|
35
|
-
# For example:
|
36
|
-
#
|
37
|
-
# group :example do
|
38
|
-
# set :one, 'foo'
|
39
|
-
# set :two, 'bar'
|
40
|
-
# end
|
41
|
-
#
|
42
|
-
# Internally creates a hash like:
|
43
|
-
#
|
44
|
-
# {:example => {:one => 'foo', :two => 'bar'}}
|
45
|
-
#
|
46
|
-
# A configuration file can overwrite the values specified by a preceding one
|
47
|
-
# without error. Groups can be opened and closed as desired and nesting
|
48
|
-
# groups is possible.
|
49
|
-
#
|
50
|
-
# == Template files
|
51
|
-
#
|
52
|
-
# To use a value within an ERB template you specify the hash hierarchy as if
|
53
|
-
# they were method names rather than having to use the full hash syntax.
|
54
|
-
#
|
55
|
-
# Therefore, this is valid:
|
56
|
-
#
|
57
|
-
# Foo is <%= example.one %>
|
58
|
-
#
|
59
|
-
# Whilst this is *not* valid:
|
60
|
-
#
|
61
|
-
# Foo is <%= self[:example][:one] %>
|
62
|
-
#
|
63
|
-
# If a template uses a value that is not specified within the configuration
|
64
|
-
# then the preparer will raise an error and halt the build.
|
65
|
-
class FileTemplating
|
66
|
-
|
67
|
-
# Creates a new instance.
|
68
|
-
def initialize
|
69
|
-
@config_path = 'config'
|
70
|
-
@template_globs = []
|
71
|
-
@config_files = []
|
72
|
-
end
|
73
|
-
|
74
|
-
# Sets the path of the directory within which the preparer should look for
|
75
|
-
# the default configuration files.
|
76
|
-
#
|
77
|
-
# @param [String] path
|
78
|
-
# The path to the directory containing the default configuration files.
|
79
|
-
def config_path(path)
|
80
|
-
@config_path = path
|
81
|
-
end
|
82
|
-
|
83
|
-
# Adds a specific file to load configuration from.
|
84
|
-
#
|
85
|
-
# @param [String] path
|
86
|
-
# The path to a configuration file.
|
87
|
-
def config_file(path)
|
88
|
-
@config_files << path
|
89
|
-
end
|
90
|
-
|
91
|
-
# Adds a set of templates files from which to generate files.
|
92
|
-
#
|
93
|
-
# @param [String] glob
|
94
|
-
# A glob that points to a set of files that should pass through the
|
95
|
-
# templating engine.
|
96
|
-
def template_files(glob)
|
97
|
-
@template_globs << glob
|
98
|
-
end
|
99
|
-
|
100
|
-
# Generate all the files matching the configuration.
|
101
|
-
def execute
|
102
|
-
log_info '' # formatting
|
103
|
-
log_info 'Generating files'
|
104
|
-
|
105
|
-
get_coordinator.generate_files do |template, target|
|
106
|
-
log_debug "Generating #{target} from #{template}"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
private
|
111
|
-
|
112
|
-
# Creates a new templating coordinator based upon the current
|
113
|
-
# configuration.
|
114
|
-
def get_coordinator
|
115
|
-
coordinator = Bozo::ErubisTemplatingCoordinator.new
|
116
|
-
|
117
|
-
add_config coordinator
|
118
|
-
add_templates coordinator
|
119
|
-
|
120
|
-
coordinator
|
121
|
-
end
|
122
|
-
|
123
|
-
# Adds the configuration to the templating coordinator.
|
124
|
-
def add_config(coordinator)
|
125
|
-
add_default_config_files coordinator
|
126
|
-
@config_files.each {|f| coordinator.required_config_file f}
|
127
|
-
end
|
128
|
-
|
129
|
-
# Adds the default configuration from the configuration directory to the
|
130
|
-
# templating coordinator.
|
131
|
-
#
|
132
|
-
# @param [ErubisTemplatingCoordinator] coordinator
|
133
|
-
# The template coordinator to add the configuration to.
|
134
|
-
def add_default_config_files(coordinator)
|
135
|
-
default_files = ['default.rb', "#{environment}.rb"]
|
136
|
-
default_files << "#{env['MACHINENAME']}.rb" if env['MACHINENAME']
|
137
|
-
|
138
|
-
default_files.each do |file|
|
139
|
-
coordinator.config_file File.join(@config_path, file)
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
# Adds the templates to the templating coordinator.
|
144
|
-
def add_templates(coordinator)
|
145
|
-
@template_globs.each do |glob|
|
146
|
-
coordinator.template_files glob
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
end
|
151
|
-
|
152
|
-
end
|
1
|
+
module Bozo::Preparers
|
2
|
+
|
3
|
+
# Preparer for creating files based upon configuration files and ERB-style
|
4
|
+
# templates before any compilation occurs.
|
5
|
+
#
|
6
|
+
# == Overview
|
7
|
+
#
|
8
|
+
# This preparer is primarily intended for generating config files with shared
|
9
|
+
# values but it is capable of generating whatever files you want. Each
|
10
|
+
# instance of the preparer is isolated from the anothers so you could specify
|
11
|
+
# multiple preparers to work with different configurations and templates if
|
12
|
+
# you wished.
|
13
|
+
#
|
14
|
+
# By default the preparer will load <tt>default.rb</tt> followed by
|
15
|
+
# <tt>[environment].rb</tt> followed by <tt>[machine_name].rb</tt> from the
|
16
|
+
# configured config_path if the file exists. It will then load any files
|
17
|
+
# explicitly required through the config_file method.
|
18
|
+
#
|
19
|
+
# == Hook configuration
|
20
|
+
#
|
21
|
+
# prepare :file_templating do |t|
|
22
|
+
# t.config_path 'somewhere' # defaults to 'config' if not specified
|
23
|
+
# t.config_file 'my/specific/file.rb' # must be a specific file
|
24
|
+
# t.template_files 'src/**/*.config.template' # can use glob format
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# Source files are expected to have an additional extension compared to the
|
28
|
+
# target file. For example, a source file of
|
29
|
+
# <tt>src/csharp/Project/Project.config.template</tt> will generate the file
|
30
|
+
# <tt>src/csharp/Project/Project.config</tt>.
|
31
|
+
#
|
32
|
+
# == Configuration files
|
33
|
+
#
|
34
|
+
# Configuration files specify a hash of hashes in a more readable format.
|
35
|
+
# For example:
|
36
|
+
#
|
37
|
+
# group :example do
|
38
|
+
# set :one, 'foo'
|
39
|
+
# set :two, 'bar'
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# Internally creates a hash like:
|
43
|
+
#
|
44
|
+
# {:example => {:one => 'foo', :two => 'bar'}}
|
45
|
+
#
|
46
|
+
# A configuration file can overwrite the values specified by a preceding one
|
47
|
+
# without error. Groups can be opened and closed as desired and nesting
|
48
|
+
# groups is possible.
|
49
|
+
#
|
50
|
+
# == Template files
|
51
|
+
#
|
52
|
+
# To use a value within an ERB template you specify the hash hierarchy as if
|
53
|
+
# they were method names rather than having to use the full hash syntax.
|
54
|
+
#
|
55
|
+
# Therefore, this is valid:
|
56
|
+
#
|
57
|
+
# Foo is <%= example.one %>
|
58
|
+
#
|
59
|
+
# Whilst this is *not* valid:
|
60
|
+
#
|
61
|
+
# Foo is <%= self[:example][:one] %>
|
62
|
+
#
|
63
|
+
# If a template uses a value that is not specified within the configuration
|
64
|
+
# then the preparer will raise an error and halt the build.
|
65
|
+
class FileTemplating
|
66
|
+
|
67
|
+
# Creates a new instance.
|
68
|
+
def initialize
|
69
|
+
@config_path = 'config'
|
70
|
+
@template_globs = []
|
71
|
+
@config_files = []
|
72
|
+
end
|
73
|
+
|
74
|
+
# Sets the path of the directory within which the preparer should look for
|
75
|
+
# the default configuration files.
|
76
|
+
#
|
77
|
+
# @param [String] path
|
78
|
+
# The path to the directory containing the default configuration files.
|
79
|
+
def config_path(path)
|
80
|
+
@config_path = path
|
81
|
+
end
|
82
|
+
|
83
|
+
# Adds a specific file to load configuration from.
|
84
|
+
#
|
85
|
+
# @param [String] path
|
86
|
+
# The path to a configuration file.
|
87
|
+
def config_file(path)
|
88
|
+
@config_files << path
|
89
|
+
end
|
90
|
+
|
91
|
+
# Adds a set of templates files from which to generate files.
|
92
|
+
#
|
93
|
+
# @param [String] glob
|
94
|
+
# A glob that points to a set of files that should pass through the
|
95
|
+
# templating engine.
|
96
|
+
def template_files(glob)
|
97
|
+
@template_globs << glob
|
98
|
+
end
|
99
|
+
|
100
|
+
# Generate all the files matching the configuration.
|
101
|
+
def execute
|
102
|
+
log_info '' # formatting
|
103
|
+
log_info 'Generating files'
|
104
|
+
|
105
|
+
get_coordinator.generate_files do |template, target|
|
106
|
+
log_debug "Generating #{target} from #{template}"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
private
|
111
|
+
|
112
|
+
# Creates a new templating coordinator based upon the current
|
113
|
+
# configuration.
|
114
|
+
def get_coordinator
|
115
|
+
coordinator = Bozo::ErubisTemplatingCoordinator.new
|
116
|
+
|
117
|
+
add_config coordinator
|
118
|
+
add_templates coordinator
|
119
|
+
|
120
|
+
coordinator
|
121
|
+
end
|
122
|
+
|
123
|
+
# Adds the configuration to the templating coordinator.
|
124
|
+
def add_config(coordinator)
|
125
|
+
add_default_config_files coordinator
|
126
|
+
@config_files.each {|f| coordinator.required_config_file f}
|
127
|
+
end
|
128
|
+
|
129
|
+
# Adds the default configuration from the configuration directory to the
|
130
|
+
# templating coordinator.
|
131
|
+
#
|
132
|
+
# @param [ErubisTemplatingCoordinator] coordinator
|
133
|
+
# The template coordinator to add the configuration to.
|
134
|
+
def add_default_config_files(coordinator)
|
135
|
+
default_files = ['default.rb', "#{environment}.rb"]
|
136
|
+
default_files << "#{env['MACHINENAME']}.rb" if env['MACHINENAME']
|
137
|
+
|
138
|
+
default_files.each do |file|
|
139
|
+
coordinator.config_file File.join(@config_path, file)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
# Adds the templates to the templating coordinator.
|
144
|
+
def add_templates(coordinator)
|
145
|
+
@template_globs.each do |glob|
|
146
|
+
coordinator.template_files glob
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
@@ -1,83 +1,83 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
module Bozo::Publishers
|
4
|
-
|
5
|
-
# Publisher that copies files from one location to another.
|
6
|
-
class FileCopy
|
7
|
-
|
8
|
-
# Creates a new instance.
|
9
|
-
def initialize
|
10
|
-
@directories = []
|
11
|
-
end
|
12
|
-
|
13
|
-
# Adds a source directory of files copy.
|
14
|
-
#
|
15
|
-
# Must be relative to the project root. All files within the directory and
|
16
|
-
# its subdirectories will be copied to the destination directory,
|
17
|
-
# maintaining the file structure.
|
18
|
-
#
|
19
|
-
# @params [Array] args
|
20
|
-
# Path to a directory relative to the project root.
|
21
|
-
def directory(*args)
|
22
|
-
@directories << args
|
23
|
-
end
|
24
|
-
|
25
|
-
# Set the destination directory of the file copy.
|
26
|
-
#
|
27
|
-
# Must be an absolute path.
|
28
|
-
#
|
29
|
-
# @params [String] destination
|
30
|
-
# The absolution path the source files should be copied to.
|
31
|
-
def destination(destination)
|
32
|
-
@destination = destination
|
33
|
-
end
|
34
|
-
|
35
|
-
def execute
|
36
|
-
if @directories.empty? or @destination.nil?
|
37
|
-
raise Bozo::ConfigurationError.new 'You must specify at least one source file or directory AND a destination directory'
|
38
|
-
end
|
39
|
-
|
40
|
-
ensure_no_clashing_files
|
41
|
-
|
42
|
-
copy_pairs do |source, target|
|
43
|
-
FileUtils.mkdir_p File.dirname(target)
|
44
|
-
log_debug "Publishing \"#{File.basename(source)}\" to \"#{target}\""
|
45
|
-
FileUtils.cp source, target
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
# Checks the destination does not contain files that will be overwritten by
|
52
|
-
# the source files.
|
53
|
-
def ensure_no_clashing_files
|
54
|
-
existing_files = []
|
55
|
-
|
56
|
-
copy_pairs do |source, target|
|
57
|
-
existing_files << target if File.exist? target
|
58
|
-
end
|
59
|
-
|
60
|
-
raise Bozo::ConfigurationError.new "Target files already exist - #{existing_files}" unless existing_files.empty?
|
61
|
-
end
|
62
|
-
|
63
|
-
# Returns the source-destination file pairs specified by the source
|
64
|
-
# directories and destination directory.
|
65
|
-
def copy_pairs # :yields: source_path, destination_path
|
66
|
-
destination = File.join @destination
|
67
|
-
|
68
|
-
@directories.each do |dir|
|
69
|
-
relative_source_dir = File.join(dir)
|
70
|
-
source_dir = File.expand_path relative_source_dir
|
71
|
-
source_dir_path = Pathname.new source_dir
|
72
|
-
|
73
|
-
Dir[File.join(source_dir, '**', '*')].each do |source_file|
|
74
|
-
rel_path = Pathname.new(source_file).relative_path_from(source_dir_path).to_s
|
75
|
-
target_file = File.join(destination, rel_path)
|
76
|
-
yield source_file, target_file
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Bozo::Publishers
|
4
|
+
|
5
|
+
# Publisher that copies files from one location to another.
|
6
|
+
class FileCopy
|
7
|
+
|
8
|
+
# Creates a new instance.
|
9
|
+
def initialize
|
10
|
+
@directories = []
|
11
|
+
end
|
12
|
+
|
13
|
+
# Adds a source directory of files copy.
|
14
|
+
#
|
15
|
+
# Must be relative to the project root. All files within the directory and
|
16
|
+
# its subdirectories will be copied to the destination directory,
|
17
|
+
# maintaining the file structure.
|
18
|
+
#
|
19
|
+
# @params [Array] args
|
20
|
+
# Path to a directory relative to the project root.
|
21
|
+
def directory(*args)
|
22
|
+
@directories << args
|
23
|
+
end
|
24
|
+
|
25
|
+
# Set the destination directory of the file copy.
|
26
|
+
#
|
27
|
+
# Must be an absolute path.
|
28
|
+
#
|
29
|
+
# @params [String] destination
|
30
|
+
# The absolution path the source files should be copied to.
|
31
|
+
def destination(destination)
|
32
|
+
@destination = destination
|
33
|
+
end
|
34
|
+
|
35
|
+
def execute
|
36
|
+
if @directories.empty? or @destination.nil?
|
37
|
+
raise Bozo::ConfigurationError.new 'You must specify at least one source file or directory AND a destination directory'
|
38
|
+
end
|
39
|
+
|
40
|
+
ensure_no_clashing_files
|
41
|
+
|
42
|
+
copy_pairs do |source, target|
|
43
|
+
FileUtils.mkdir_p File.dirname(target)
|
44
|
+
log_debug "Publishing \"#{File.basename(source)}\" to \"#{target}\""
|
45
|
+
FileUtils.cp source, target
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
# Checks the destination does not contain files that will be overwritten by
|
52
|
+
# the source files.
|
53
|
+
def ensure_no_clashing_files
|
54
|
+
existing_files = []
|
55
|
+
|
56
|
+
copy_pairs do |source, target|
|
57
|
+
existing_files << target if File.exist? target
|
58
|
+
end
|
59
|
+
|
60
|
+
raise Bozo::ConfigurationError.new "Target files already exist - #{existing_files}" unless existing_files.empty?
|
61
|
+
end
|
62
|
+
|
63
|
+
# Returns the source-destination file pairs specified by the source
|
64
|
+
# directories and destination directory.
|
65
|
+
def copy_pairs # :yields: source_path, destination_path
|
66
|
+
destination = File.join @destination
|
67
|
+
|
68
|
+
@directories.each do |dir|
|
69
|
+
relative_source_dir = File.join(dir)
|
70
|
+
source_dir = File.expand_path relative_source_dir
|
71
|
+
source_dir_path = Pathname.new source_dir
|
72
|
+
|
73
|
+
Dir[File.join(source_dir, '**', '*')].each do |source_file|
|
74
|
+
rel_path = Pathname.new(source_file).relative_path_from(source_dir_path).to_s
|
75
|
+
target_file = File.join(destination, rel_path)
|
76
|
+
yield source_file, target_file
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
83
|
end
|
@@ -1,39 +1,39 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
module Bozo::Publishers
|
4
|
-
|
5
|
-
# Publisher that pushes package to nuget
|
6
|
-
class Nuget
|
7
|
-
|
8
|
-
def server(server)
|
9
|
-
@server = server
|
10
|
-
end
|
11
|
-
|
12
|
-
def api_key(api_key)
|
13
|
-
@api_key = api_key
|
14
|
-
end
|
15
|
-
|
16
|
-
def execute
|
17
|
-
raise Bozo::ConfigurationError.new 'You must specify a nuget server address' if @server.empty?
|
18
|
-
raise Bozo::ConfigurationError.new 'You must specify a nuget api key' if @api_key.empty?
|
19
|
-
|
20
|
-
Dir[File.join('dist', 'nuget', '**', '*')].each do |source_file|
|
21
|
-
push File.expand_path(source_file)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def push(source_file)
|
28
|
-
args = []
|
29
|
-
args << File.expand_path(File.join('build', 'tools', 'nuget', 'NuGet.exe'))
|
30
|
-
args << "push"
|
31
|
-
args << "\"#{source_file}\""
|
32
|
-
args << "\"#{@api_key}\""
|
33
|
-
args << "-s #{@server}"
|
34
|
-
execute_command :nuget, args
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Bozo::Publishers
|
4
|
+
|
5
|
+
# Publisher that pushes package to nuget
|
6
|
+
class Nuget
|
7
|
+
|
8
|
+
def server(server)
|
9
|
+
@server = server
|
10
|
+
end
|
11
|
+
|
12
|
+
def api_key(api_key)
|
13
|
+
@api_key = api_key
|
14
|
+
end
|
15
|
+
|
16
|
+
def execute
|
17
|
+
raise Bozo::ConfigurationError.new 'You must specify a nuget server address' if @server.empty?
|
18
|
+
raise Bozo::ConfigurationError.new 'You must specify a nuget api key' if @api_key.empty?
|
19
|
+
|
20
|
+
Dir[File.join('dist', 'nuget', '**', '*')].each do |source_file|
|
21
|
+
push File.expand_path(source_file)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def push(source_file)
|
28
|
+
args = []
|
29
|
+
args << File.expand_path(File.join('build', 'tools', 'nuget', 'NuGet.exe'))
|
30
|
+
args << "push"
|
31
|
+
args << "\"#{source_file}\""
|
32
|
+
args << "\"#{@api_key}\""
|
33
|
+
args << "-s #{@server}"
|
34
|
+
execute_command :nuget, args
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
39
|
end
|
@@ -1,18 +1,18 @@
|
|
1
|
-
module Bozo::Publishers
|
2
|
-
|
3
|
-
# Publisher that publishes gem files to rubygems.org
|
4
|
-
class Rubygems
|
5
|
-
|
6
|
-
def execute
|
7
|
-
Dir['dist/gem/*.gem'].each { |gem| push gem }
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
def push(gem)
|
13
|
-
execute_command :rubygems, ['gem', 'push', gem]
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
|
1
|
+
module Bozo::Publishers
|
2
|
+
|
3
|
+
# Publisher that publishes gem files to rubygems.org
|
4
|
+
class Rubygems
|
5
|
+
|
6
|
+
def execute
|
7
|
+
Dir['dist/gem/*.gem'].each { |gem| push gem }
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def push(gem)
|
13
|
+
execute_command :rubygems, ['gem', 'push', gem]
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
18
|
end
|