Class: Inquirex::Tools::Commands::CreateRelease

Inherits:
Dry::CLI::Command
  • Object
show all
Defined in:
lib/inquirex/tools/commands/create_release.rb

Overview

inquirex create-release — tags and publishes a GitHub release for every package in the family.

The orchestrator runs each package's own just release in that package's directory, so how a repository tags and writes its notes stays that repository's business. What this adds is the order, refusing to tag a dirty tree or a feature branch, and one command instead of six.

Separate from publish on purpose. Publishing is irreversible and authenticated; releasing is neither, and the two fail for entirely different reasons — a release that cannot find gh should not leave a half-published family behind it.

Instance Method Summary collapse

Instance Method Details

#call(**options) ⇒ void

This method returns an undefined value.

Safe to re-run: each package's recipe force-moves its tag and recreates its GitHub release, so a run that stopped halfway can be fixed and reissued rather than unpicked.

Parameters:

  • options (Hash)

    parsed CLI options



43
44
45
46
47
48
49
50
51
52
# File 'lib/inquirex/tools/commands/create_release.rb', line 43

def call(**options)
  ok = Inquirex::Tools::Releaser.new.call(
    dry_run: options.fetch(:dry_run, false),
    force:   options.fetch(:force, false)
  )
  exit(1) unless ok
rescue Inquirex::Tools::Error => e
  warn "ERROR: #{e.message}"
  exit 1
end