Sha256: 4de1f8d96d262a4a39741ea7cad4c078f929f1f1ef6c79c421e014e12859a77b

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

module Shoe
  module Tasks

    # Defines <tt>`rake clean`</tt> to remove <tt>.gitignore</tt>d files and
    # directories.
    #
    # Uses something like <tt>`{git
    # clean}[http://www.kernel.org/pub/software/scm/git/docs/git-clean.html]
    # -fdX`</tt>, except preserves <tt>.bundle/</tt>.
    #
    # To enable, version your project with git[http://git-scm.com].
    #
    # To configure, edit your
    # <tt>{.gitignore}[http://www.kernel.org/pub/software/scm/git/docs/gitignore.html]</tt>.
    class Clean < Task
      def active?
        File.directory?('.git')
      end

      def define
        desc <<-END.gsub(/^ */, '')
          Remove ignored files.
          Configure via your .gitignore file. Uses something like `git clean -fdX`,
          except preserves .bundle/.
        END

        task :clean do
          rm_r ignored_files - preserved_files
        end
      end

      private

      def ignored_files
        `git ls-files -z --exclude-standard --ignored --others --directory`.split("\0")
      end

      def preserved_files
        %w( .bundle/ )
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shoe-0.8.0 lib/shoe/tasks/clean.rb
shoe-0.7.1 lib/shoe/tasks/clean.rb
shoe-0.7.0 lib/shoe/tasks/clean.rb