Class: Develoz::Options

Inherits:
Object
  • Object
show all
Defined in:
lib/develoz/options.rb

Constant Summary collapse

OPT_IN_FLAGS =

Opt-in feature flags (default false)

%i[api auth pwa push active_resource admin ui kamal docker db_backup].freeze
OPT_OUT_FLAGS =

Opt-out flags (default false → feature is included unless skipped)

%i[skip_pagy].freeze
VALID_KEYS =

All valid flag keys

(OPT_IN_FLAGS + OPT_OUT_FLAGS + %i[app_name ruby_version rails_version]).freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Options

Returns a new instance of Options.

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/develoz/options.rb', line 16

def initialize(options = {})
  unknown_keys = options.keys - VALID_KEYS
  raise ArgumentError, "Unknown option(s): #{unknown_keys.join(', ')}" if unknown_keys.any?

  @app_name = options[:app_name]
  @ruby_version = options[:ruby_version]
  @rails_version = options[:rails_version]

  # Initialize opt-in flags (default false)
  OPT_IN_FLAGS.each do |flag|
    instance_variable_set("@#{flag}", options[flag] || false)
  end

  # Initialize opt-out flags (default false)
  OPT_OUT_FLAGS.each do |flag|
    instance_variable_set("@#{flag}", options[flag] || false)
  end
end

Instance Attribute Details

#app_nameObject (readonly)

Returns the value of attribute app_name.



14
15
16
# File 'lib/develoz/options.rb', line 14

def app_name
  @app_name
end

#rails_versionObject (readonly)

Returns the value of attribute rails_version.



14
15
16
# File 'lib/develoz/options.rb', line 14

def rails_version
  @rails_version
end

#ruby_versionObject (readonly)

Returns the value of attribute ruby_version.



14
15
16
# File 'lib/develoz/options.rb', line 14

def ruby_version
  @ruby_version
end

Instance Method Details

#to_hObject



45
46
47
48
49
50
51
52
53
# File 'lib/develoz/options.rb', line 45

def to_h
  {
    app_name: @app_name,
    ruby_version: @ruby_version,
    rails_version: @rails_version,
    **OPT_IN_FLAGS.index_with { |flag| instance_variable_get("@#{flag}") },
    **OPT_OUT_FLAGS.index_with { |flag| instance_variable_get("@#{flag}") }
  }
end