class PowerStencil::CommandProcessors::Delete

Public Instance Methods

execute() click to toggle source
# File lib/power_stencil/command_processors/delete.rb, line 11
def execute
  targets = targets_from_criteria analyse_extra_params, project.engine.root_universe
  targets.each do |target|
    begin
      # unless project.engine.entity *target.to_a, project.engine.root_universe
      #   puts_and_logs "Skipping '#{target.as_path}'. Entity not found.", check_verbose: false
      #   next
      # end
      puts_and_logs "Deleting entity '#{target.as_path}'", check_verbose: false

      msg = "Deleted entity '#{target.as_path}' (and potential dependencies)"
      msg << ' including templates.' if config[:'delete-files']
      msg << '.'
      project.track_action_with_git(msg) do
        if project.engine.delete_entity project.engine.root_universe,
                                        target.type,
                                        target.name,
                                        delete_files: config[:'delete-files']
          msg = "Deleted '#{target.as_path}'"
          msg << ' and template files.' if config[:'delete-files']
          puts_and_logs msg, check_verbose: false
        else
          puts_and_logs 'Cancelled by user input.', check_verbose: false
        end
      end
    rescue => e
      puts_and_logs "Failed to delete '#{target.as_path}' with message '#{e.message}'.", logs_as: :error, check_verbose: false
      logger.debug PowerStencil::Error.report_error(e)
    end
  end
end