28 lines
		
	
	
		
			645 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			645 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # frozen_string_literal: true | ||
|  | 
 | ||
|  | module Utils | ||
|  |   module Shebang | ||
|  |     module_function | ||
|  | 
 | ||
|  |     class RewriteInfo | ||
|  |       attr_reader :regex, :max_length, :replacement | ||
|  | 
 | ||
|  |       def initialize(regex, max_length, replacement) | ||
|  |         @regex = regex | ||
|  |         @max_length = max_length | ||
|  |         @replacement = replacement | ||
|  |       end | ||
|  |     end | ||
|  | 
 | ||
|  |     def rewrite_shebang(rewrite_info, *paths) | ||
|  |       paths.each do |f| | ||
|  |         f = Pathname(f) | ||
|  |         next unless f.file? | ||
|  |         next unless rewrite_info.regex.match?(f.read(rewrite_info.max_length)) | ||
|  | 
 | ||
|  |         Utils::Inreplace.inreplace f.to_s, rewrite_info.regex, "#!#{rewrite_info.replacement}" | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |