Class: Semverve::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/semverve/generator.rb

Overview

Generates new Ruby version files from Semverve configuration.

Constant Summary collapse

DEFAULT_VERSION =

Default version used when a version argument is not provided.

Returns:

  • (String)
"0.1.0"

Instance Method Summary collapse

Constructor Details

#initialize(configuration, version: nil, format: nil, force: false) ⇒ Semverve::Generator

Initializes a version-file generator.

Parameters:

  • configuration (Semverve::ResolvedConfiguration)
  • version (String, nil) (defaults to: nil)
  • format (String, Symbol, nil) (defaults to: nil)
  • force (Boolean) (defaults to: false)


28
29
30
31
32
33
# File 'lib/semverve/generator.rb', line 28

def initialize(configuration, version: nil, format: nil, force: false)
  @configuration = configuration
  @version = version
  @format = format
  @force = force
end

Instance Method Details

#generateString

Generates the configured version file.

Returns:

  • (String)


39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/semverve/generator.rb', line 39

def generate
  version = SemanticVersion.parse(requested_version)
  format = Formats.fetch(requested_format)
  path = configuration.absolute_version_file

  if File.exist?(path) && !force?
    raise Error, "Version file already exists at #{path}. Run rake 'semverve:generate[force]' to overwrite it."
  end

  FileUtils.mkdir_p(File.dirname(path))
  File.write(path, format.generate(version, module_name: configuration.module_name))

  path
end