class Fastlane::Actions::EnsureNoDebugCodeAction

def self.authors

def self.authors
  ["KrauseFx"]
end

def self.available_options

def self.available_options
  [
    FastlaneCore::ConfigItem.new(key: :text,
                                 env_name: "FL_ENSURE_NO_DEBUG_CODE_TEXT",
                                 description: "The text that must not be in the code base"),
    FastlaneCore::ConfigItem.new(key: :path,
                                 env_name: "FL_ENSURE_NO_DEBUG_CODE_PATH",
                                 description: "The directory containing all the source files",
                                 default_value: ".",
                                 verify_block: proc do |value|
                                   raise "Couldn't find the folder at '#{File.absolute_path(value)}'".red unless File.directory?(value)
                                 end),
    FastlaneCore::ConfigItem.new(key: :extension,
                                 env_name: "FL_ENSURE_NO_DEBUG_CODE_EXTENSION",
                                 description: "The extension that should be searched for",
                                 optional: true,
                                 verify_block: proc do |value|
                                   value.delete!('.') if value.include? "."
                                 end)
  ]
end

def self.description

def self.description
  "Ensures the given text is nowhere in the code base"
end

def self.details

def self.details
  [
    "Makes sure the given text is nowhere in the code base. This can be used",
    "to check if there is any debug code still in your code base or if you have",
    "things like // TO DO or similar"
  ].join("\n")
end

def self.is_supported?(platform)

def self.is_supported?(platform)
  true
end

def self.output

def self.output
  []
end

def self.run(params)

def self.run(params)
  command = "grep -R '#{params[:text]}' '#{File.absolute_path(params[:path])}'"
  return command if Helper.is_test?
  Helper.log.info command.yellow
  results = `#{command}` # we don't use `sh` as the return code of grep is wrong for some reason
  # Example Output
  #   ./fastlane.gemspec:  spec.add_development_dependency 'my_word'
  #   ./Gemfile.lock:    my_word (0.10.1)
  found = []
  results.split("\n").each do |current_raw|
    current = current_raw.strip
    if params[:extension]
      if current.include? ".#{params[:extension]}:"
        found << current
      end
    else
      found << current
    end
  end
  raise "Found debug code '#{params[:text]}': \n\n#{found.join("\n")}" if found.count > 0
  Helper.log.info "No debug code found in code base 🐛"
end