Sha256: 723aca17ab62d5217c7d1e99c5c7bb7be6bc598d824f8aca2e85ebf2a81a1667

Contents?: true

Size: 1.6 KB

Versions: 3

Compression:

Stored size: 1.6 KB

Contents

# frozen_string_literal: true

require "dry/inflector"
require "dry/files"
require "shellwords"

module Hanami
  module CLI
    module Commands
      module App
        module Generate
          # @since 2.1.0
          # @api private
          class Part < App::Command
            DEFAULT_SKIP_TESTS = false
            private_constant :DEFAULT_SKIP_TESTS

            argument :name, required: true, desc: "Part name"
            option :slice, required: false, desc: "Slice name"
            option \
              :skip_tests,
              required: false,
              type: :boolean,
              default: DEFAULT_SKIP_TESTS,
              desc: "Skip test generation"

            example [
              %(book               (MyApp::Views::Parts::Book)),
              %(book --slice=admin (Admin::Views::Parts::Book)),
            ]
            attr_reader :generator
            private :generator

            # @since 2.0.0
            # @api private
            def initialize(
              fs:, inflector:,
              generator: Generators::App::Part.new(fs: fs, inflector: inflector),
              **opts
            )
              super(fs: fs, inflector: inflector, **opts)
              @generator = generator
            end

            # @since 2.0.0
            # @api private
            def call(name:, slice: nil, skip_tests: DEFAULT_SKIP_TESTS, **) # rubocop:disable Lint/UnusedMethodArgument
              slice = inflector.underscore(Shellwords.shellescape(slice)) if slice

              generator.call(app.namespace, name, slice)
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hanami-cli-2.1.1 lib/hanami/cli/commands/app/generate/part.rb
hanami-cli-2.1.0 lib/hanami/cli/commands/app/generate/part.rb
hanami-cli-2.1.0.rc3 lib/hanami/cli/commands/app/generate/part.rb