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.
@@ -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