bozo 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +419 -407
- data/VERSION +1 -1
- data/bin/bozo +8 -8
- data/lib/bozo/bozo.rb +6 -6
- data/lib/bozo/bozo_configuration.rb +299 -299
- data/lib/bozo/class_name_helpers.rb +16 -16
- data/lib/bozo/configuration_error.rb +29 -29
- data/lib/bozo/execution_error.rb +35 -35
- data/lib/bozo/executor.rb +288 -281
- data/lib/bozo/logging.rb +40 -40
- data/lib/bozo/runner.rb +58 -58
- data/lib/bozo/versioning/version.rb +86 -86
- data/lib/bozo/versioning/version_bump_error.rb +29 -29
- data/lib/bozo/versioning/version_bumper.rb +36 -36
- data/lib/bozo.rb +130 -130
- data/test/bozo_configuration_version_tests.rb +41 -41
- data/test/test_helper.rb +2 -2
- data/test/version_bumper_tests.rb +61 -61
- data/test/version_tests.rb +25 -25
- metadata +20 -6
- checksums.yaml +0 -15
data/lib/bozo/runner.rb
CHANGED
@@ -1,58 +1,58 @@
|
|
1
|
-
module Bozo
|
2
|
-
|
3
|
-
# Module mixed into the all Bozo executors that provides functionality for
|
4
|
-
# command execution and logging.
|
5
|
-
module Runner
|
6
|
-
|
7
|
-
include Bozo::Logging
|
8
|
-
|
9
|
-
# Returns the global parameters.
|
10
|
-
attr_accessor :global_params
|
11
|
-
|
12
|
-
# Returns the command parameters.
|
13
|
-
attr_accessor :params
|
14
|
-
|
15
|
-
# Returns the environment variables.
|
16
|
-
attr_accessor :env
|
17
|
-
|
18
|
-
# Returns the build configuration.
|
19
|
-
attr_accessor :build_configuration
|
20
|
-
|
21
|
-
# Returns whether the build is being run on a build server.
|
22
|
-
def build_server?
|
23
|
-
global_params[:build_server]
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns the environment the build is being execute in.
|
27
|
-
def environment
|
28
|
-
global_params[:environment]
|
29
|
-
end
|
30
|
-
|
31
|
-
# Executes a command line tool.
|
32
|
-
#
|
33
|
-
# Raises a `Bozo::ExecutionError` if the command responds with a non-zero
|
34
|
-
# exit code.
|
35
|
-
#
|
36
|
-
# @param [Symbol] tool
|
37
|
-
# A friendly identifier for the tool.
|
38
|
-
# @param [Array] args
|
39
|
-
# An array of arguments making up the command to execute.
|
40
|
-
def execute_command(tool, args)
|
41
|
-
args.flatten!
|
42
|
-
|
43
|
-
executable = File.basename(args.first)
|
44
|
-
arguments = args[1..-1].join(' ')
|
45
|
-
|
46
|
-
log_info " #{tool} - #{executable} #{arguments}"
|
47
|
-
|
48
|
-
raise Bozo::ExecutionError.new(tool, args, $?.exitstatus) unless system args.join ' '
|
49
|
-
end
|
50
|
-
|
51
|
-
# Returns the build version.
|
52
|
-
def version
|
53
|
-
build_configuration.version
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
1
|
+
module Bozo
|
2
|
+
|
3
|
+
# Module mixed into the all Bozo executors that provides functionality for
|
4
|
+
# command execution and logging.
|
5
|
+
module Runner
|
6
|
+
|
7
|
+
include Bozo::Logging
|
8
|
+
|
9
|
+
# Returns the global parameters.
|
10
|
+
attr_accessor :global_params
|
11
|
+
|
12
|
+
# Returns the command parameters.
|
13
|
+
attr_accessor :params
|
14
|
+
|
15
|
+
# Returns the environment variables.
|
16
|
+
attr_accessor :env
|
17
|
+
|
18
|
+
# Returns the build configuration.
|
19
|
+
attr_accessor :build_configuration
|
20
|
+
|
21
|
+
# Returns whether the build is being run on a build server.
|
22
|
+
def build_server?
|
23
|
+
global_params[:build_server]
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns the environment the build is being execute in.
|
27
|
+
def environment
|
28
|
+
global_params[:environment]
|
29
|
+
end
|
30
|
+
|
31
|
+
# Executes a command line tool.
|
32
|
+
#
|
33
|
+
# Raises a `Bozo::ExecutionError` if the command responds with a non-zero
|
34
|
+
# exit code.
|
35
|
+
#
|
36
|
+
# @param [Symbol] tool
|
37
|
+
# A friendly identifier for the tool.
|
38
|
+
# @param [Array] args
|
39
|
+
# An array of arguments making up the command to execute.
|
40
|
+
def execute_command(tool, args)
|
41
|
+
args.flatten!
|
42
|
+
|
43
|
+
executable = File.basename(args.first)
|
44
|
+
arguments = args[1..-1].join(' ')
|
45
|
+
|
46
|
+
log_info " #{tool} - #{executable} #{arguments}"
|
47
|
+
|
48
|
+
raise Bozo::ExecutionError.new(tool, args, $?.exitstatus) unless system args.join ' '
|
49
|
+
end
|
50
|
+
|
51
|
+
# Returns the build version.
|
52
|
+
def version
|
53
|
+
build_configuration.version
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -1,87 +1,87 @@
|
|
1
|
-
module Bozo::Versioning
|
2
|
-
|
3
|
-
class Version
|
4
|
-
|
5
|
-
# @param major [Integer]
|
6
|
-
# @param minor [Integer]
|
7
|
-
# @param patch [Integer]
|
8
|
-
def initialize(major, minor, patch)
|
9
|
-
@major = major
|
10
|
-
@minor = minor
|
11
|
-
@patch = patch
|
12
|
-
end
|
13
|
-
|
14
|
-
# Loads the version from the VERSION file
|
15
|
-
def self.load_from_file
|
16
|
-
raise no_version_file unless File.exist? 'VERSION'
|
17
|
-
version = File.read('VERSION').strip
|
18
|
-
raise no_version if version.empty?
|
19
|
-
parse version
|
20
|
-
end
|
21
|
-
|
22
|
-
# Parses a version string to create a Version instance
|
23
|
-
#
|
24
|
-
# @param version [String]
|
25
|
-
def self.parse(version)
|
26
|
-
major, minor, patch = *version.split('.').map(&:to_i)
|
27
|
-
Version.new major, minor, patch
|
28
|
-
end
|
29
|
-
|
30
|
-
def major
|
31
|
-
@major
|
32
|
-
end
|
33
|
-
|
34
|
-
def minor
|
35
|
-
@minor
|
36
|
-
end
|
37
|
-
|
38
|
-
def patch
|
39
|
-
@patch
|
40
|
-
end
|
41
|
-
|
42
|
-
# Writes the version from the VERSION file
|
43
|
-
def write_to_file
|
44
|
-
File.open("VERSION", 'w') { |f| f << to_s }
|
45
|
-
end
|
46
|
-
|
47
|
-
# Bumps the part of the version
|
48
|
-
#
|
49
|
-
# @param part [Symbol]
|
50
|
-
def bump(part)
|
51
|
-
send "bump_#{part}".to_sym
|
52
|
-
end
|
53
|
-
|
54
|
-
def to_s
|
55
|
-
"#{@major}.#{@minor}.#{@patch}"
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def bump_major
|
61
|
-
@major += 1
|
62
|
-
@minor = 0
|
63
|
-
@patch = 0
|
64
|
-
end
|
65
|
-
|
66
|
-
def bump_minor
|
67
|
-
@minor += 1
|
68
|
-
@patch = 0
|
69
|
-
end
|
70
|
-
|
71
|
-
def bump_patch
|
72
|
-
@patch += 1
|
73
|
-
end
|
74
|
-
|
75
|
-
# Error if no version has been specified
|
76
|
-
def self.no_version
|
77
|
-
Bozo::ConfigurationError.new 'No version specified'
|
78
|
-
end
|
79
|
-
|
80
|
-
# Error if the version file could not be found
|
81
|
-
def self.no_version_file
|
82
|
-
Bozo::ConfigurationError.new "VERSION file could not be found in project #{Dir.pwd}"
|
83
|
-
end
|
84
|
-
|
85
|
-
end
|
86
|
-
|
1
|
+
module Bozo::Versioning
|
2
|
+
|
3
|
+
class Version
|
4
|
+
|
5
|
+
# @param major [Integer]
|
6
|
+
# @param minor [Integer]
|
7
|
+
# @param patch [Integer]
|
8
|
+
def initialize(major, minor, patch)
|
9
|
+
@major = major
|
10
|
+
@minor = minor
|
11
|
+
@patch = patch
|
12
|
+
end
|
13
|
+
|
14
|
+
# Loads the version from the VERSION file
|
15
|
+
def self.load_from_file
|
16
|
+
raise no_version_file unless File.exist? 'VERSION'
|
17
|
+
version = File.read('VERSION').strip
|
18
|
+
raise no_version if version.empty?
|
19
|
+
parse version
|
20
|
+
end
|
21
|
+
|
22
|
+
# Parses a version string to create a Version instance
|
23
|
+
#
|
24
|
+
# @param version [String]
|
25
|
+
def self.parse(version)
|
26
|
+
major, minor, patch = *version.split('.').map(&:to_i)
|
27
|
+
Version.new major, minor, patch
|
28
|
+
end
|
29
|
+
|
30
|
+
def major
|
31
|
+
@major
|
32
|
+
end
|
33
|
+
|
34
|
+
def minor
|
35
|
+
@minor
|
36
|
+
end
|
37
|
+
|
38
|
+
def patch
|
39
|
+
@patch
|
40
|
+
end
|
41
|
+
|
42
|
+
# Writes the version from the VERSION file
|
43
|
+
def write_to_file
|
44
|
+
File.open("VERSION", 'w') { |f| f << to_s }
|
45
|
+
end
|
46
|
+
|
47
|
+
# Bumps the part of the version
|
48
|
+
#
|
49
|
+
# @param part [Symbol]
|
50
|
+
def bump(part)
|
51
|
+
send "bump_#{part}".to_sym
|
52
|
+
end
|
53
|
+
|
54
|
+
def to_s
|
55
|
+
"#{@major}.#{@minor}.#{@patch}"
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def bump_major
|
61
|
+
@major += 1
|
62
|
+
@minor = 0
|
63
|
+
@patch = 0
|
64
|
+
end
|
65
|
+
|
66
|
+
def bump_minor
|
67
|
+
@minor += 1
|
68
|
+
@patch = 0
|
69
|
+
end
|
70
|
+
|
71
|
+
def bump_patch
|
72
|
+
@patch += 1
|
73
|
+
end
|
74
|
+
|
75
|
+
# Error if no version has been specified
|
76
|
+
def self.no_version
|
77
|
+
Bozo::ConfigurationError.new 'No version specified'
|
78
|
+
end
|
79
|
+
|
80
|
+
# Error if the version file could not be found
|
81
|
+
def self.no_version_file
|
82
|
+
Bozo::ConfigurationError.new "VERSION file could not be found in project #{Dir.pwd}"
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
87
|
end
|
@@ -1,30 +1,30 @@
|
|
1
|
-
module Bozo::Versioning
|
2
|
-
|
3
|
-
# Error raised when a runner or hook finds the configuration or build in an
|
4
|
-
# unexpected state.
|
5
|
-
class VersionBumpError < StandardError
|
6
|
-
|
7
|
-
# The code the program should exit with upon handling this error.
|
8
|
-
attr_reader :exit_code
|
9
|
-
|
10
|
-
# A message explaining the corrective actions someone can take to avoid the
|
11
|
-
# error.
|
12
|
-
attr_reader :message
|
13
|
-
|
14
|
-
# Creates a new instance.
|
15
|
-
#
|
16
|
-
# @param [String] message
|
17
|
-
# A message explaining the corrective actions someone can take to avoid
|
18
|
-
# the error.
|
19
|
-
def initialize(message)
|
20
|
-
@message = message
|
21
|
-
@exit_code = -1
|
22
|
-
end
|
23
|
-
|
24
|
-
def inspect
|
25
|
-
"Version bump error: #{message}"
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
29
|
-
|
1
|
+
module Bozo::Versioning
|
2
|
+
|
3
|
+
# Error raised when a runner or hook finds the configuration or build in an
|
4
|
+
# unexpected state.
|
5
|
+
class VersionBumpError < StandardError
|
6
|
+
|
7
|
+
# The code the program should exit with upon handling this error.
|
8
|
+
attr_reader :exit_code
|
9
|
+
|
10
|
+
# A message explaining the corrective actions someone can take to avoid the
|
11
|
+
# error.
|
12
|
+
attr_reader :message
|
13
|
+
|
14
|
+
# Creates a new instance.
|
15
|
+
#
|
16
|
+
# @param [String] message
|
17
|
+
# A message explaining the corrective actions someone can take to avoid
|
18
|
+
# the error.
|
19
|
+
def initialize(message)
|
20
|
+
@message = message
|
21
|
+
@exit_code = -1
|
22
|
+
end
|
23
|
+
|
24
|
+
def inspect
|
25
|
+
"Version bump error: #{message}"
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
30
|
end
|
@@ -1,36 +1,36 @@
|
|
1
|
-
module Bozo::Versioning
|
2
|
-
|
3
|
-
class VersionBumper
|
4
|
-
|
5
|
-
include Bozo::Logging
|
6
|
-
|
7
|
-
def bump(part)
|
8
|
-
unless can_be_bumped?
|
9
|
-
raise VersionBumpError.new "State of the repository means the version can't be bumped. Ensure the staging index is empty."
|
10
|
-
end
|
11
|
-
|
12
|
-
version = Version.load_from_file
|
13
|
-
original_version = version.to_s
|
14
|
-
|
15
|
-
version.bump part
|
16
|
-
version.write_to_file
|
17
|
-
|
18
|
-
commit_version original_version, version
|
19
|
-
|
20
|
-
log_info "Bumped #{original_version} to #{version}"
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def can_be_bumped?
|
26
|
-
`git diff --cached --name-only`.length == 0
|
27
|
-
end
|
28
|
-
|
29
|
-
def commit_version(original, new)
|
30
|
-
`git add VERSION`
|
31
|
-
`git commit -m "Bumped #{original} to #{new}."`
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
1
|
+
module Bozo::Versioning
|
2
|
+
|
3
|
+
class VersionBumper
|
4
|
+
|
5
|
+
include Bozo::Logging
|
6
|
+
|
7
|
+
def bump(part)
|
8
|
+
unless can_be_bumped?
|
9
|
+
raise VersionBumpError.new "State of the repository means the version can't be bumped. Ensure the staging index is empty."
|
10
|
+
end
|
11
|
+
|
12
|
+
version = Version.load_from_file
|
13
|
+
original_version = version.to_s
|
14
|
+
|
15
|
+
version.bump part
|
16
|
+
version.write_to_file
|
17
|
+
|
18
|
+
commit_version original_version, version
|
19
|
+
|
20
|
+
log_info "Bumped #{original_version} to #{version}"
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def can_be_bumped?
|
26
|
+
`git diff --cached --name-only`.length == 0
|
27
|
+
end
|
28
|
+
|
29
|
+
def commit_version(original, new)
|
30
|
+
`git add VERSION`
|
31
|
+
`git commit -m "Bumped #{original} to #{new}."`
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/bozo.rb
CHANGED
@@ -1,131 +1,131 @@
|
|
1
|
-
$:.push File.expand_path(File.dirname(__FILE__))
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'rainbow'
|
5
|
-
require 'rainbow/ext/string'
|
6
|
-
require 'gli'
|
7
|
-
require 'gli_version'
|
8
|
-
require 'bozo/bozo'
|
9
|
-
require 'bozo/class_name_helpers'
|
10
|
-
require 'bozo/logging'
|
11
|
-
require 'bozo/runner'
|
12
|
-
require 'bozo/executor'
|
13
|
-
require 'bozo/bozo_configuration'
|
14
|
-
require 'bozo/configuration_error'
|
15
|
-
require 'bozo/execution_error'
|
16
|
-
require 'bozo/versioning/version'
|
17
|
-
require 'bozo/versioning/version_bumper'
|
18
|
-
require 'bozo/versioning/version_bump_error'
|
19
|
-
|
20
|
-
include GLI
|
21
|
-
|
22
|
-
# Set the location of the bozo runtime configuration file
|
23
|
-
config_file '.bozorc'
|
24
|
-
|
25
|
-
version Bozo::VERSION
|
26
|
-
|
27
|
-
desc 'Run as a build server, allows more destructive actions'
|
28
|
-
switch 'build-server'
|
29
|
-
|
30
|
-
default_config_file = 'bozorc.rb'
|
31
|
-
|
32
|
-
desc "The build configuration file (defaults to #{default_config_file})"
|
33
|
-
default_value default_config_file
|
34
|
-
arg_name 'path'
|
35
|
-
flag 'config-file'
|
36
|
-
|
37
|
-
default_environment = 'development'
|
38
|
-
|
39
|
-
desc "The build environment (defaults to #{default_environment})"
|
40
|
-
default_value default_environment
|
41
|
-
arg_name 'name'
|
42
|
-
flag :environment
|
43
|
-
|
44
|
-
pre do |global_options, command, options, arguments|
|
45
|
-
# Load the configuration file.
|
46
|
-
config = Bozo::BozoConfiguration.new
|
47
|
-
config.load global_options[:'config-file']
|
48
|
-
|
49
|
-
puts "Building #{config.version} using Bozo #{Bozo::VERSION}"
|
50
|
-
puts ''
|
51
|
-
|
52
|
-
# Initialize the executor.
|
53
|
-
@executor = Bozo::Executor.new config, global_options
|
54
|
-
|
55
|
-
true
|
56
|
-
end
|
57
|
-
|
58
|
-
# Helper method for defining a command that invokes a bozo task.
|
59
|
-
#
|
60
|
-
# The first provided name will be passed on to bozo.
|
61
|
-
#
|
62
|
-
# Takes an optional block for defining command-specific flags and switches.
|
63
|
-
#
|
64
|
-
# @param [Symbol] command_names
|
65
|
-
# The names to give the command.
|
66
|
-
def bozo_command(*command_names)
|
67
|
-
command_name = command_names.first
|
68
|
-
command command_names do |c|
|
69
|
-
yield c if block_given?
|
70
|
-
c.action do |global_options, options, arguments|
|
71
|
-
@executor.execute command_name, options, ENV.to_hash
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
desc 'Remove bozo and all its artifacts'
|
77
|
-
bozo_command :uninstall
|
78
|
-
|
79
|
-
desc 'Remove all build artifacts'
|
80
|
-
bozo_command :clean
|
81
|
-
|
82
|
-
desc 'Retrieve all project dependencies'
|
83
|
-
bozo_command :dependencies
|
84
|
-
|
85
|
-
desc 'Prepare the project'
|
86
|
-
bozo_command :prepare
|
87
|
-
|
88
|
-
desc 'Compile the project'
|
89
|
-
bozo_command :compile, :c
|
90
|
-
|
91
|
-
desc 'Run the tests for the project'
|
92
|
-
bozo_command :test, :t
|
93
|
-
|
94
|
-
desc 'Create a package'
|
95
|
-
bozo_command :package, :p do |c|
|
96
|
-
c.desc 'Force a pre-release package to be created'
|
97
|
-
c.switch 'pre-release'
|
98
|
-
end
|
99
|
-
|
100
|
-
desc 'Publish a package'
|
101
|
-
bozo_command :publish do |c|
|
102
|
-
c.desc 'Force a pre-release package to be published'
|
103
|
-
c.switch 'pre-release'
|
104
|
-
end
|
105
|
-
|
106
|
-
desc 'Bump the version number'
|
107
|
-
long_desc <<EOS
|
108
|
-
Specify either 'major', 'minor' or 'patch' as an argument. For example: `bozo bump major`
|
109
|
-
EOS
|
110
|
-
command :bump do |c|
|
111
|
-
c.action do |global_options, options, args|
|
112
|
-
if args.empty?
|
113
|
-
puts "Specify either 'major', 'minor' or 'patch' as an argument"
|
114
|
-
else
|
115
|
-
version_bumper = Bozo::Versioning::VersionBumper.new
|
116
|
-
version_bumper.bump args[0].to_sym
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
on_error do |exception|
|
122
|
-
puts exception.inspect.color(:red).bright
|
123
|
-
|
124
|
-
if exception.kind_of? Bozo::ExecutionError or exception.kind_of? Bozo::ConfigurationError
|
125
|
-
false
|
126
|
-
else
|
127
|
-
puts ''
|
128
|
-
puts exception.backtrace.join("\n").color(:red)
|
129
|
-
true
|
130
|
-
end
|
1
|
+
$:.push File.expand_path(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rainbow'
|
5
|
+
require 'rainbow/ext/string'
|
6
|
+
require 'gli'
|
7
|
+
require 'gli_version'
|
8
|
+
require 'bozo/bozo'
|
9
|
+
require 'bozo/class_name_helpers'
|
10
|
+
require 'bozo/logging'
|
11
|
+
require 'bozo/runner'
|
12
|
+
require 'bozo/executor'
|
13
|
+
require 'bozo/bozo_configuration'
|
14
|
+
require 'bozo/configuration_error'
|
15
|
+
require 'bozo/execution_error'
|
16
|
+
require 'bozo/versioning/version'
|
17
|
+
require 'bozo/versioning/version_bumper'
|
18
|
+
require 'bozo/versioning/version_bump_error'
|
19
|
+
|
20
|
+
include GLI
|
21
|
+
|
22
|
+
# Set the location of the bozo runtime configuration file
|
23
|
+
config_file '.bozorc'
|
24
|
+
|
25
|
+
version Bozo::VERSION
|
26
|
+
|
27
|
+
desc 'Run as a build server, allows more destructive actions'
|
28
|
+
switch 'build-server'
|
29
|
+
|
30
|
+
default_config_file = 'bozorc.rb'
|
31
|
+
|
32
|
+
desc "The build configuration file (defaults to #{default_config_file})"
|
33
|
+
default_value default_config_file
|
34
|
+
arg_name 'path'
|
35
|
+
flag 'config-file'
|
36
|
+
|
37
|
+
default_environment = 'development'
|
38
|
+
|
39
|
+
desc "The build environment (defaults to #{default_environment})"
|
40
|
+
default_value default_environment
|
41
|
+
arg_name 'name'
|
42
|
+
flag :environment
|
43
|
+
|
44
|
+
pre do |global_options, command, options, arguments|
|
45
|
+
# Load the configuration file.
|
46
|
+
config = Bozo::BozoConfiguration.new
|
47
|
+
config.load global_options[:'config-file']
|
48
|
+
|
49
|
+
puts "Building #{config.version} using Bozo #{Bozo::VERSION}"
|
50
|
+
puts ''
|
51
|
+
|
52
|
+
# Initialize the executor.
|
53
|
+
@executor = Bozo::Executor.new config, global_options
|
54
|
+
|
55
|
+
true
|
56
|
+
end
|
57
|
+
|
58
|
+
# Helper method for defining a command that invokes a bozo task.
|
59
|
+
#
|
60
|
+
# The first provided name will be passed on to bozo.
|
61
|
+
#
|
62
|
+
# Takes an optional block for defining command-specific flags and switches.
|
63
|
+
#
|
64
|
+
# @param [Symbol] command_names
|
65
|
+
# The names to give the command.
|
66
|
+
def bozo_command(*command_names)
|
67
|
+
command_name = command_names.first
|
68
|
+
command command_names do |c|
|
69
|
+
yield c if block_given?
|
70
|
+
c.action do |global_options, options, arguments|
|
71
|
+
@executor.execute command_name, options, ENV.to_hash
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
desc 'Remove bozo and all its artifacts'
|
77
|
+
bozo_command :uninstall
|
78
|
+
|
79
|
+
desc 'Remove all build artifacts'
|
80
|
+
bozo_command :clean
|
81
|
+
|
82
|
+
desc 'Retrieve all project dependencies'
|
83
|
+
bozo_command :dependencies
|
84
|
+
|
85
|
+
desc 'Prepare the project'
|
86
|
+
bozo_command :prepare
|
87
|
+
|
88
|
+
desc 'Compile the project'
|
89
|
+
bozo_command :compile, :c
|
90
|
+
|
91
|
+
desc 'Run the tests for the project'
|
92
|
+
bozo_command :test, :t
|
93
|
+
|
94
|
+
desc 'Create a package'
|
95
|
+
bozo_command :package, :p do |c|
|
96
|
+
c.desc 'Force a pre-release package to be created'
|
97
|
+
c.switch 'pre-release'
|
98
|
+
end
|
99
|
+
|
100
|
+
desc 'Publish a package'
|
101
|
+
bozo_command :publish do |c|
|
102
|
+
c.desc 'Force a pre-release package to be published'
|
103
|
+
c.switch 'pre-release'
|
104
|
+
end
|
105
|
+
|
106
|
+
desc 'Bump the version number'
|
107
|
+
long_desc <<EOS
|
108
|
+
Specify either 'major', 'minor' or 'patch' as an argument. For example: `bozo bump major`
|
109
|
+
EOS
|
110
|
+
command :bump do |c|
|
111
|
+
c.action do |global_options, options, args|
|
112
|
+
if args.empty?
|
113
|
+
puts "Specify either 'major', 'minor' or 'patch' as an argument"
|
114
|
+
else
|
115
|
+
version_bumper = Bozo::Versioning::VersionBumper.new
|
116
|
+
version_bumper.bump args[0].to_sym
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
on_error do |exception|
|
122
|
+
puts exception.inspect.color(:red).bright
|
123
|
+
|
124
|
+
if exception.kind_of? Bozo::ExecutionError or exception.kind_of? Bozo::ConfigurationError
|
125
|
+
false
|
126
|
+
else
|
127
|
+
puts ''
|
128
|
+
puts exception.backtrace.join("\n").color(:red)
|
129
|
+
true
|
130
|
+
end
|
131
131
|
end
|