Module: GitStatistics::Utilities

Defined in:
lib/git_statistics/utilities.rb

Defined Under Namespace

Classes: OperatingSystem

Constant Summary collapse

COMMANDS =
{
  windows: -> { raise '`stat` is not supported on Windows' },
  mac: -> { '-f %m' }
}

Class Method Summary collapse

Class Method Details

.get_modified_time(file) ⇒ Object



18
19
20
21
# File 'lib/git_statistics/utilities.rb', line 18

def self.get_modified_time(file)
  flags = COMMANDS[os].call
  time_at("stat #{flags} #{file}")
end

.max_length_in_list(list, min_length = nil) ⇒ Object



5
6
7
8
9
10
# File 'lib/git_statistics/utilities.rb', line 5

def self.max_length_in_list(list, min_length = nil)
  list ||= []
  min_length = min_length.to_i
  list_max = list.map { |k, _| k.length }.max || 0
  list_max >= min_length ? list_max : min_length
end

.number_of_matching_files(directory, pattern) ⇒ Object



45
46
47
48
49
50
# File 'lib/git_statistics/utilities.rb', line 45

def self.number_of_matching_files(directory, pattern)
  Dir.entries(directory).grep(pattern).size
rescue SystemCallError
  Log.error "No such directory #{File.expand_path(directory)}"
  0
end

.osObject



41
42
43
# File 'lib/git_statistics/utilities.rb', line 41

def self.os
  OperatingSystem.determine(RbConfig::CONFIG['host_os'])
end

.time_at(cmd) ⇒ Object



37
38
39
# File 'lib/git_statistics/utilities.rb', line 37

def self.time_at(cmd)
  Time.at(`#{cmd}`.to_i)
end