toys 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +54 -0
- data/LICENSE.md +16 -24
- data/README.md +263 -57
- data/bin/toys +17 -25
- data/builtins/do.rb +38 -38
- data/builtins/system.rb +111 -30
- data/docs/guide.md +783 -321
- data/lib/toys.rb +32 -34
- data/lib/toys/standard_cli.rb +69 -90
- data/lib/toys/templates/clean.rb +19 -27
- data/lib/toys/templates/gem_build.rb +78 -41
- data/lib/toys/templates/minitest.rb +25 -31
- data/lib/toys/templates/rake.rb +21 -29
- data/lib/toys/templates/rdoc.rb +27 -35
- data/lib/toys/templates/rspec.rb +30 -36
- data/lib/toys/templates/rubocop.rb +21 -29
- data/lib/toys/templates/yardoc.rb +36 -44
- data/lib/toys/version.rb +18 -26
- data/share/bash-completion-remove.sh +26 -0
- data/share/bash-completion.sh +26 -0
- metadata +14 -12
@@ -1,81 +1,97 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright
|
3
|
+
# Copyright 2019 Daniel Azuma
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
6
11
|
#
|
7
|
-
#
|
8
|
-
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
9
14
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# derived from this software without specific prior written permission.
|
18
|
-
#
|
19
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
-
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
-
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
-
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
-
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
-
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
-
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
-
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
30
22
|
;
|
31
23
|
|
32
24
|
module Toys
|
33
25
|
module Templates
|
34
26
|
##
|
35
|
-
# A template for tools that build and release gems
|
27
|
+
# A template for tools that build, install, and release gems
|
36
28
|
#
|
37
29
|
class GemBuild
|
38
30
|
include Template
|
39
31
|
|
40
32
|
##
|
41
|
-
# Default tool name
|
33
|
+
# Default tool name.
|
42
34
|
# @return [String]
|
43
35
|
#
|
44
36
|
DEFAULT_TOOL_NAME = "build"
|
45
37
|
|
38
|
+
##
|
39
|
+
# Default output flags. If `output_flags` is set to `true`, this is the
|
40
|
+
# value used.
|
41
|
+
# @return [Array<String>]
|
42
|
+
#
|
43
|
+
DEFAULT_OUTPUT_FLAGS = ["-o", "--output"].freeze
|
44
|
+
|
46
45
|
##
|
47
46
|
# Create the template settings for the GemBuild template.
|
48
47
|
#
|
49
|
-
# @param [String]
|
48
|
+
# @param name [String] Name of the tool to create. Defaults to
|
50
49
|
# {DEFAULT_TOOL_NAME}.
|
51
|
-
# @param [String]
|
50
|
+
# @param gem_name [String] Name of the gem to build. If not provided,
|
52
51
|
# defaults to the first gemspec file it finds.
|
53
|
-
# @param [
|
54
|
-
#
|
55
|
-
#
|
52
|
+
# @param output [String] Path to the gem package to generate. Optional.
|
53
|
+
# If not provided, generates a default file name based on the gem
|
54
|
+
# name and version, under the "pkg" directory.
|
55
|
+
# @param output_flags [Array<String>,true] Provide flags on the tool that
|
56
|
+
# set the output path. Optional. If not provided, no flags are
|
57
|
+
# created. You may set this to an array of flags (e.g. `["-o"]`) or
|
58
|
+
# set to `true` to choose {DEFAULT_OUTPUT_FLAGS}.
|
59
|
+
# @param push_gem [Boolean] If true, pushes the built gem to rubygems.
|
60
|
+
# @param install_gem [Boolean] If true, installs the built gem locally.
|
61
|
+
# @param tag [Boolean] If true, tags the git repo with the gem version.
|
62
|
+
# @param push_tag [Boolean,String] If truthy, pushes the new tag to
|
56
63
|
# a git remote. You may specify which remote by setting the value to
|
57
64
|
# a string. Otherwise, if the value is simply `true`, the "origin"
|
58
65
|
# remote is used by default.
|
59
66
|
#
|
60
67
|
def initialize(name: DEFAULT_TOOL_NAME,
|
61
68
|
gem_name: nil,
|
69
|
+
output: nil,
|
70
|
+
output_flags: nil,
|
62
71
|
push_gem: false,
|
72
|
+
install_gem: false,
|
63
73
|
tag: false,
|
64
74
|
push_tag: false)
|
65
75
|
@name = name
|
66
76
|
@gem_name = gem_name
|
77
|
+
@output = output
|
78
|
+
@output_flags = output_flags == true ? DEFAULT_OUTPUT_FLAGS : output_flags
|
67
79
|
@push_gem = push_gem
|
80
|
+
@install_gem = install_gem
|
68
81
|
@tag = tag
|
69
82
|
@push_tag = push_tag
|
70
83
|
end
|
71
84
|
|
72
85
|
attr_accessor :name
|
73
86
|
attr_accessor :gem_name
|
87
|
+
attr_accessor :output
|
88
|
+
attr_accessor :output_flags
|
74
89
|
attr_accessor :push_gem
|
90
|
+
attr_accessor :install_gem
|
75
91
|
attr_accessor :tag
|
76
92
|
attr_accessor :push_tag
|
77
93
|
|
78
|
-
|
94
|
+
on_expand do |template|
|
79
95
|
unless template.gem_name
|
80
96
|
candidates = ::Dir.chdir(context_directory || ::Dir.getwd) do
|
81
97
|
::Dir.glob("*.gemspec")
|
@@ -85,12 +101,25 @@ module Toys
|
|
85
101
|
end
|
86
102
|
template.gem_name = candidates.first.sub(/\.gemspec$/, "")
|
87
103
|
end
|
88
|
-
|
104
|
+
task_names = []
|
105
|
+
task_names << "Install" if template.install_gem
|
106
|
+
task_names << "Release" if template.push_gem
|
107
|
+
task_names = task_names.empty? ? "Build" : task_names.join(" and ")
|
89
108
|
|
90
109
|
tool(template.name) do
|
91
|
-
desc "#{
|
110
|
+
desc "#{task_names} the gem: #{template.gem_name}"
|
92
111
|
|
93
112
|
flag :yes, "-y", "--yes", desc: "Do not ask for interactive confirmation"
|
113
|
+
if template.output_flags
|
114
|
+
flag :output do
|
115
|
+
flags(Array(template.output_flags).map { |f| "#{f} VAL" })
|
116
|
+
desc "output gem with the given filename"
|
117
|
+
default template.output
|
118
|
+
complete_values :file_system
|
119
|
+
end
|
120
|
+
else
|
121
|
+
static :output, template.output
|
122
|
+
end
|
94
123
|
|
95
124
|
include :exec, exit_on_nonzero_status: true
|
96
125
|
include :fileutils
|
@@ -99,19 +128,27 @@ module Toys
|
|
99
128
|
to_run do
|
100
129
|
require "rubygems/package"
|
101
130
|
::Dir.chdir(context_directory || ::Dir.getwd) do
|
102
|
-
|
103
|
-
|
104
|
-
gemfile = "#{template.gem_name}-#{version}.gem"
|
131
|
+
gem_name = template.gem_name
|
132
|
+
gemspec = ::Gem::Specification.load("#{gem_name}.gemspec")
|
105
133
|
::Gem::Package.build(gemspec)
|
106
|
-
|
107
|
-
|
134
|
+
version = gemspec.version
|
135
|
+
archive_name = "#{gem_name}-#{version}.gem"
|
136
|
+
archive_path = output || "pkg/#{archive_name}"
|
137
|
+
if archive_name != archive_path
|
138
|
+
mkdir_p(::File.dirname(archive_path))
|
139
|
+
mv(archive_name, archive_path)
|
140
|
+
end
|
141
|
+
if template.install_gem
|
142
|
+
exit(1) unless yes || confirm("Install #{gem_name} #{version}? ", default: true)
|
143
|
+
exec ["gem", "install", archive_path]
|
144
|
+
end
|
108
145
|
if template.push_gem
|
109
146
|
if ::File.directory?(".git") && capture("git status -s").strip != ""
|
110
147
|
logger.error "Cannot push the gem when there are uncommited changes"
|
111
148
|
exit(1)
|
112
149
|
end
|
113
|
-
exit(1) unless yes || confirm("Release #{
|
114
|
-
exec(["gem", "push",
|
150
|
+
exit(1) unless yes || confirm("Release #{gem_name} #{version}? ", default: true)
|
151
|
+
exec(["gem", "push", archive_path])
|
115
152
|
if template.tag
|
116
153
|
exec(["git", "tag", "v#{version}"])
|
117
154
|
if template.push_tag
|
@@ -1,32 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright
|
3
|
+
# Copyright 2019 Daniel Azuma
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
6
11
|
#
|
7
|
-
#
|
8
|
-
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
9
14
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# derived from this software without specific prior written permission.
|
18
|
-
#
|
19
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
-
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
-
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
-
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
-
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
-
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
-
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
-
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
30
22
|
;
|
31
23
|
|
32
24
|
module Toys
|
@@ -64,15 +56,15 @@ module Toys
|
|
64
56
|
##
|
65
57
|
# Create the template settings for the Minitest template.
|
66
58
|
#
|
67
|
-
# @param [String]
|
59
|
+
# @param name [String] Name of the tool to create. Defaults to
|
68
60
|
# {DEFAULT_TOOL_NAME}.
|
69
|
-
# @param [String,Array<String>]
|
61
|
+
# @param gem_version [String,Array<String>] Version requirements for
|
70
62
|
# the minitest gem. Defaults to {DEFAULT_GEM_VERSION_REQUIREMENTS}.
|
71
|
-
# @param [Array<String>]
|
63
|
+
# @param libs [Array<String>] An array of library paths to add to the
|
72
64
|
# ruby require path. Defaults to {DEFAULT_LIBS}.
|
73
|
-
# @param [Array<String>]
|
65
|
+
# @param files [Array<String>] An array of globs indicating the test
|
74
66
|
# files to load. Defaults to {DEFAULT_FILES}.
|
75
|
-
# @param [Boolean]
|
67
|
+
# @param warnings [Boolean] If true, runs tests with Ruby warnings.
|
76
68
|
# Defaults to true.
|
77
69
|
#
|
78
70
|
def initialize(name: nil,
|
@@ -99,7 +91,7 @@ module Toys
|
|
99
91
|
attr_accessor :verbose
|
100
92
|
attr_accessor :warnings
|
101
93
|
|
102
|
-
|
94
|
+
on_expand do |template|
|
103
95
|
tool(template.name) do
|
104
96
|
desc "Run minitest on the current project."
|
105
97
|
|
@@ -116,7 +108,9 @@ module Toys
|
|
116
108
|
flag :exclude, "-e", "--exclude PATTERN",
|
117
109
|
desc: "Exclude /regexp/ or string from run."
|
118
110
|
|
119
|
-
remaining_args :tests,
|
111
|
+
remaining_args :tests,
|
112
|
+
complete: :file_system,
|
113
|
+
desc: "Paths to the tests to run (defaults to all tests)"
|
120
114
|
|
121
115
|
to_run do
|
122
116
|
gem "minitest", *Array(template.gem_version)
|
data/lib/toys/templates/rake.rb
CHANGED
@@ -1,32 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright
|
3
|
+
# Copyright 2019 Daniel Azuma
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
6
11
|
#
|
7
|
-
#
|
8
|
-
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
9
14
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# derived from this software without specific prior written permission.
|
18
|
-
#
|
19
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
-
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
-
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
-
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
-
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
-
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
-
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
-
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
30
22
|
;
|
31
23
|
|
32
24
|
module Toys
|
@@ -46,13 +38,13 @@ module Toys
|
|
46
38
|
##
|
47
39
|
# Create the template settings for the rake template.
|
48
40
|
#
|
49
|
-
# @param [String,Array<String>,nil]
|
41
|
+
# @param gem_version [String,Array<String>,nil] Version requirements for
|
50
42
|
# the rake gem. Defaults to nil, indicating no version requirement.
|
51
|
-
# @param [String]
|
43
|
+
# @param rakefile_path [String] Path to the Rakefile. Defaults to
|
52
44
|
# {DEFAULT_RAKEFILE_PATH}.
|
53
|
-
# @param [Boolean]
|
45
|
+
# @param only_described [Boolean] If true, tools are generated only for
|
54
46
|
# rake tasks with descriptions. Default is false.
|
55
|
-
# @param [Boolean]
|
47
|
+
# @param use_flags [Boolean] Generated tools use flags instead of
|
56
48
|
# positional arguments to pass arguments to rake tasks. Default is
|
57
49
|
# false.
|
58
50
|
#
|
@@ -71,7 +63,7 @@ module Toys
|
|
71
63
|
attr_accessor :only_described
|
72
64
|
attr_accessor :use_flags
|
73
65
|
|
74
|
-
|
66
|
+
on_expand do |template|
|
75
67
|
gem "rake", *Array(template.gem_version)
|
76
68
|
require "rake"
|
77
69
|
rakefile_path = Templates::Rake.find_rakefile(template.rakefile_path, context_directory)
|
data/lib/toys/templates/rdoc.rb
CHANGED
@@ -1,32 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright
|
3
|
+
# Copyright 2019 Daniel Azuma
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
6
11
|
#
|
7
|
-
#
|
8
|
-
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
9
14
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# derived from this software without specific prior written permission.
|
18
|
-
#
|
19
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
-
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
-
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
-
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
-
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
-
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
-
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
-
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
30
22
|
;
|
31
23
|
|
32
24
|
module Toys
|
@@ -58,25 +50,25 @@ module Toys
|
|
58
50
|
##
|
59
51
|
# Create the template settings for the Rdoc template.
|
60
52
|
#
|
61
|
-
# @param [String]
|
53
|
+
# @param name [String] Name of the tool to create. Defaults to
|
62
54
|
# {DEFAULT_TOOL_NAME}.
|
63
|
-
# @param [String,Array<String>]
|
55
|
+
# @param gem_version [String,Array<String>] Version requirements for
|
64
56
|
# the rdoc gem. Defaults to {DEFAULT_GEM_VERSION_REQUIREMENTS}.
|
65
|
-
# @param [Array<String>]
|
57
|
+
# @param files [Array<String>] An array of globs indicating the files
|
66
58
|
# to document.
|
67
|
-
# @param [String]
|
59
|
+
# @param output_dir [String] Name of directory to receive html output
|
68
60
|
# files. Defaults to {DEFAULT_OUTPUT_DIR}.
|
69
|
-
# @param [String,nil]
|
61
|
+
# @param markup [String,nil] Markup format. Allowed values include
|
70
62
|
# "rdoc", "rd", and "tomdoc". Default is "rdoc".
|
71
|
-
# @param [String,nil]
|
63
|
+
# @param title [String,nil] Title of RDoc documentation. If `nil`, RDoc
|
72
64
|
# will use a default title.
|
73
|
-
# @param [String,nil]
|
65
|
+
# @param main [String,nil] Name of the file to use as the main top level
|
74
66
|
# document. Default is none.
|
75
|
-
# @param [String,nil]
|
67
|
+
# @param template [String,nil] Name of the template to use. If `nil`,
|
76
68
|
# RDoc will use its default template.
|
77
|
-
# @param [String,nil]
|
69
|
+
# @param generator [String,nil] Name of the format generator. If `nil`,
|
78
70
|
# RDoc will use its default generator.
|
79
|
-
# @param [Array<String>]
|
71
|
+
# @param options [Array<String>] Additional options to pass to RDoc.
|
80
72
|
#
|
81
73
|
def initialize(name: nil,
|
82
74
|
gem_version: nil,
|
@@ -111,7 +103,7 @@ module Toys
|
|
111
103
|
attr_accessor :generator
|
112
104
|
attr_accessor :options
|
113
105
|
|
114
|
-
|
106
|
+
on_expand do |template|
|
115
107
|
tool(template.name) do
|
116
108
|
desc "Run rdoc on the current project."
|
117
109
|
|
data/lib/toys/templates/rspec.rb
CHANGED
@@ -1,32 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Copyright
|
3
|
+
# Copyright 2019 Daniel Azuma
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
6
11
|
#
|
7
|
-
#
|
8
|
-
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in
|
13
|
+
# all copies or substantial portions of the Software.
|
9
14
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
# derived from this software without specific prior written permission.
|
18
|
-
#
|
19
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
20
|
-
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
21
|
-
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
22
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
23
|
-
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
24
|
-
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
25
|
-
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
26
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
27
|
-
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
28
|
-
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
29
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
20
|
+
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
21
|
+
# IN THE SOFTWARE.
|
30
22
|
;
|
31
23
|
|
32
24
|
module Toys
|
@@ -70,21 +62,21 @@ module Toys
|
|
70
62
|
##
|
71
63
|
# Create the template settings for the RSpec template.
|
72
64
|
#
|
73
|
-
# @param [String]
|
65
|
+
# @param name [String] Name of the tool to create. Defaults to
|
74
66
|
# {DEFAULT_TOOL_NAME}.
|
75
|
-
# @param [String,Array<String>]
|
67
|
+
# @param gem_version [String,Array<String>] Version requirements for
|
76
68
|
# the rspec gem. Defaults to {DEFAULT_GEM_VERSION_REQUIREMENTS}.
|
77
|
-
# @param [Array<String>]
|
69
|
+
# @param libs [Array<String>] An array of library paths to add to the
|
78
70
|
# ruby require path. Defaults to {DEFAULT_LIBS}.
|
79
|
-
# @param [String]
|
80
|
-
# @param [String]
|
71
|
+
# @param options [String] The path to a custom options file.
|
72
|
+
# @param order [String] The order in which to run examples. Default is
|
81
73
|
# {DEFAULT_ORDER}.
|
82
|
-
# @param [String]
|
83
|
-
# @param [String]
|
84
|
-
# @param [Boolean]
|
85
|
-
# @param [String]
|
74
|
+
# @param format [String] Choose a formatter code. Default is `p`.
|
75
|
+
# @param out [String] Write output to a file instead of stdout.
|
76
|
+
# @param backtrace [Boolean] Enable full backtrace (default is false).
|
77
|
+
# @param pattern [String] A glob indicating the spec files to load.
|
86
78
|
# Defaults to {DEFAULT_PATTERN}.
|
87
|
-
# @param [Boolean]
|
79
|
+
# @param warnings [Boolean] If true, runs specs with Ruby warnings.
|
88
80
|
# Defaults to true.
|
89
81
|
#
|
90
82
|
def initialize(name: nil,
|
@@ -120,7 +112,7 @@ module Toys
|
|
120
112
|
attr_accessor :pattern
|
121
113
|
attr_accessor :warnings
|
122
114
|
|
123
|
-
|
115
|
+
on_expand do |template|
|
124
116
|
tool(template.name) do
|
125
117
|
desc "Run rspec on the current project."
|
126
118
|
|
@@ -154,7 +146,9 @@ module Toys
|
|
154
146
|
desc: "Run examples with the specified tag, or exclude" \
|
155
147
|
" examples by adding ~ before the tag."
|
156
148
|
|
157
|
-
remaining_args :files,
|
149
|
+
remaining_args :files,
|
150
|
+
complete: :file_system,
|
151
|
+
desc: "Paths to the specs to run (defaults to all specs)"
|
158
152
|
|
159
153
|
to_run do
|
160
154
|
gem "rspec", *Array(template.gem_version)
|