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
|