lib/raykit/environment.rb



require 'pathname'

module Raykit
    # Provides functionality related to the development environment

    class Environment
        # Normalize a directory or filename to use forward slashes

        def self.normalize_path(name)
            name.gsub('\\','/')
        end

        # The root directory for the development environment.

        # May be set using the environment variable DEV_ROOT,

        # otherwise defaults to the user home directory

        def self.root_dir
            if(ENV['DEV_ROOT'].nil?)
                Environment::home_dir
            else
                normalize_path(ENV['DEV_ROOT'])
            end
        end
         
        # The user home directory

        def self.home_dir
            return normalize_path(ENV["USERPROFILE"]) if(ENV.include?("USERPROFILE"))
            normalize_path(ENV['HOME'])
        end

        # 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
            dir.to_s
        end

        # 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.machine
            return ENV['COMPUTERNAME'] if !ENV['COMPUTERNAME'].nil? 
            machine = `hostname`
            machine = machine.split('.')[0] if machine.include?('.')
            return machine.strip
          end
        
        def self.user
            ENV['USERNAME']
        end

        def self.local_application_data
            return "#{ENV['USERPROFILE']}/AppData/Local".gsub('\\','/')
        end

        def self.admin?
            rights=%x[whoami /priv]
            return rights.include?('SeCreateGlobalPrivilege')
        end
    end
end