summaryrefslogtreecommitdiff
path: root/lib/rake
diff options
context:
space:
mode:
authorjim <jim@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-25 07:01:07 +0000
committerjim <jim@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-25 07:01:07 +0000
commitea94d40f4a44bef1801faf147c469220d1259d4c (patch)
treec43876d57dc14dffd0550f18f8aea8773943f3f0 /lib/rake
parentc5746c45b2f080f0ede4b69c8e94700b4ac83092 (diff)
updated to rake code to rake-0.8.3 source code base
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rake')
-rw-r--r--lib/rake/win32.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/lib/rake/win32.rb b/lib/rake/win32.rb
new file mode 100644
index 0000000000..eadc585a3f
--- /dev/null
+++ b/lib/rake/win32.rb
@@ -0,0 +1,54 @@
+module Rake
+
+ # Win 32 interface methods for Rake. Windows specific functionality
+ # will be placed here to collect that knowledge in one spot.
+ module Win32
+
+ # Error indicating a problem in locating the home directory on a
+ # Win32 system.
+ class Win32HomeError < RuntimeError
+ end
+
+ class << self
+ # True if running on a windows system.
+ def windows?
+ Config::CONFIG['host_os'] =~ /mswin/
+ end
+
+ # Run a command line on windows.
+ def rake_system(*cmd)
+ if cmd.size == 1
+ system("call #{cmd}")
+ else
+ system(*cmd)
+ end
+ end
+
+ # The standard directory containing system wide rake files on
+ # Win 32 systems. Try the following environment variables (in
+ # order):
+ #
+ # * APPDATA
+ # * HOMEDRIVE + HOMEPATH
+ # * USERPROFILE
+ #
+ # If the above are not defined, the return nil.
+ def win32_system_dir #:nodoc:
+ win32_shared_path = ENV['APPDATA']
+ if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH']
+ win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH']
+ end
+ win32_shared_path ||= ENV['USERPROFILE']
+ raise Win32HomeError, "Unable to determine home path environment variable." if
+ win32_shared_path.nil? or win32_shared_path.empty?
+ normalize(File.join(win32_shared_path, 'Rake'))
+ end
+
+ # Normalize a win32 path so that the slashes are all forward slashes.
+ def normalize(path)
+ path.gsub(/\\/, '/')
+ end
+
+ end
+ end
+end