| 
									
										
										
										
											2016-04-08 16:28:43 +02:00
										 |  |  | #:  * `unpack` [`--git`|`--patch`] [`--destdir=`<path>] <formulae>: | 
					
						
							|  |  |  | #:    Unpack the source files for <formulae> into subdirectories of the current | 
					
						
							|  |  |  | #:    working directory. If `--destdir=`<path> is given, the subdirectories will | 
					
						
							|  |  |  | #:    be created in the directory named by `<path>` instead. | 
					
						
							|  |  |  | #: | 
					
						
							|  |  |  | #:    If `--patch` is passed, patches for <formulae> will be applied to the | 
					
						
							|  |  |  | #:    unpacked source. | 
					
						
							|  |  |  | #: | 
					
						
							|  |  |  | #:    If `--git` is passed, a Git repository will be initalized in the unpacked | 
					
						
							|  |  |  | #:    source. This is useful for creating patches for the software. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-17 17:12:40 -05:00
										 |  |  | require "stringio" | 
					
						
							|  |  |  | require "formula" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   def unpack | 
					
						
							|  |  |  |     formulae = ARGV.formulae | 
					
						
							|  |  |  |     raise FormulaUnspecifiedError if formulae.empty? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if dir = ARGV.value("destdir") | 
					
						
							| 
									
										
										
										
											2015-03-25 22:22:51 -04:00
										 |  |  |       unpack_dir = Pathname.new(dir).expand_path | 
					
						
							| 
									
										
										
										
											2014-05-17 17:12:40 -05:00
										 |  |  |       unpack_dir.mkpath | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       unpack_dir = Pathname.pwd | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     raise "Cannot write to #{unpack_dir}" unless unpack_dir.writable_real? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     formulae.each do |f| | 
					
						
							|  |  |  |       stage_dir = unpack_dir.join("#{f.name}-#{f.version}") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if stage_dir.exist? | 
					
						
							|  |  |  |         raise "Destination #{stage_dir} already exists!" unless ARGV.force? | 
					
						
							|  |  |  |         rm_rf stage_dir | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-27 21:20:17 +08:00
										 |  |  |       oh1 "Unpacking #{f.full_name} to: #{stage_dir}" | 
					
						
							| 
									
										
										
										
											2014-05-17 17:12:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |       ENV["VERBOSE"] = "1" # show messages about tar | 
					
						
							| 
									
										
										
										
											2015-04-24 14:38:27 +09:00
										 |  |  |       f.brew do | 
					
						
							|  |  |  |         f.patch if ARGV.flag?("--patch") | 
					
						
							| 
									
										
										
										
											2016-09-17 15:32:44 +01:00
										 |  |  |         cp_r getwd, stage_dir, preserve: true | 
					
						
							| 
									
										
										
										
											2015-04-24 14:38:27 +09:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |       ENV["VERBOSE"] = nil | 
					
						
							| 
									
										
										
										
											2014-05-17 17:12:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-10 10:24:57 +01:00
										 |  |  |       next unless ARGV.git? | 
					
						
							|  |  |  |       ohai "Setting up git repository" | 
					
						
							|  |  |  |       cd stage_dir | 
					
						
							|  |  |  |       system "git", "init", "-q" | 
					
						
							|  |  |  |       system "git", "add", "-A" | 
					
						
							|  |  |  |       system "git", "commit", "-q", "-m", "brew-unpack" | 
					
						
							| 
									
										
										
										
											2014-05-17 17:12:40 -05:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |