|
2 | 2 |
|
3 | 3 | require "bundler/gem_tasks" |
4 | 4 |
|
| 5 | +defaults = [] |
| 6 | + |
| 7 | +# See: https://docs.gitlab.com/ci/variables/predefined_variables/ |
| 8 | +is_gitlab = ENV.fetch("GITLAB_CI", "false").casecmp("true") == 0 |
| 9 | + |
| 10 | +### DEVELOPMENT TASKS |
| 11 | +# Setup Kettle Soup Cover |
| 12 | +begin |
| 13 | + require "kettle-soup-cover" |
| 14 | + |
| 15 | + Kettle::Soup::Cover.install_tasks |
| 16 | + # NOTE: Coverage on CI is configured independent of this task. |
| 17 | + # This task is for local development, as it opens results in browser |
| 18 | + defaults << "coverage" unless Kettle::Soup::Cover::IS_CI |
| 19 | +rescue LoadError |
| 20 | + desc("(stub) coverage is unavailable") |
| 21 | + task("coverage") do |
| 22 | + warn("NOTE: kettle-soup-cover isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
| 23 | + end |
| 24 | +end |
| 25 | + |
| 26 | +# Setup Bundle Audit |
| 27 | +begin |
| 28 | + require "bundler/audit/task" |
| 29 | + |
| 30 | + Bundler::Audit::Task.new |
| 31 | + defaults.push("bundle:audit:update", "bundle:audit") |
| 32 | +rescue LoadError |
| 33 | + desc("(stub) bundle:audit is unavailable") |
| 34 | + task("bundle:audit") do |
| 35 | + warn("NOTE: bundler-audit isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
| 36 | + end |
| 37 | + desc("(stub) bundle:audit:update is unavailable") |
| 38 | + task("bundle:audit:update") do |
| 39 | + warn("NOTE: bundler-audit isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
| 40 | + end |
| 41 | +end |
| 42 | + |
5 | 43 | begin |
6 | 44 | require "rspec/core/rake_task" |
| 45 | + |
7 | 46 | # Define a default test task which will run only specs which work on sqlite3 because, |
8 | 47 | # when running sqlite3-based tests you don't need any additional services running. |
9 | 48 | %w(active_record sequel).each do |orm| |
@@ -51,52 +90,70 @@ begin |
51 | 90 | spec_orm_sequel |
52 | 91 | ]) |
53 | 92 | rescue LoadError |
54 | | - task(:test) do |
55 | | - warn("RSpec is disabled") |
| 93 | + task(:spec) do |
| 94 | + warn("NOTE: rspec isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
56 | 95 | end |
57 | 96 | end |
58 | 97 |
|
| 98 | +# Setup RuboCop-LTS |
59 | 99 | begin |
60 | | - require "reek/rake/task" |
61 | | - Reek::Rake::Task.new do |t| |
62 | | - t.fail_on_error = true |
63 | | - t.verbose = false |
64 | | - t.source_files = "{spec,spec_ignored,spec_orms,lib}/**/*.rb" |
65 | | - end |
| 100 | + require "rubocop/lts" |
| 101 | + |
| 102 | + Rubocop::Lts.install_tasks |
| 103 | + defaults << "rubocop_gradual" |
66 | 104 | rescue LoadError |
67 | | - task(:reek) do |
68 | | - warn("reek is disabled") |
| 105 | + desc("(stub) rubocop_gradual is unavailable") |
| 106 | + task(:rubocop_gradual) do |
| 107 | + warn("NOTE: rubocop-lts isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
69 | 108 | end |
70 | 109 | end |
71 | 110 |
|
| 111 | +# Setup Yard |
72 | 112 | begin |
73 | | - require "yard-junk/rake" |
| 113 | + require "yard" |
74 | 114 |
|
75 | | - YardJunk::Rake.define_task |
| 115 | + YARD::Rake::YardocTask.new(:yard) do |t| |
| 116 | + t.files = [ |
| 117 | + # Splats (alphabetical) |
| 118 | + "lib/**/*.rb", |
| 119 | + ] |
| 120 | + end |
| 121 | + defaults << "yard" |
76 | 122 | rescue LoadError |
77 | | - task("yard:junk") do |
78 | | - warn("yard:junk is disabled") |
| 123 | + desc("(stub) yard is unavailable") |
| 124 | + task(:yard) do |
| 125 | + warn("NOTE: yard isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
79 | 126 | end |
80 | 127 | end |
81 | 128 |
|
| 129 | +# Setup Reek |
82 | 130 | begin |
83 | | - require "yard" |
| 131 | + require "reek/rake/task" |
84 | 132 |
|
85 | | - YARD::Rake::YardocTask.new(:yard) |
| 133 | + Reek::Rake::Task.new do |t| |
| 134 | + t.fail_on_error = true |
| 135 | + t.verbose = false |
| 136 | + t.source_files = "{spec,spec_ignored,spec_orms,lib}/**/*.rb" |
| 137 | + end |
| 138 | + defaults << "reek" unless is_gitlab |
86 | 139 | rescue LoadError |
87 | | - task(:yard) do |
88 | | - warn("yard is disabled") |
| 140 | + desc("(stub) reek is unavailable") |
| 141 | + task(:reek) do |
| 142 | + warn("NOTE: reek isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
89 | 143 | end |
90 | 144 | end |
91 | 145 |
|
| 146 | +### RELEASE TASKS |
| 147 | +# Setup stone_checksums |
92 | 148 | begin |
93 | | - require "rubocop/lts" |
94 | | - Rubocop::Lts.install_tasks |
| 149 | + require "stone_checksums" |
| 150 | + |
| 151 | + GemChecksums.install_tasks |
95 | 152 | rescue LoadError |
96 | | - task(:rubocop_gradual) do |
97 | | - warn("RuboCop (Gradual) is disabled") |
| 153 | + desc("(stub) build:generate_checksums is unavailable") |
| 154 | + task("build:generate_checksums") do |
| 155 | + warn("NOTE: stone_checksums isn't installed, or is disabled for #{RUBY_VERSION} in the current environment") |
98 | 156 | end |
99 | 157 | end |
100 | 158 |
|
101 | | -# These tests do not require any services to be running, so this is what we run as default |
102 | | -task default: %i[spec:orm:all rubocop_gradual:autocorrect yard yard:junk] |
| 159 | +task default: defaults |
0 commit comments