Class: CreateGithubRelease::Project

Inherits:
Object
  • Object
show all
Includes:
BacktickDebug
Defined in:
lib/create_github_release/project.rb

Overview

Captures the options for this script

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from BacktickDebug

#`

Constructor Details

#initialize(options) {|self| ... } ⇒ Project

Initialize a new Project

Project attributes are set using one of these methods:

  1. The attribute is explicitly set using an attribute writer
  2. The attribute is set using the options object
  3. The attribute is set using the default value or running some command

Method 1 takes precedence, then method 2, then method 3.

The recommended way to set the attributes is to use method 2 to override values and otherwise method 3 to use the default value. Method 1 is only recommended for testing or if there is no other way to accomplish what you need. Method 1 should ONLY be used in the block passed to the initializer.

Examples:

calling .new without a block

options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'minor' }
project = CreateGithubRelease::Project.new(options)
options.release_type = 'minor'

calling .new with a block

options = CreateGithubRelease::CommandLine::Options.new { |o| o.release_type = 'minor' }
project = CreateGithubRelease::Project.new(options) do |p|
  p.release_type = 'major'
end
options.release_type = 'major'

Yields:

  • (self)

    an initialization block

Yield Parameters:

Yield Returns:

  • (void)

    the return value is ignored



46
47
48
49
50
51
# File 'lib/create_github_release/project.rb', line 46

def initialize(options)
  @options = options
  yield self if block_given?

  setup_first_release if release_type == 'first'
end

Instance Attribute Details

#changelog_pathString

The path relative to the project root where the changelog is located

Examples:

By default, this value is 'CHANGELOG.md'

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.changelog_path #=> 'CHANGELOG.md'

It can also be set in the options

options = CreateGithubRelease::CommandLine::Options.new(
  release_type: 'major', changelog_path: 'docs/CHANGES.txt'
)
project = CreateGithubRelease::Project.new(options)
project.remote_repository = 'docs/CHANGES.txt'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.changelog_path = 'docs/CHANGES.txt'
project.remote_repository = 'docs/CHANGES.txt'


557
558
559
# File 'lib/create_github_release/project.rb', line 557

def changelog_path
  @changelog_path ||= options.changelog_path || 'CHANGELOG.md'
end

#changesArray<CreateGithubRelease>

An array containing the changes since the last_release_tag

Calls git log HEAD <next_release_tag> to list the changes.

Examples:

By default, uses git log

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
pp project.changes
[
  #<CreateGithubRelease::Change:0x00000001084b92f0 @sha="24bdd02", @subject="Foo feature">,
  #<CreateGithubRelease::Change:0x00000001084b93e0 @sha="d75e1e9", @subject="Bar feature">
]

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.changes = 'All the changes'
project.changes #=> 'All the changes'


586
587
588
589
590
591
592
593
594
595
596
# File 'lib/create_github_release/project.rb', line 586

def changes
  @changes ||= begin
    tip = "'HEAD'"
    base = first_release? ? '' : "'^#{last_release_tag}' "
    command = "git log #{tip} #{base}--oneline --format='format:%h\t%s'"
    git_log = `#{command}`
    raise "Could not determine changes since #{last_release_tag}" unless $CHILD_STATUS.success?

    git_log.split("\n").map { |l| ::CreateGithubRelease::Change.new(*l.split("\t")) }
  end
end

#default_branchString

The default branch of the remote repository

This is the default branch as reported by the HEAD branch returned by git remote show #{remote}.

Uses the value of remote to determine the remote repository to query.

Examples:

By default, default_branch is based on git remote show

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
options.default_branch # => 'main'

default_branch can be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.default_branch = 'master'
project.default_branch #=> 'master'

Raises:

  • (RuntimeError)

    if the git command fails



102
103
104
105
106
107
108
109
# File 'lib/create_github_release/project.rb', line 102

def default_branch
  @default_branch ||= options.default_branch || begin
    output = `git remote show '#{remote}'`
    raise "Could not determine default branch for remote '#{remote}'" unless $CHILD_STATUS.success?

    output.match(/HEAD branch: (.*?)$/)[1]
  end
end

#first_commitString

The SHA of the oldest commit that is an ancestor of HEAD

Examples:

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.first_commit? #=> '1234567'


853
854
855
856
857
858
859
860
861
# File 'lib/create_github_release/project.rb', line 853

def first_commit
  @first_commit ||= begin
    command = "git log 'HEAD' --oneline --format='format:%h'"
    git_log = `#{command}`
    raise "Could not list changes from first commit up to #{last_release_tag}" unless $CHILD_STATUS.success?

    git_log.split("\n").last.chomp
  end
end

#last_release_changelogBoolean

true if release_type is 'first' otherwise false

Examples:

Returns true if release_type is 'first'

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'first')
project = CreateGithubRelease::Project.new(options)
project.first_release? #=> true

Returnss false if release_type is not 'first'

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.first_release? #=> false


669
670
671
672
673
674
675
676
677
# File 'lib/create_github_release/project.rb', line 669

def last_release_changelog
  @last_release_changelog ||= begin
    File.read(changelog_path)
  rescue Errno::ENOENT
    ''
  rescue StandardError
    raise 'Could not read the changelog file'
  end
end

#last_release_tagString

The tag to used for the last release

Uses the value of last_release_version to determine the tag name.

Examples:

By default, last_release_tag is based on last_release_version

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.last_release_version = '0.0.1'
project.last_relase_tag #=> 'v0.0.1'

last_release_tag can be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.last_release_tag = 'v0.0.1'
project.last_relase_tag #=> 'v0.0.1'


240
241
242
# File 'lib/create_github_release/project.rb', line 240

def last_release_tag
  @last_release_tag ||= (first_release? ? '' : "v#{last_release_version}")
end

#last_release_versionString

The version of the last release

Examples:

By default, last_release_version is based on the value returned by semverify current

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.last_release_version #=> '0.0.1'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.last_release_version = '0.0.1
project.last_release_version #=> '0.0.1'

Raises:

  • (RuntimeError)

    if the semverify command fails



265
266
267
# File 'lib/create_github_release/project.rb', line 265

def last_release_version
  @last_release_version ||= options.last_release_version || current_version
end

#next_release_changelogString

The changelog of the next release as a string

This is the result of inserting next_release_description into last_release_changelog.

Examples:

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options) do |p|
  p.last_release_changelog = "    # Project Changelog\n\n    ## v0.1.0 (2021-11-07)\n\n    * e718690 Release v0.1.0 (#3)\n  CHANGELOG\n  p.next_release_description = <<~next_release_description\n    ## v1.0.0 (2022-11-07)\n\n    [Full Changelog](http://github.com/org/repo/compare/v0.1.0...v1.0.0)\n\n    * e718690 Release v1.0.0 (#3)\n    * ab598f3 Add the FizzBuzz Feature (#2)\n  next_release_description\nend\nputs project.next_release_changelog\n"


711
712
713
714
# File 'lib/create_github_release/project.rb', line 711

def next_release_changelog
  @next_release_changelog ||=
    CreateGithubRelease::Changelog.new(last_release_changelog, next_release_description).to_s
end

#next_release_dateDate

The date next_release_tag was created

If the next_release_tag does not exist, Date.today is returned.

Examples:

By default, next_release_date is based on next_release_tag

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_tag = 'v1.0.0'
project.next_release_date #=> #<Date: 2023-02-01 ((2459189j,0s,0n),+0s,2299161j)>

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_date = Date.new(2023, 2, 1)
project.next_release_date #=> #<Date: 2023-02-01 ((2459189j,0s,0n),+0s,2299161j)>

Raises:

  • (RuntimeError)

    if the git command fails



161
162
163
164
165
166
167
168
169
170
171
# File 'lib/create_github_release/project.rb', line 161

def next_release_date
  @next_release_date ||=
    if tag_exist?(next_release_tag)
      date = `git show --format=format:%aI --quiet "#{next_release_tag}"`
      raise "Could not determine date for tag '#{next_release_tag}'" unless $CHILD_STATUS.success?

      Date.parse(date.chomp)
    else
      Date.today
    end
end

#next_release_descriptionString

The formatted release description

Examples:

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options) do |p|
  p.remote_url = URI.parse('https://github.com/username/repo')
  p.last_release_tag = 'v0.1.0'
  p.next_release_tag = 'v1.0.0'
  p.next_release_date = Date.new(2022, 11, 7)
  p.changes = [
    CreateGithubRelease::Change.new('e718690', 'Release v1.0.0 (#3)'),
    CreateGithubRelease::Change.new('ab598f3', 'Fix Rubocop offenses (#2)')
  ]
end
puts project.next_release_description
## v1.0.0 (2022-11-07)

[Full Changelog](https://github.com/username/repo/compare/v0.1.0...v1.0.0

* e718690 Release v1.0.0 (#3)
* ab598f3 Fix Rubocop offenses (#2)


626
627
628
629
630
631
632
633
634
635
636
637
638
639
# File 'lib/create_github_release/project.rb', line 626

def next_release_description
  @next_release_description ||= begin
    header = first_release? ? 'Changes:' : "Changes since #{last_release_tag}:"
    "      ## \#{next_release_tag} (\#{next_release_date.strftime('%Y-%m-%d')})\n\n      [Full Changelog](\#{release_log_url})\n\n      \#{header}\n\n      \#{list_of_changes}\n    DESCRIPTION\n  end\nend\n"

#next_release_tagString

The tag to use for the next release

Uses the value of next_release_version to determine the tag name.

Examples:

By default, next_release_tag is based on next_release_version

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_version = '1.0.0'
project.next_relase_tag #=> 'v1.0.0'

next_tag can be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_tag = 'v1.0.0'
project.next_relase_tag #=> 'v1.0.0'


133
134
135
# File 'lib/create_github_release/project.rb', line 133

def next_release_tag
  @next_release_tag ||= "v#{next_release_version}"
end

#next_release_versionString

The version of the next release

Examples:

By default, next_release_version is based on the value returned by semverify <release_type> --dry-run

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_version #=> '1.0.0'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_version = '1.0.0
project.next_release_version #=> '1.0.0'

Raises:

  • (RuntimeError)

    if the semverify command fails



214
215
216
# File 'lib/create_github_release/project.rb', line 214

def next_release_version
  @next_release_version ||= options.next_release_version || next_version
end

#optionsCreateGithubRelease::CommandLine::Options (readonly)

The command line options used to initialize this project

Examples:

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.options == options #=> true


64
65
66
# File 'lib/create_github_release/project.rb', line 64

def options
  @options
end

#preBoolean

Set to true if a pre-release is be created

Examples:

By default, this value comes from the options object

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major', pre: true, pre_type: 'alpha')
project = CreateGithubRelease::Project.new(options)
project.pre #=> 'true'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.pre = true
project.pre #=> true


373
374
375
# File 'lib/create_github_release/project.rb', line 373

def pre
  @pre ||= options.pre
end

#pre_typeString

Set to the pre-release type to create. For example, "alpha", "beta", "pre", etc

Examples:

By default, this value comes from the options object

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major', pre: true, pre_type: 'alpha')
project = CreateGithubRelease::Project.new(options)
project.pre_type #=> 'alpha'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.pre = true
project.pre_type = 'alpha'
project.pre_type #=> 'alpha'


397
398
399
# File 'lib/create_github_release/project.rb', line 397

def pre_type
  @pre_type ||= options.pre_type
end

#quietBoolean Also known as: quiet?

If true supresses all output

Examples:

By default, this value is based on the quiet option

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major', quiet: true)
project = CreateGithubRelease::Project.new(options)
project.quiet? #=> true

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.quiet = true
project.quiet? #=> true


810
811
812
# File 'lib/create_github_release/project.rb', line 810

def quiet
  @quiet ||= options.quiet || false
end

#release_branchString

The name of the release branch being created

Examples:

By default, release_branch is based on the value returned by next_release_tag

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_tag = 'v1.0.0'
project.release_branch #=> 'release-v1.0.0'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.next_release_branch = 'release-v1.0.0'
project.next_release_branch #=> 'release-v1.0.0'

Raises:

  • (RuntimeError)

    if the semverify command fails



291
292
293
# File 'lib/create_github_release/project.rb', line 291

def release_branch
  @release_branch ||= options.release_branch || "release-#{next_release_tag}"
end

#release_log_urlURI

The URL of the page containing a list of the changes in the release

Examples:

By default, release_log_url is based on remote_url, last_release_tag, and next_release_tag

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_url = URI.parse('https://github.com/org/repo')
project.last_release_tag = 'v0.0.1'
project.next_release_tag = 'v1.0.0'
project.release_log_url #=> #<URI::HTTPS https://github.com/org/repo/compare/v0.0.1..v1.0.0>

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.release_log_url = URI.parse('https://github.com/org/repo/compare/v0.0.1..v1.0.0')
project.release_log_url #=> #<URI::HTTPS https://github.com/org/repo/compare/v0.0.1..v1.0.0>

Raises:

  • (RuntimeError)

    if the semverify command fails



319
320
321
322
323
324
325
# File 'lib/create_github_release/project.rb', line 319

def release_log_url
  @release_log_url ||= begin
    from = first_release? ? first_commit : last_release_tag
    to = next_release_tag
    URI.parse("#{remote_url}/compare/#{from}..#{to}")
  end
end

#release_typeString

Note:

this must be one of the values accepted by the semverify command

The type of the release being created (e.g. 'major', 'minor', 'patch')

Examples:

By default, this value comes from the options object

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.release_type #=> 'major'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.release_type = 'patch'
project.release_type #=> 'patch'

Raises:

  • (ArgumentError)

    if a release type was not provided



350
351
352
# File 'lib/create_github_release/project.rb', line 350

def release_type
  @release_type ||= options.release_type || raise(ArgumentError, 'release_type is required')
end

#release_urlURI::Generic

The URL of the page containing a list of the changes in the release

Examples:

By default, release_url is based on remote_url and next_release_tag

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_url = URI.parse('https://github.com/org/repo')
project.next_release_tag = 'v1.0.0'
project.release_url #=> #<URI::HTTPS https://github.com/org/repo/releases/tag/v1.0.0>

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.release_url = URI.parse('https://github.com/org/repo/releases/tag/v1.0.0')
project.release_url #=> #<URI::HTTPS https://github.com/org/repo/releases/tag/v1.0.0>


422
423
424
# File 'lib/create_github_release/project.rb', line 422

def release_url
  @release_url ||= URI.parse("#{remote_url}/releases/tag/#{next_release_tag}")
end

#remoteString

The git remote used to determine the repository url

Examples:

By default, 'origin' is used

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote #=> 'origin'

It can also be set in the options

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major', remote: 'upstream')
project = CreateGithubRelease::Project.new(options)
project.remote #=> 'upstream'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote = 'upstream'
project.remote #=> 'upstream'


450
451
452
# File 'lib/create_github_release/project.rb', line 450

def remote
  @remote ||= options.remote || 'origin'
end

#remote_base_urlURI::Generic

The base part of the remote url (e.g. 'https://github.com/')

Examples:

By default, this value is based on remote_url

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_url = URI.parse('https://github.com/org/repo')
project.remote #=> #<URI::HTTPS https://github.com/>

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_base_url = URI.parse('https://github.com/')
project.remote_base_url #=> #<URI::HTTPS https://github.com/>


474
475
476
# File 'lib/create_github_release/project.rb', line 474

def remote_base_url
  @remote_base_url ||= URI.parse(remote_url.to_s[0..-remote_url.path.length])
end

#remote_repositoryString

The git remote owner and repository name (e.g. 'org/repo')

Examples:

By default, this value is based on remote_url

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_url = URI.parse('htps://github.com/org/repo')
project.remote_repository #=> 'org/repo'

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_repository = 'org/repo'


497
498
499
# File 'lib/create_github_release/project.rb', line 497

def remote_repository
  @remote_repository ||= remote_url.path.sub(%r{^/}, '').sub(/\.git$/, '')
end

#remote_urlURI

The URL of the git remote repository (e.g. 'https://github.com/org/repo')

Examples:

By default, this value is based on remote and the git remote get-url command

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote #=> #<URI::HTTPS https://github.com/org/repo>

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.remote_url = URI.parse('https://github.com/org/repo')
project.remote_url #=> #<URI::HTTPS https://github.com/org/repo>


520
521
522
523
524
525
526
527
528
529
# File 'lib/create_github_release/project.rb', line 520

def remote_url
  @remote_url ||= begin
    remote_url_string = `git remote get-url '#{remote}'`
    raise "Could not determine remote url for remote '#{remote}'" unless $CHILD_STATUS.success?

    remote_url_string = remote_url_string.chomp
    remote_url_string = remote_url_string[0..-5] if remote_url_string.end_with?('.git')
    URI.parse(remote_url_string)
  end
end

#verboseBoolean Also known as: verbose?

If true enables verbose output

Examples:

By default, this value is based on the verbose option

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major', verbose: true)
project = CreateGithubRelease::Project.new(options)
project.verbose? #=> true

It can also be set explicitly

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.verbose = true
project.verbose? #=> true


785
786
787
# File 'lib/create_github_release/project.rb', line 785

def verbose
  @verbose ||= options.verbose || false
end

Instance Method Details

#first_releaseBoolean Also known as: first_release?

true if release_type is 'first' otherwise false

Examples:

Returns true if release_type is 'first'

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'first')
project = CreateGithubRelease::Project.new(options)
project.first_release? #=> true

Returnss false if release_type is not 'first'

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.first_release? #=> false


834
835
836
# File 'lib/create_github_release/project.rb', line 834

def first_release
  @first_release ||= release_type == 'first'
end

#tag_exist?(tag) ⇒ Boolean

true if the given tag exists in the local repository

Examples:

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
project.tag_exist?('v1.0.0') #=> false


186
187
188
189
190
191
# File 'lib/create_github_release/project.rb', line 186

def tag_exist?(tag)
  tags = `git tag --list "#{tag}"`.chomp
  raise 'Could not list tags' unless $CHILD_STATUS.success?

  !tags.empty?
end

#to_sString

Show the project details as a string

Examples:

options = CreateGithubRelease::CommandLine::Options.new(release_type: 'major')
project = CreateGithubRelease::Project.new(options)
puts projects.to_s
default_branch: main
next_release_tag: v1.0.0
next_release_date: 2023-02-01
next_release_version: 1.0.0
last_release_tag: v0.1.0
last_release_version: 0.1.0
release_branch: release-v1.0.0
release_log_url: https://github.com/org/repo/compare/v0.1.0..v1.0.0
release_type: major
release_url: https://github.com/org/repo/releases/tag/v1.0.0
remote: origin
remote_base_url: https://github.com/
remote_repository: org/repo
remote_url: https://github.com/org/repo
changelog_path: CHANGELOG.md
verbose?: false
quiet?: false


744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
# File 'lib/create_github_release/project.rb', line 744

def to_s
  "    first_release: \#{first_release}\n    default_branch: \#{default_branch}\n    next_release_tag: \#{next_release_tag}\n    next_release_date: \#{next_release_date}\n    next_release_version: \#{next_release_version}\n    last_release_tag: \#{last_release_tag}\n    last_release_version: \#{last_release_version}\n    release_branch: \#{release_branch}\n    release_log_url: \#{release_log_url}\n    release_type: \#{release_type}\n    release_url: \#{release_url}\n    remote: \#{remote}\n    remote_base_url: \#{remote_base_url}\n    remote_repository: \#{remote_repository}\n    remote_url: \#{remote_url}\n    verbose?: \#{verbose?}\n    quiet?: \#{quiet?}\n  OUTPUT\nend\n"