Module: Kettle::Dev

Defined in:
lib/kettle/dev.rb,
lib/kettle/dev/version.rb,
lib/kettle/dev/bump_cli.rb,
lib/kettle/dev/dvcs_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/release_cli.rb,
lib/kettle/dev/exit_adapter.rb,
lib/kettle/dev/version_bump.rb,
lib/kettle/dev/changelog_cli.rb,
lib/kettle/dev/input_adapter.rb,
lib/kettle/dev/tasks/ci_task.rb,
lib/kettle/dev/cache_progress.rb,
lib/kettle/dev/readme_backers.rb,
lib/kettle/dev/gem_spec_reader.rb,
lib/kettle/dev/pre_release_cli.rb,
lib/kettle/dev/gha_sha_pins_cli.rb,
lib/kettle/dev/git_commit_footer.rb,
lib/kettle/dev/changelog_entry_adder.rb,
lib/kettle/dev/open_collective_config.rb,
sig/kettle/dev.rbs,
sig/kettle/dev/tasks.rbs,
sig/kettle/dev/version.rbs,
sig/kettle/dev/dvcs_cli.rbs,
sig/kettle/dev/setup_cli.rbs,
sig/kettle/dev/ci_helpers.rbs,
sig/kettle/dev/ci_monitor.rbs,
sig/kettle/dev/commit_msg.rbs,
sig/kettle/dev/versioning.rbs,
sig/kettle/dev/git_adapter.rbs,
sig/kettle/dev/prism_utils.rbs,
sig/kettle/dev/release_cli.rbs,
sig/kettle/dev/exit_adapter.rbs,
sig/kettle/dev/changelog_cli.rbs,
sig/kettle/dev/input_adapter.rbs,
sig/kettle/dev/source_merger.rbs,
sig/kettle/dev/tasks/ci_task.rbs,
sig/kettle/dev/readme_backers.rbs,
sig/kettle/dev/gem_spec_reader.rbs,
sig/kettle/dev/pre_release_cli.rbs,
sig/kettle/dev/modular_gemfiles.rbs,
sig/kettle/dev/template_helpers.rbs,
sig/kettle/dev/tasks/install_task.rbs,
sig/kettle/dev/tasks/template_task.rbs,
sig/kettle/dev/appraisals_ast_merger.rbs,
sig/kettle/dev/open_collective_config.rbs

Defined Under Namespace

Modules: AppraisalsAstMerger, CIHelpers, CIMonitor, CommitMsg, ExitAdapter, InputAdapter, ModularGemfiles, OpenCollectiveConfig, PrismUtils, SourceMerger, Tasks, TemplateHelpers, Version, Versioning Classes: BumpCLI, CacheProgress, ChangelogCLI, ChangelogEntryAdder, DvcsCLI, Error, GemSpecReader, GhaShaPinsCLI, GitAdapter, GitCommitFooter, PreReleaseCLI, ReadmeBackers, ReleaseCLI, SetupCLI, VersionBump

Constant Summary collapse

DEBUGGING =

Whether debug logging is enabled for kettle-dev internals. Controlled by KETTLE_DEV_DEBUG=true.

Returns:

  • (Boolean)
ENV.fetch("KETTLE_DEV_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__)
VAR_HOME_PREFIX =
%r{\A/var/home(?=/|\z)}
VAR_HOME_TEXT =
%r{/var/home(?=/|\z)}
VERSION =

Traditional Constant Location

Returns:

  • (String)
Version::VERSION

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>)


161
162
163
# File 'lib/kettle/dev.rb', line 161

def defaults
  @defaults
end

Class Method Details

.debug_error(error, context = nil, backtrace: true) ⇒ 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.

Parameters:

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

    optional label, often method

  • backtrace (Boolean) (defaults to: true)

    whether to emit the rescued error backtrace



125
126
127
128
129
130
131
132
133
# File 'lib/kettle/dev.rb', line 125

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

  ctx = context ? context.to_s : "KETTLE-DEV-RESCUE"
  Kernel.warn("[#{ctx}] #{error.class}: #{error.message}")
  Kernel.warn(Array(error.backtrace).first(5).join("\n")) if backtrace && error.respond_to?(:backtrace) && error.backtrace
rescue
  # 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.

Parameters:

  • msg (String)


139
140
141
142
143
144
145
146
# File 'lib/kettle/dev.rb', line 139

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

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

.default_registered?(task_name) ⇒ Boolean

Returns:

  • (Boolean)


182
183
184
# File 'lib/kettle/dev.rb', line 182

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

.display_path(path) ⇒ Object



97
98
99
100
101
# File 'lib/kettle/dev.rb', line 97

def display_path(path)
  return path if path.nil?

  path.to_s.sub(VAR_HOME_PREFIX, "/home")
end

.display_text(text) ⇒ Object



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

def display_text(text)
  return text if text.nil?

  text.to_s.gsub(VAR_HOME_TEXT, "/home")
end

.install_tasksvoid

This method returns an undefined value.

Singleton methods



153
154
155
156
157
# File 'lib/kettle/dev.rb', line 153

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



167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/kettle/dev.rb', line 167

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

.safe_load_yaml(content) ⇒ Object



109
110
111
112
113
# File 'lib/kettle/dev.rb', line 109

def safe_load_yaml(content)
  YAML.safe_load(content, permitted_classes: [], aliases: false)
rescue ArgumentError
  YAML.safe_load(content, [], [], false)
end

.safe_load_yaml_file(path) ⇒ Object



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

def safe_load_yaml_file(path)
  safe_load_yaml(File.read(path))
end