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)

Get, and create if it does not exist, a specific development directory
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:"))
    dir.to_s.gsub("https://", ".").gsub("http://", ".").gsub("//", "/")
  else
    dir
  end
end

def self.get_dir_size(dir)

Get the size of a directory and its contents
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

The user home directory
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)

Normalize a directory or filename to use forward slashes
def self.normalize_path(name)
  name.gsub('\\', "/")
end

def self.root_dir

otherwise defaults to the user home directory
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?
    Environment.home_dir
  else
    normalize_path(ENV["DEV_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