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
 | 
