Sha256: fe6d0dc43a6e5fc63b881112e8300f87995c14c1148d062670b7378117779a58

Contents?: true

Size: 1.38 KB

Versions: 26

Compression:

Stored size: 1.38 KB

Contents

class Terraspace::Cloud::Upload
  class Tidy < Base
    def cleanup
      removals.each do |removal|
        removal = removal.sub(%r{^/},'') # remove leading slash
        path = "#{artifacts_path}/#{removal}"
        rm_rf(path)
      end
    end

    def removals
      removals = always_removals
      removals += get_removals("#{artifacts_path}/.gitignore")
      removals = removals.reject do |p|
        tskeep.find do |keep|
          p.include?(keep)
        end
      end
      removals.uniq
    end

    def get_removals(file)
      path = file
      return [] unless File.exist?(path)

      removal = File.read(path).split("\n")
      removal.map {|i| i.strip}.reject {|i| i =~ /^#/ || i.empty?}
    end

    # We clean out ignored files pretty aggressively. So provide
    # a way for users to keep files from being cleaned out.
    def tskeep
      always_keep = %w[]
      path = "#{artifacts_path}/.tskeep"
      return always_keep unless File.exist?(path)

      keep = IO.readlines(path)
      keep = keep.map {|i| i.strip}.reject { |i| i =~ /^#/ || i.empty? }
      (always_keep + keep).uniq
    end

    def rm_rf(path)
      exists = File.exist?("#{path}/.gitkeep") || File.exist?("#{path}/.keep")
      return if exists

      FileUtils.rm_rf(path)
    end

    # These directories will be removed regardless of dir level
    def always_removals
      %w[.git spec tmp]
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.16 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.15 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.14 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.13 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.12 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.11 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.10 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.9 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.8 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.7 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.6 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.5 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.4 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.3 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.2 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.1 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.2.0 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.1.7 lib/terraspace/cloud/upload/tidy.rb
terraspace-2.1.6 lib/terraspace/cloud/upload/tidy.rb