lib/knj/os.rb in knjrbfw-0.0.115 vs lib/knj/os.rb in knjrbfw-0.0.116
- old
+ new
@@ -1,117 +1,117 @@
module Knj::Os
#Returns the path of the home-dir as a string.
#===Examples
- # print "Looks like the current user uses Mozilla software?" if File.exists?("#{Knj::Os.homedir}/.mozilla")
+ # print "Looks like the current user uses Mozilla software?" if File.exist?("#{Knj::Os.homedir}/.mozilla")
def self.homedir
if ENV["USERPROFILE"]
homedir = ENV["USERPROFILE"]
else
homedir = File.expand_path("~")
end
-
+
if homedir.length <= 0
raise "Could not figure out the homedir."
end
-
+
return homedir
end
-
+
#This method was created to make up for the fact that Dir.tmpdir sometimes returns empty strings??
#===Examples
# tmp_db_path = "#{Knj::Os.tmpdir}/temp_db.sqlite3"
def self.tmpdir
require "tmpdir"
tmpdir = Dir.tmpdir.to_s.strip
-
- return tmpdir if tmpdir.length >= 3 and File.exists?(tmpdir)
- return ENV["TEMP"] if ENV["TEMP"].to_s.strip.length > 0 and File.exists?(ENV["TMP"])
- return ENV["TMP"] if ENV["TMP"].to_s.strip.length > 0 and File.exists?(ENV["TMP"])
- return "/tmp" if File.exists?("/tmp")
-
+
+ return tmpdir if tmpdir.length >= 3 and File.exist?(tmpdir)
+ return ENV["TEMP"] if ENV["TEMP"].to_s.strip.length > 0 and File.exist?(ENV["TMP"])
+ return ENV["TMP"] if ENV["TMP"].to_s.strip.length > 0 and File.exist?(ENV["TMP"])
+ return "/tmp" if File.exist?("/tmp")
+
raise "Could not figure out temp-dir."
end
-
+
#This method returns the username of the current user.
#===Examples
# print "I can do what I want, I am root!" if Knj::Os.whoami == "root"
def self.whoami
if ENV["USERNAME"]
whoami = ENV["USERNAME"]
else
whoami = %x[whoami].strip
end
-
+
if whoami.length <= 0
raise "Could not figure out the user who is logged in."
end
-
+
return whoami
end
-
+
#Returns the operating system a string.
#===Examples
# print "Can I please move to another machine?" if Knj::Os.os == "windows"
# print "I like it better now." if Knj::Os.os == "linux"
def self.os
if ENV["OS"]
teststring = ENV["OS"].to_s.downcase
elsif RUBY_PLATFORM
teststring = RUBY_PLATFORM.to_s.downcase
end
-
+
if teststring.include?("windows")
return "windows"
elsif teststring.include?("linux")
return "linux"
elsif teststring.include?("darwin")
else
raise "Could not figure out OS: '#{teststring}'."
end
end
-
+
#Returns the current graphical toolkit running.
#===Examples
# Knj::Os.toolkit #=> 'kde'
def self.toolkit
if self.os == "linux"
if ENV["DESKTOP_SESSION"].index("plasma") != nil
return "kde"
end
end
-
+
raise "Could not figure out the toolkit."
end
-
+
def self.class_exist(classstr)
if Module.constants.index(classstr) != nil
return true
end
-
+
return false
end
-
+
def self.chdir_file(filepath)
if File.symlink?(filepath)
Dir.chdir(File.dirname(File.readlink(filepath)))
else
Dir.chdir(File.dirname(filepath))
end
end
-
+
def self.realpath(path)
return self.realpath(File.readlink(path)) if File.symlink?(path)
return path
end
-
+
#Runs a command and returns output. Also throws an exception of something is outputted to stderr.
def self.shellcmd(cmd)
res = {
:out => "",
:err => ""
}
-
+
if RUBY_ENGINE == "jruby"
begin
IO.popen4(cmd) do |pid, stdin, stdout, stderr|
res[:out] << stdout.read
res[:err] << stderr.read
@@ -129,106 +129,106 @@
Open3.popen3(cmd) do |stdin, stdout, stderr|
res[:out] << stdout.read
res[:err] << stderr.read
end
end
-
+
if res[:err].to_s.strip.length > 0
raise res[:err]
end
-
+
return res[:out]
end
-
+
#Runs a command as a process of its own and wont block or be depended on this process.
def self.subproc(cmd)
%x[#{cmd} >> /dev/null 2>&1 &]
end
-
+
#Returns the xauth file for GDM.
def self.xauth_file
authfile = ""
-
- if File.exists?("/var/run/gdm")
+
+ if File.exist?("/var/run/gdm")
Dir.foreach("/var/run/gdm") do |file|
next if file == "." or file == ".." or !file.match(/^auth-for-gdm-.+$/)
authfile = "/var/run/gdm/#{file}/database"
end
end
-
- if File.exists?("/var/run/lightdm")
+
+ if File.exist?("/var/run/lightdm")
Dir.foreach("/var/run/lightdm") do |file|
next if file == "." or file == ".."
-
+
Dir.foreach("/var/run/lightdm/#{file}") do |f2|
authfile = "/var/run/lightdm/#{file}/#{f2}" if f2.match(/^:(\d+)$/)
end
end
end
-
+
if authfile.to_s.length <= 0
raise "Could not figure out authfile for GDM."
end
-
+
return authfile
end
-
+
#Checks if the display variable and xauth is set - if not sets it to the GDM xauth and defaults the display to :0.0.
def self.check_display_env
ret = {}
-
+
if ENV["DISPLAY"].to_s.strip.length <= 0
x_procs = Knj::Unix_proc.list("grep" => "/usr/bin/X")
set_disp = nil
-
+
x_procs.each do |x_proc|
if match = x_proc["cmd"].match(/(:\d+)/)
set_disp = match[1]
break
end
end
-
+
raise "Could not figure out display." if !set_disp
-
+
ENV["DISPLAY"] = set_disp
ret["display"] = set_disp
else
ret["display"] = ENV["DISPLAY"]
end
-
+
if !ENV["XAUTHORITY"]
res = Knj::Os.xauth_file
ENV["XAUTHORITY"] = res
ret["xauth"] = res
else
ret["xauth"] = ENV["XAUTHORITY"]
end
-
+
return ret
end
-
+
#Returns the command used to execute the current process.
def self.executed_cmd
return ENV["SUDO_COMMAND"] if ENV["SUDO_COMMAND"]
-
+
proc_self = Knj::Unix_proc.find_self
cmd = proc_self["cmd"]
-
+
cmd.gsub!(/^ruby([\d\.]+)/, ENV["_"]) if ENV["_"]
-
+
return cmd
end
-
+
#Returns the Ruby executable that is running the current process if possible.
def self.executed_executable
return ENV["rvm_ruby_string"] if !ENV["rvm_ruby_string"].to_s.empty?
-
+
if ENV["MY_RUBY_HOME"]
ruby_bin_path = "#{ENV["MY_RUBY_HOME"]}/bin/ruby"
- return ruby_bin_path if File.exists?(ruby_bin_path)
+ return ruby_bin_path if File.exist?(ruby_bin_path)
end
-
+
#Try to look the executeable up by command.
if self.os == "linux"
unix_proc = Knj::Unix_proc.find_self
if unix_proc
if match_cmd = unix_proc["cmd"].match(/^(\/usr\/bin\/|)((j|iron|)ruby([\d\.-]*))(\s+|$)/)
@@ -238,15 +238,15 @@
end
else
raise "Could not find the self-process."
end
end
-
+
# Code for returning RBEnv Ruby path if running through RBEnv.
if ENV["RBENV_VERSION"] && ENV["RBENV_ROOT"]
rbenv_path = "#{ENV["RBENV_ROOT"]}/versions/#{ENV["RBENV_VERSION"]}/bin/ruby"
- return rbenv_path if File.exists?(rbenv_path)
+ return rbenv_path if File.exist?(rbenv_path)
end
-
+
raise "Could not figure out the executed executable from the environment: '#{ENV.to_hash}'."
end
end
\ No newline at end of file