Skip to content

Commit 3739d1e

Browse files
committed
Add additional tasks
1 parent e894feb commit 3739d1e

File tree

4 files changed

+76
-16
lines changed

4 files changed

+76
-16
lines changed

_gem/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,26 @@ Following tasks are generated
6969
* `rake go5:testrace`
7070
* `rake go5:fmt`
7171

72+
#### Example (Add additional tasks)
73+
```ruby
74+
# Rakefile
75+
require "go_gem/rake_task"
76+
77+
go_task = GoGem::RakeTask.new("gem_name")
78+
79+
namespace :go do
80+
desc "Run golangci-lint"
81+
task :lint do
82+
go_task.within_target_dir do
83+
sh "which golangci-lint" do |ok, _|
84+
raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
85+
end
86+
sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
87+
end
88+
end
89+
end
90+
```
91+
7292
#### Available configurations
7393
* `task_namespace` : task namespace (default: `:go`)
7494
* `go_bin_path` : path to go binary (default: `"go"`)

_gem/lib/go_gem/rake_task.rb

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,24 @@ module GoGem
2222
# t.go_test_args = "-mod=readonly"
2323
# t.target_dir = "/dir/to/go-mod/"
2424
# end
25+
#
26+
# @example additional tasks
27+
# # Rakefile
28+
# require "go_gem/rake_task"
29+
#
30+
# t = GoGem::RakeTask.new("gem_name")
31+
#
32+
# namespace :go do
33+
# desc "Run golangci-lint"
34+
# task :lint do
35+
# t.within_target_dir do
36+
# sh "which golangci-lint" do |ok, _|
37+
# raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
38+
# end
39+
# sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
40+
# end
41+
# end
42+
# end
2543
class RakeTask < ::Rake::TaskLib
2644
DEFAULT_TASK_NAMESPACE = :go
2745

@@ -110,6 +128,18 @@ def self.build_env_vars
110128
}
111129
end
112130

131+
# @yield
132+
def within_target_dir
133+
Dir.chdir(target_dir) do # rubocop:disable Style/ExplicitBlockArgument
134+
yield
135+
end
136+
end
137+
138+
# @return [String]
139+
def ext_dir
140+
File.join("ext", gem_name)
141+
end
142+
113143
private
114144

115145
def define_go_test_task
@@ -138,17 +168,5 @@ def define_go_fmt_task
138168
end
139169
end
140170
end
141-
142-
# @yield
143-
def within_target_dir
144-
Dir.chdir(target_dir) do # rubocop:disable Style/ExplicitBlockArgument
145-
yield
146-
end
147-
end
148-
149-
# @return [String]
150-
def ext_dir
151-
File.join("ext", gem_name)
152-
end
153171
end
154172
end

_gem/spec/go_gem/rake_task_spec.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,26 @@
1717
it { should be_task_defined("go:test") }
1818
it { should be_task_defined("go:testrace") }
1919
it { should be_task_defined("go:fmt") }
20+
21+
describe "Add additional tasks" do
22+
include Rake::DSL
23+
24+
subject do
25+
t = GoGem::RakeTask.new(gem_name)
26+
27+
namespace :go do
28+
task :test2 do
29+
t.within_target_dir do
30+
sh "go test"
31+
end
32+
end
33+
end
34+
35+
Rake::Task
36+
end
37+
38+
it { should be_task_defined("go:test2") }
39+
end
2040
end
2141

2242
context "with params" do

_tasks/go.rake

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
# frozen_string_literal: true
22

3-
GoGem::RakeTask.new("") do |t|
3+
go_task = GoGem::RakeTask.new("") do |t|
44
t.target_dir = repo_root
55
t.go_test_args = "#{GoGem::RakeTask::DEFAULT_GO_TEST_ARGS} #{ENV["GO_TEST_ARGS"]}"
66
end
77

88
namespace :go do
99
desc "Run golangci-lint"
1010
task :lint do
11-
sh "which golangci-lint" do |ok, _|
12-
raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
11+
go_task.within_target_dir do
12+
sh "which golangci-lint" do |ok, _|
13+
raise "golangci-lint isn't installed. See. https://golangci-lint.run/welcome/install/" unless ok
14+
end
15+
sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
1316
end
14-
sh GoGem::RakeTask.build_env_vars, "golangci-lint run"
1517
end
1618

1719
desc "Run all build tasks in go"

0 commit comments

Comments
 (0)