Sha256: a2f66172038100262d668baa307601f00e27dd12e81fdf10826b2beb32fee1c4

Contents?: true

Size: 1.93 KB

Versions: 186

Compression:

Stored size: 1.93 KB

Contents

# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and
# two rake tasks (:clean and :clobber).
#
# [:clean] Clean up the project by deleting scratch files and backup
#          files.  Add files to the CLEAN file list to have the :clean
#          target handle them.
#
# [:clobber] Clobber all generated and non-source files in a project.
#            The task depends on :clean, so all the clean files will
#            be deleted as well as files in the CLOBBER file list.
#            The intent of this task is to return a project to its
#            pristine, just unpacked state.

require 'rake'

# :stopdoc:

module Rake
  module Cleaner
    extend FileUtils

    module_function

    def cleanup_files(file_names)
      file_names.each do |file_name|
        cleanup(file_name)
      end
    end

    def cleanup(file_name, opts={})
      begin
        rm_r file_name, opts
      rescue StandardError => ex
        puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name)
      end
    end

    def file_already_gone?(file_name)
      return false if File.exist?(file_name)

      path = file_name
      prev = nil

      while path = File.dirname(path)
        return false if cant_be_deleted?(path)
        break if [prev, "."].include?(path)
        prev = path
      end
      true
    end
    private_class_method :file_already_gone?

    def cant_be_deleted?(path_name)
      File.exist?(path_name) &&
        (!File.readable?(path_name) || !File.executable?(path_name))
    end
    private_class_method :cant_be_deleted?
  end
end

CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"]
CLEAN.clear_exclude.exclude { |fn|
  fn.pathmap("%f").downcase == 'core' && File.directory?(fn)
}

desc "Remove any temporary products."
task :clean do
  Rake::Cleaner.cleanup_files(CLEAN)
end

CLOBBER = ::Rake::FileList.new

desc "Remove any generated files."
task :clobber => [:clean] do
  Rake::Cleaner.cleanup_files(CLOBBER)
end

Version data entries

186 entries across 172 versions & 54 rubygems

Version Path
hatena_bookmark_client_for_ruby-0.1.0 vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/clean.rb
pomodorokun-0.1.0 bundle/ruby/2.4.0/gems/rake-10.5.0/lib/rake/clean.rb
cspeezy_palindrome-0.3.0 path/ruby/2.6.0/gems/rake-10.5.0/lib/rake/clean.rb
cspeezy_palindrome-0.2.0 path/ruby/2.6.0/gems/rake-10.5.0/lib/rake/clean.rb
cspeezy_palindrome-0.1.0 path/ruby/2.6.0/gems/rake-10.5.0/lib/rake/clean.rb
blackjack_jp-0.1.3 vendor/bundle/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
blackjack_jp-0.1.2 vendor/bundle/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
blackjack_jp-0.1.1 vendor/bundle/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
blackjack_jp-0.1.0 vendor/bundle/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
steenfest_palindrome-0.1.2 ruby/2.5/gems/rake-10.5.0/lib/rake/clean.rb
steenfest_palindrome-0.1.1b ruby/2.5/gems/rake-10.5.0/lib/rake/clean.rb
xaiml-0.1.3 vendor/bundle/ruby/2.5.0/gems/rake-10.5.0/lib/rake/clean.rb
alimentos-alu0100945645-0.1.0 vendor/bundle/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
alimentos-alu0100945645-1.0.0 vendor/bundle/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
xaiml-0.1.2 vendor/bundle/ruby/2.5.0/gems/rake-10.5.0/lib/rake/clean.rb
nullifyable-0.1.0 vendor/bundle/gems/rake-10.5.0/lib/rake/clean.rb
dmurphy_palindrome-0.1.0 vendor/cache/ruby/2.3.0/gems/dmurphy_palindrome-0.1.0/vendor/cache/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
dmurphy_palindrome-0.1.0 vendor/cache/ruby/2.3.0/gems/rake-10.5.0/lib/rake/clean.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/config_gems_initialization_aim-0.1.1/vendor/bundle/ruby/2.5.0/gems/rake-10.5.0/lib/rake/clean.rb
config_gems_initialization_aim-0.1.4 vendor/bundle/ruby/2.5.0/gems/rake-10.5.0/lib/rake/clean.rb