forked from deivid-rodriguez/byebug
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRakefile
145 lines (110 loc) · 2.87 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# frozen_string_literal: true
require "bundler/gem_tasks"
require "chandler/tasks"
require "rake/extensiontask"
require "yard"
#
# Add chandler as a prerequisite for `rake release`
#
task "release:rubygem_push" => "chandler:push"
#
# Prepend DevKit into compilation phase
#
if Gem.win_platform?
desc "Activates DevKit"
task :devkit do
begin
require "devkit"
rescue LoadError
abort "Failed to load DevKit required for compilation"
end
end
task compile: :devkit
end
spec = Gem::Specification.load("byebug.gemspec")
Rake::ExtensionTask.new("byebug", spec) { |ext| ext.lib_dir = "lib/byebug" }
desc "Runs the test suite"
task :test do
require_relative "test/minitest_runner"
exit 1 unless Byebug::MinitestRunner.new.run
end
namespace :lint do
desc "Run all linters"
task all: %i[clang_format executables tabs trailing_whitespace rubocop mdl]
require_relative "tasks/linter"
desc "Run clang_format on C files"
task :clang_format do
puts "Running linter on C files"
CLangFormatLinter.new.run
end
desc "Check unnecessary execute permissions"
task :executables do
puts "Checking for unnecessary executables"
ExecutableLinter.new.run
end
desc "Check for tabs"
task :tabs do
puts "Checking for unnecessary tabs"
TabLinter.new.run
end
desc "Check for trailing whitespace"
task :trailing_whitespace do
puts "Checking for unnecessary trailing whitespace"
TrailingWhitespaceLinter.new.run
end
require "rubocop/rake_task"
desc "Checks ruby code style with RuboCop"
RuboCop::RakeTask.new
desc "Checks markdown code style with Markdownlint"
task :mdl do
puts "Running mdl"
sh("mdl", *Dir.glob("*.md"))
end
desc "Checks shell code style with shellcheck"
task :shellcheck do
puts "Running shellcheck"
sh("shellcheck", *Dir.glob("bin/*.sh"))
end
end
desc "Runs lint tasks"
task lint: "lint:all"
namespace :docker do
require_relative "docker/manager"
desc "Build all docker images"
task :build_all do
Docker::Manager.build_all
end
desc "Build the default docker image"
task :build do
Docker::Manager.build_default
end
desc "Build a ruby trunk image"
task :build_and_push_head, %i[line_editor compiler] do |_t, opts|
manager = Docker::Manager.new(
version: "head",
line_editor: opts[:line_editor],
compiler: opts[:compiler]
)
manager.build
manager.login
manager.push
end
desc "Test all docker images"
task :test_all do
Docker::Manager.test_all
end
desc "Test the default docker image"
task :test do
Docker::Manager.test_default
end
desc "Push all docker images to dockerhub"
task :push_all do
Docker::Manager.push_all
end
desc "Push the default docker image to dockerhub"
task :push do
Docker::Manager.push_default
end
end
task default: %i[compile test lint]
YARD::Rake::YardocTask.new