34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # typed: strict | ||
|  | # frozen_string_literal: true | ||
|  | 
 | ||
|  | module WriteMkpathExtension | ||
|  |   extend T::Helpers | ||
|  | 
 | ||
|  |   requires_ancestor { Pathname } | ||
|  | 
 | ||
|  |   # Source for `sig`: https://github.com/sorbet/sorbet/blob/b4092efe0a4489c28aff7e1ead6ee8a0179dc8b3/rbi/stdlib/pathname.rbi#L1392-L1411 | ||
|  |   sig { | ||
|  |     params( | ||
|  |       content:           Object, | ||
|  |       offset:            Integer, | ||
|  |       external_encoding: T.any(String, Encoding), | ||
|  |       internal_encoding: T.any(String, Encoding), | ||
|  |       encoding:          T.any(String, Encoding), | ||
|  |       textmode:          BasicObject, | ||
|  |       binmode:           BasicObject, | ||
|  |       autoclose:         BasicObject, | ||
|  |       mode:              String, | ||
|  |       perm:              Integer, | ||
|  |     ).returns(Integer) | ||
|  |   } | ||
|  |   def write(content, offset = T.unsafe(nil), external_encoding: T.unsafe(nil), internal_encoding: T.unsafe(nil), | ||
|  |             encoding: T.unsafe(nil), textmode: T.unsafe(nil), binmode: T.unsafe(nil), autoclose: T.unsafe(nil), | ||
|  |             mode: T.unsafe(nil), perm: T.unsafe(nil)) | ||
|  |     raise "Will not overwrite #{self}" if exist? && !offset && !mode&.match?(/^a\+?$/) | ||
|  | 
 | ||
|  |     dirname.mkpath | ||
|  | 
 | ||
|  |     super | ||
|  |   end | ||
|  | end |