Sha256: 5f797f6ac21da1379d8c1667c553b005b39887e9b4105e64037a70df2e829705

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

class CmdletDirector < KDirector::Directors::BaseDirector
  defaults(builder_type: CmdletBuilder, on_exist: :write, on_action: :execute)

  def initialize(k_builder, builder, **opts)
    super(k_builder, builder, **opts)

    builder.category_key = opts[:category] || :unknown
  end

  def cmdlet(**opts, &block)
    cmdlet = CmdletChild.new(self, **opts)
    cmdlet.instance_eval(&block) if block_given?

    self
  end

  def categories
    data_access.category_director.categories
  end

  def generate
    build_cmdlets
    save_cmdlets
    run_cop

    self
  end

  def build_cmdlets
    builder.cmdlets.each do |cmdlet|
      cmdlet_file = "#{cmdlet[:category]}/#{cmdlet[:name]}.rb"
      cmdlet_spec_file = "#{cmdlet[:category]}/#{cmdlet[:name]}_spec.rb"

      cd(:lib)
      add(cmdlet_file, template_file: 'cmdlet.rb', cmdlet: cmdlet)

      cd(:spec)
      add(cmdlet_spec_file, template_file: 'cmdlet_spec.rb', cmdlet: cmdlet, on_exist: :skip)
    end

    self
  end

  def run_cop
    Dir.chdir(k_builder.target_folders.get(:app)) do
      k_builder.run_cop('**/*.rb', fix_unsafe: true)
    end

    self
  end

  def save_cmdlets
    cd(:builder_data)
    add("cmdlets/#{builder.category_key}.json", content: builder.to_json)

    self
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cmdlet-0.2.1 .builders/director/cmdlet_director.rb
cmdlet-0.2.0 .builders/director/cmdlet_director.rb
cmdlet-0.1.2 .builders/director/cmdlet_director.rb