diff options
Diffstat (limited to 'Library/Contributions/cmd/brew-unpack.rb')
| -rwxr-xr-x | Library/Contributions/cmd/brew-unpack.rb | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/Library/Contributions/cmd/brew-unpack.rb b/Library/Contributions/cmd/brew-unpack.rb deleted file mode 100755 index 4ff19b0e1..000000000 --- a/Library/Contributions/cmd/brew-unpack.rb +++ /dev/null @@ -1,100 +0,0 @@ -require 'formula' - -require 'stringio' -module ScriptDataReader - # This module contains a method for extracting the contents of DATA from a - # Ruby file other than the script containing the currently executing - # function. Many thanks to Glenn Jackman's Stackoverflow answer which - # provided this code: - # - # http://stackoverflow.com/questions/2156629/can-i-access-the-data-from-a-required-script-in-ruby/2157556#2157556 - def self.load(filename) - data = StringIO.new - File.open(filename) do |f| - begin - line = f.gets - end until line.nil? or line.match(/^__END__$/) - while line = f.gets - data << line - end - end - data.rewind - data - end -end - -module UnpackPatch - def patch - return unless ARGV.flag? "--patch" - - begin - old_verbose = $VERBOSE - $VERBOSE = nil - Object.const_set "DATA", ScriptDataReader.load(path) - ensure - $VERBOSE = old_verbose - end - - super - end -end - -module Homebrew extend self - def unpack_usage; <<-EOS.undent - Usage: brew unpack [-pg] [--destdir=path/to/extract/in] <formulae ...> - - Unpack formulae source code for inspection. - - Formulae archives will be extracted to subfolders inside the current working - directory or a directory specified by `--destdir`. If the `-p` option is - supplied, patches will also be downloaded and applied. If the `-g` option is - specified a git repository is created and all files added so that you can diff - changes. - EOS - end - - def unpack - abort unpack_usage if ARGV.empty? - - formulae = ARGV.formulae - raise FormulaUnspecifiedError if formulae.empty? - - if (dir = ARGV.value('destdir')).nil? - unpack_dir = Pathname.pwd - else - unpack_dir = Pathname.new(dir) - unpack_dir.mkpath unless unpack_dir.exist? - end - - raise "Cannot write to #{unpack_dir}" unless unpack_dir.writable_real? - - formulae.each do |f| - f.extend(UnpackPatch) - - # Create a nice name for the stage folder. - stage_dir = unpack_dir + [f.name, f.version].join('-') - - if stage_dir.exist? - raise "Destination #{stage_dir} already exists!" unless ARGV.force? - rm_rf stage_dir - end - - oh1 "Unpacking #{f.name} to: #{stage_dir}" - ENV['VERBOSE'] = '1' # show messages about tar - f.brew { cp_r getwd, stage_dir } - ENV['VERBOSE'] = nil - - if ARGV.switch? 'g' - ohai "Setting up git repository" - cd stage_dir - system "git", "init", "-q" - system "git", "add", "-A" - system "git", "commit", "-q", "-m", "brew-unpack" - end - end - end -end - -# Here is the actual code that gets run when `brew` loads this external -# command. -Homebrew.unpack |
