Sha256: c0fac6214787352d821c9c1c1deae5ddc7f98cc5380c4b1df41e5249c5880ac8

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

module Fastlane
  class FastlaneFolder
    FOLDER_NAME = 'fastlane'

    # Path to the fastlane folder containing the Fastfile and other configuration files
    def self.path
      value ||= "./#{FOLDER_NAME}/" if File.directory?("./#{FOLDER_NAME}/")
      value ||= "./.#{FOLDER_NAME}/" if File.directory?("./.#{FOLDER_NAME}/") # hidden folder
      value ||= "./" if File.basename(Dir.getwd) == FOLDER_NAME && File.exist?('Fastfile') # inside the folder
      value ||= "./" if File.basename(Dir.getwd) == ".#{FOLDER_NAME}" && File.exist?('Fastfile') # inside the folder and hidden

      value = nil if Helper.is_test? # this is required, as the tests would use the ./fastlane folder otherwise
      return value
    end

    def self.fastfile_path
      return nil if path.nil?
      File.join(path, "Fastfile")
    end

    # Does a fastlane configuration already exist?
    def self.setup?
      return false unless path
      File.exist?(self.fastfile_path)
    end

    def self.create_folder!(path = nil)
      path = File.join(path || '.', FOLDER_NAME)
      FileUtils.mkdir_p(path)
      UI.success "Created new folder '#{path}'."
    end

    # Returns an array of symbols for the available lanes for the Fastfile
    # This doesn't actually use the Fastfile parser, but only
    # the available lanes. This way it's much faster
    # Use this only if performance is :key:
    def self.available_lanes
      return [] if fastfile_path.nil?
      output = `cat #{fastfile_path.shellescape} | grep \"^\s*lane \:\" | awk -F ':' '{print $2}' | awk -F ' ' '{print $1}'`
      return output.strip.split(" ").collect(&:to_sym)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fastlane-1.86.1 lib/fastlane/fastlane_folder.rb