class Raykit::Environment
Provides functionality related to the development environment
def self.admin?
def self.admin? rights = `whoami /priv` rights.include?("SeCreateGlobalPrivilege") end
def self.get_dev_dir(name)
def self.get_dev_dir(name) dir = Pathname.new("#{Environment.root_dir}/#{name}") dir.mkpath if (dir.to_s.include?("https:") || dir.to_s.include?("http:")) normalize_path(dir.to_s.gsub("https://", ".").gsub("http://", ".").gsub("//", "/")) else normalize_path(dir.to_s) end end
def self.get_dir_size(dir)
def self.get_dir_size(dir) Dir.glob(File.join(dir, "**", "*")) .map { |f| File.size(f) } .inject(:+) end
def self.get_work_dir(url)
def self.get_work_dir(url) "#{Raykit::Environment.get_dev_dir("work")}/#{url.gsub(".git", "").gsub("://", ".")}" end
def self.home_dir
def self.home_dir return normalize_path(ENV["USERPROFILE"]) if ENV.include?("USERPROFILE") normalize_path(ENV["HOME"]) end
def self.local_application_data
def self.local_application_data "#{ENV["USERPROFILE"]}/AppData/Local".gsub('\\', "/") end
def self.log_dir
def self.log_dir get_dev_dir("log") end
def self.machine
def self.machine return ENV["COMPUTERNAME"] unless ENV["COMPUTERNAME"].nil? machine = `hostname` machine = machine.split(".")[0] if machine.include?(".") machine.strip end
def self.normalize_path(name)
def self.normalize_path(name) if (windows?) normalize_windows(name) else normalize_unix(name) end end
def self.normalize_unix(name)
def self.normalize_unix(name) name.gsub('\\', "/") end
def self.normalize_windows(name)
def self.normalize_windows(name) name.gsub("/", '\\') end
def self.root_dir
May be set using the environment variable DEV_ROOT,
The root directory for the development environment.
def self.root_dir if ENV["DEV_ROOT"].nil? config = Raykit::Configuration.new if (config.root_dir.nil? || config.root_dir.empty?) root = Environment.home_dir + File::SEPARATOR + "code" else root = Environment.home_dir + File::SEPARATOR + config.root_dir end else root = ENV["DEV_ROOT"].gsub("\\", "/").chomp("/") normalize_path(root) end end
def self.user
def self.user ENV["USERNAME"] end
def self.which(name)
def self.which(name) return name if File.exist?(name) ["", ".exe", ".bat", ".cmd"].each do |ext| aname = name + ext return aname if File.exist?(aname) ENV["PATH"].split(File::PATH_SEPARATOR).each do |path| apath = "#{path.gsub('\\', "/")}/#{aname}".gsub("//", "/") return apath if File.exist?(apath) end end "" end
def self.windows?
def self.windows? Gem.win_platform? end