106 lines
2.1 KiB
Ruby
106 lines
2.1 KiB
Ruby
# typed: strict
|
|
# frozen_string_literal: true
|
|
|
|
require "context"
|
|
|
|
module ObserverPathnameExtension
|
|
extend T::Helpers
|
|
|
|
requires_ancestor { Pathname }
|
|
|
|
class << self
|
|
include Context
|
|
|
|
sig { returns(Integer) }
|
|
def n
|
|
@n ||= 0
|
|
end
|
|
|
|
sig { params(n: Integer).void }
|
|
attr_writer :n
|
|
|
|
sig { returns(Integer) }
|
|
def d
|
|
@d ||= 0
|
|
end
|
|
|
|
sig { params(d: Integer).void }
|
|
attr_writer :d
|
|
|
|
sig { void }
|
|
def reset_counts!
|
|
@n = T.let(0, T.nilable(Integer))
|
|
@d = T.let(0, T.nilable(Integer))
|
|
@put_verbose_trimmed_warning = T.let(false, T.nilable(T::Boolean))
|
|
end
|
|
|
|
sig { returns(Integer) }
|
|
def total
|
|
n + d
|
|
end
|
|
|
|
sig { returns([Integer, Integer]) }
|
|
def counts
|
|
[n, d]
|
|
end
|
|
|
|
MAXIMUM_VERBOSE_OUTPUT = 100
|
|
private_constant :MAXIMUM_VERBOSE_OUTPUT
|
|
|
|
sig { returns(T::Boolean) }
|
|
def verbose?
|
|
return super unless ENV["CI"]
|
|
return false unless super
|
|
|
|
if total < MAXIMUM_VERBOSE_OUTPUT
|
|
true
|
|
else
|
|
unless @put_verbose_trimmed_warning
|
|
puts "Only the first #{MAXIMUM_VERBOSE_OUTPUT} operations were output."
|
|
@put_verbose_trimmed_warning = true
|
|
end
|
|
false
|
|
end
|
|
end
|
|
end
|
|
|
|
sig { void }
|
|
def unlink
|
|
super
|
|
puts "rm #{self}" if ObserverPathnameExtension.verbose?
|
|
ObserverPathnameExtension.n += 1
|
|
end
|
|
|
|
sig { void }
|
|
def mkpath
|
|
super
|
|
puts "mkdir -p #{self}" if ObserverPathnameExtension.verbose?
|
|
end
|
|
|
|
sig { void }
|
|
def rmdir
|
|
super
|
|
puts "rmdir #{self}" if ObserverPathnameExtension.verbose?
|
|
ObserverPathnameExtension.d += 1
|
|
end
|
|
|
|
sig { params(src: Pathname).void }
|
|
def make_relative_symlink(src)
|
|
super
|
|
puts "ln -s #{src.relative_path_from(dirname)} #{basename}" if ObserverPathnameExtension.verbose?
|
|
ObserverPathnameExtension.n += 1
|
|
end
|
|
|
|
sig { void }
|
|
def install_info
|
|
super
|
|
puts "info #{self}" if ObserverPathnameExtension.verbose?
|
|
end
|
|
|
|
sig { void }
|
|
def uninstall_info
|
|
super
|
|
puts "uninfo #{self}" if ObserverPathnameExtension.verbose?
|
|
end
|
|
end
|