summaryrefslogtreecommitdiff
path: root/lib/rake/win32.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-06-23 22:11:55 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-06-23 22:11:55 +0000
commitd001539a0538cba0e48be2ebdafe29e67b006a4e (patch)
treeabf1591ca3b56f04f46cc2cce9918700620a3ab1 /lib/rake/win32.rb
parent3fbc9440feb66cf762834b6d66e6f3a893bab5b7 (diff)
* lib/rake: Import Rake 0.9.2
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rake/win32.rb')
-rw-r--r--lib/rake/win32.rb45
1 files changed, 27 insertions, 18 deletions
diff --git a/lib/rake/win32.rb b/lib/rake/win32.rb
index 0ab31c2822..98289a10b4 100644
--- a/lib/rake/win32.rb
+++ b/lib/rake/win32.rb
@@ -1,46 +1,55 @@
+
module Rake
+ require 'rake/alt_system'
# 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.
- if File::ALT_SEPARATOR == '\\' # assume other DOSish systems are extinct.
- def windows?; true end
- else
- def windows?; false end
+ def windows?
+ AltSystem::WINDOWS
+ end
+
+ # Run a command line on windows.
+ def rake_system(*cmd)
+ AltSystem.system(*cmd)
end
- end
- class << self
# The standard directory containing system wide rake files on
# Win 32 systems. Try the following environment variables (in
# order):
#
- # * APPDATA
# * HOME
# * HOMEDRIVE + HOMEPATH
+ # * APPDATA
# * USERPROFILE
#
- # If the above are not defined, retruns the personal folder.
+ # If the above are not defined, the return nil.
def win32_system_dir #:nodoc:
- win32_shared_path = ENV['APPDATA']
- if !win32_shared_path or win32_shared_path.empty?
- win32_shared_path = '~'
+ win32_shared_path = ENV['HOME']
+ if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH']
+ win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH']
end
- File.expand_path('Rake', win32_shared_path)
+
+ win32_shared_path ||= ENV['APPDATA']
+ 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.tr('\\', '/')
+ path.gsub(/\\/, '/')
end
- end if windows?
- end
- if Win32.windows?
- def standard_system_dir
- Win32.win32_system_dir
end
end
end