module MetricFu::Io::FileSystem
TODO: Move this module / functionality elsewhere and make less verbose
Public Class Methods
artifact_dir()
click to toggle source
# File lib/metric_fu/io.rb, line 11 def self.artifact_dir (ENV["CC_BUILD_ARTIFACTS"] || @artifact_dir) end
artifact_dir=(artifact_dir)
click to toggle source
# File lib/metric_fu/io.rb, line 14 def self.artifact_dir=(artifact_dir) @artifact_dir = artifact_dir end
default_artifact_dir()
click to toggle source
# File lib/metric_fu/io.rb, line 8 def self.default_artifact_dir @default_artifact_dir end
Public Instance Methods
create_directories(*dirs)
click to toggle source
# File lib/metric_fu/io.rb, line 52 def create_directories(*dirs) # due to behavior differences between ruby 1.8.7 and 1.9.3 # this is good enough for now Array(*dirs).each do |dir| MetricFu::Utility.mkdir_p dir end end
directories()
click to toggle source
# File lib/metric_fu/io.rb, line 21 def directories @directories ||= {} end
directory(name)
click to toggle source
# File lib/metric_fu/io.rb, line 25 def directory(name) directories.fetch(name) { raise "No such directory configured: #{name}" } end
file_globs_to_ignore()
click to toggle source
# File lib/metric_fu/io.rb, line 33 def file_globs_to_ignore @file_globs_to_ignore ||= [] end
scratch_directory(name)
click to toggle source
# File lib/metric_fu/io.rb, line 29 def scratch_directory(name) File.join(directory("scratch_directory"), name.to_s) end
set_code_dirs()
click to toggle source
Add the 'app' directory if we're running within rails.
# File lib/metric_fu/io.rb, line 61 def set_code_dirs @directories["code_dirs"] = %w(app lib).select { |dir| Dir.exist?(dir) } end
set_directories()
click to toggle source
# File lib/metric_fu/io.rb, line 37 def set_directories @directories = {} @directories["base_directory"] = MetricFu.artifact_dir @directories["scratch_directory"] = MetricFu.scratch_dir @directories["output_directory"] = MetricFu.output_dir @directories["data_directory"] = MetricFu.data_dir create_directories @directories.values @directories["root_directory"] = MetricFu.root_dir # TODO Though this is true of the general AwesomeTemplate, it is not necessarily true of templates within each Metric. Each metric should probably know how to use AwesomeTemplate (or whatever) @directories["template_directory"] = File.join(@directories.fetch("root_directory"), "lib", "templates") @file_globs_to_ignore = [] set_code_dirs end