Sha256: 0dd526a6c56a930f987fd5277fab619d6ab3153fcfbad729ce3a6e14ab2352b2

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

module RailsAppGenerator
  #  Build options for RailsAppGenerator::Starter
  class BuildOptions
    attr_reader :options

    def initialize(opts)
      # @opts = opts
      @options = default_options
      @options.merge!(opts)
    end

    class << self
      def registered_options
        @registered_options ||= []
      end

      def registered_options_lookup
        @registered_options_lookup ||= {}
      end

      def register_option(name, **args)
        return if registered_options_lookup.key?(name)

        option = BuildOption.new(**{ name: name }.merge(args))

        registered_options_lookup[name] = option
        registered_options << option
      end

      def reset
        @registered_options = nil
        @registered_options_lookup = nil
      end
    end

    def cmd_line_options
      self.class.registered_options.map do |option|
        mapper = option.mapper
        value = options[option.name]
        mapper.map(option.name, value)
      end.reject(&:blank?)
    end

    private

    def default_options
      self.class.registered_options.to_h { |option| [option.name, option.default] }
    end
  end

  # opts = [
  #   "--skip-namespace",
  #   "--skip-collision-check",
  #   "--skip-git",
  #   "--skip-keeps",
  #   "--skip-action-mailer",
  #   "--skip-action-mailbox",
  #   "--skip-action-text",
  #   "--skip-active-record",
  #   "--skip-active-job",
  #   "--skip-active-storage",
  #   "--skip-action-cable",
  #   "--skip-asset-pipeline",
  #   "--skip-javascript",
  #   "--skip-hotwire",
  #   "--skip-jbuilder",
  #   "--skip-test",
  #   "--skip-system-test",
  #   "--skip-bootsnap",
  #   "--skip-bundle"
  # ]

  # opts = [
  #   "--skip-git",
  #   "--skip-test",
  #   "--skip-bundle"
  # ]
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_app_generator-0.0.3 lib/rails_app_generator/options/build_options.rb