Module: Kettle::Dev

Defined in:
lib/kettle/dev.rb,
lib/kettle/dev/version.rb,
lib/kettle/dev/dvcs_cli.rb,
lib/kettle/dev/setup_cli.rb,
lib/kettle/dev/ci_helpers.rb,
lib/kettle/dev/ci_monitor.rb,
lib/kettle/dev/commit_msg.rb,
lib/kettle/dev/versioning.rb,
lib/kettle/dev/git_adapter.rb,
lib/kettle/dev/prism_utils.rb,
lib/kettle/dev/release_cli.rb,
lib/kettle/dev/exit_adapter.rb,
lib/kettle/dev/changelog_cli.rb,
lib/kettle/dev/input_adapter.rb,
lib/kettle/dev/prism_gemfile.rb,
lib/kettle/dev/prism_gemspec.rb,
lib/kettle/dev/source_merger.rb,
lib/kettle/dev/tasks/ci_task.rb,
lib/kettle/dev/readme_backers.rb,
lib/kettle/dev/gem_spec_reader.rb,
lib/kettle/dev/pre_release_cli.rb,
lib/kettle/dev/modular_gemfiles.rb,
lib/kettle/dev/prism_appraisals.rb,
lib/kettle/dev/template_helpers.rb,
lib/kettle/dev/git_commit_footer.rb,
lib/kettle/dev/tasks/install_task.rb,
lib/kettle/dev/tasks/template_task.rb,
lib/kettle/dev/open_collective_config.rb

Defined Under Namespace

Modules: CIHelpers, CIMonitor, CommitMsg, ExitAdapter, InputAdapter, ModularGemfiles, OpenCollectiveConfig, PrismAppraisals, PrismGemfile, PrismGemspec, PrismUtils, SourceMerger, Tasks, TemplateHelpers, Version, Versioning Classes: ChangelogCLI, DvcsCLI, Error, GemSpecReader, GitAdapter, GitCommitFooter, PreReleaseCLI, ReadmeBackers, ReleaseCLI, SetupCLI

Constant Summary collapse

DEBUGGING =

Whether debug logging is enabled for kettle-dev internals.
KETTLE_DEV_DEBUG overrides DEBUG.

Returns:

  • (Boolean)
ENV.fetch("KETTLE_DEV_DEBUG", ENV.fetch("DEBUG", "false")).casecmp("true").zero?
IS_CI =

Whether we are running on CI.

Returns:

  • (Boolean)
ENV.fetch("CI", "false").casecmp("true") == 0
REQUIRE_BENCH =

Whether to benchmark requires with require_bench.

Returns:

  • (Boolean)
ENV.fetch("REQUIRE_BENCH", "false").casecmp("true").zero?
RUNNING_AS =

The current program name (e.g., “rake”, “rspec”).
Used to decide whether to auto-load rake tasks at the bottom of this file.
Normally tasks are loaded in the host project’s Rakefile, but when running
under this gem’s own test suite we need precise coverage; so we only
auto-install tasks when invoked via the rake executable.

Returns:

  • (String)
File.basename($PROGRAM_NAME)
ENV_TRUE_RE =

A case-insensitive regular expression that matches common truthy ENV values.
Accepts 1, true, y, yes (any case).

Returns:

  • (Regexp)
/\A(1|true|y|yes)\z/i
ENV_FALSE_RE =

A case-insensitive regular expression that matches common falsy ENV values.
Accepts false, n, no, 0 (any case).

Returns:

  • (Regexp)
/\A(false|n|no|0)\z/i
GEM_ROOT =

Absolute path to the root of the kettle-dev gem (repository root when working from source)

Returns:

  • (String)
File.expand_path("../..", __dir__)

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.defaultsArray<String> (readonly)

Registry for tasks that should be prerequisites of the default task

Returns:

  • (Array<String>)


122
123
124
# File 'lib/kettle/dev.rb', line 122

def defaults
  @defaults
end

Class Method Details

.debug_error(error, context = nil) ⇒ void

This method returns an undefined value.

Emit a debug warning for rescued errors when kettle-dev debugging is enabled.
Controlled by KETTLE_DEV_DEBUG=true (or DEBUG=true as fallback).

Parameters:

  • error (Exception)
  • context (String, Symbol, nil) (defaults to: nil)

    optional label, often method



87
88
89
90
91
92
93
94
# File 'lib/kettle/dev.rb', line 87

def debug_error(error, context = nil)
  return unless DEBUGGING

  ctx = context ? context.to_s : "KETTLE-DEV-RESCUE"
  Kernel.warn("[#{ctx}] #{error.class}: #{error.message}")
rescue StandardError
  # never raise from debug logging
end

.debug_log(msg, context = nil) ⇒ void

This method returns an undefined value.

Emit a debug log line when kettle-dev debugging is enabled.
Controlled by KETTLE_DEV_DEBUG=true (or DEBUG=true as fallback).

Parameters:

  • msg (String)


100
101
102
103
104
105
106
107
# File 'lib/kettle/dev.rb', line 100

def debug_log(msg, context = nil)
  return unless DEBUGGING

  ctx = context ? context.to_s : "KETTLE-DEV-DEBUG"
  Kernel.warn("[#{ctx}] #{msg}")
rescue StandardError
  # never raise from debug logging
end

.default_registered?(task_name) ⇒ Boolean

Returns:

  • (Boolean)


143
144
145
# File 'lib/kettle/dev.rb', line 143

def default_registered?(task_name)
  defaults.include?(task_name.to_s)
end

.install_tasksvoid

This method returns an undefined value.

Install Rake tasks useful for development and tests.

Adds RuboCop-LTS tasks, coverage tasks, and loads the
gem-shipped rakelib directory so host projects get tasks from this gem.



114
115
116
117
118
# File 'lib/kettle/dev.rb', line 114

def install_tasks
  linting_tasks
  coverage_tasks
  load("kettle/dev/tasks.rb")
end

.register_default(task_name) ⇒ Array<String>

Register a task name to be run by the default task.
Also enhances the :default task immediately if it exists.

Parameters:

  • task_name (String, Symbol)

Returns:

  • (Array<String>)

    the updated defaults registry



128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/kettle/dev.rb', line 128

def register_default(task_name)
  task_name = task_name.to_s
  unless defaults.include?(task_name)
    defaults << task_name
    if defined?(Rake) && Rake::Task.task_defined?(:default)
      begin
        Rake::Task[:default].enhance([task_name])
      rescue StandardError => e
        Kernel.warn("kettle-dev: failed to enhance :default with #{task_name}: #{e.message}") if DEBUGGING
      end
    end
  end
  defaults
end