Module: Amp::Support
- Defined in:
- lib/amp.rb,
lib/amp/support/logger.rb,
lib/amp/support/multi_io.rb,
lib/amp/templates/template.rb,
lib/amp/support/support.rb
Defined Under Namespace
Modules: SingletonLogger Classes: FileTemplate, IOForwarder, Logger, MultiIO, Template
Constant Summary collapse
- SYSTEM =
{}
- UMASK =
File.umask
- @@rc_path =
nil
Class Method Summary collapse
-
.determine_endianness ⇒ Object
Figures up the system is running on a little or big endian processor architecture, and upates the SYSTEM[] hash in the Support module.
-
.get_fully_qualified_domain_name ⇒ Object
gets the fully-qualified-domain-name for fake usernames.
-
.get_username ⇒ Object
gets the logged-in username.
-
.os_rcpath ⇒ Object
Returns the paths to hgrc files, specific to this type of system.
-
.parse_hg_url(url, revs = nil) ⇒ Hash
Parses the URL for amp-specific reasons.
-
.rc_files_for_path(path) ⇒ Object
Returns all hgrc files for the given path.
-
.rc_path ⇒ Object
Returns all paths to hgrc files on the system.
-
.system(command, opts = {}) ⇒ Object
Advanced calling of system().
-
.system_rcpath ⇒ Object
Returns the hgrc paths specific to this type of system, and are system-wide.
-
.user_rcpath ⇒ Object
Returns the hgrc files for the current user, specific to the particular OS and user.
Class Method Details
.determine_endianness ⇒ Object
Figures up the system is running on a little or big endian processor architecture, and upates the SYSTEM[] hash in the Support module.
1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 |
# File 'lib/amp/support/support.rb', line 1082 def self.determine_endianness num = 0x12345678 little = '78563412' big = '12345678' native = [num].pack('l') netunpack = native.unpack('N') if native == netunpack SYSTEM[:endian] = :big else SYSTEM[:endian] = :little end end |
.get_fully_qualified_domain_name ⇒ Object
gets the fully-qualified-domain-name for fake usernames
1064 1065 1066 1067 |
# File 'lib/amp/support/support.rb', line 1064 def self.get_fully_qualified_domain_name require 'socket' Socket.gethostbyname(Socket.gethostname).first end |
.get_username ⇒ Object
gets the logged-in username
1059 1060 1061 |
# File 'lib/amp/support/support.rb', line 1059 def self.get_username Etc.getlogin end |
.os_rcpath ⇒ Object
Returns the paths to hgrc files, specific to this type of system.
1034 1035 1036 1037 1038 1039 |
# File 'lib/amp/support/support.rb', line 1034 def self.os_rcpath path = system_rcpath path += user_rcpath path.map! {|f| File. f} path end |
.parse_hg_url(url, revs = nil) ⇒ Hash
Parses the URL for amp-specific reasons.
1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 |
# File 'lib/amp/support/support.rb', line 1021 def self.parse_hg_url(url, revs=nil) revs ||= [] # in case nil is passed unless url =~ /#/ hds = revs.any? ? revs : nil return {:url => url, :revs => hds, :head => revs[-1]} end url, branch = url.split('#')[0..1] checkout = revs[-1] || branch {:url => url, :revs => revs + [branch], :head => checkout} end |
.rc_files_for_path(path) ⇒ Object
Returns all hgrc files for the given path
1048 1049 1050 1051 1052 1053 1054 1055 1056 |
# File 'lib/amp/support/support.rb', line 1048 def self.rc_files_for_path path rcs = [File.join(path, "hgrc")] rcdir = File.join(path, "hgrc.d") begin Dir.stat_list(rcdir) {|f, kind| rcs << File.join(rcdir, f) if f =~ /\.rc$/} rescue end rcs end |
.rc_path ⇒ Object
Returns all paths to hgrc files on the system.
969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 |
# File 'lib/amp/support/support.rb', line 969 def self.rc_path if @@rc_path.nil? if ENV['HGRCPATH'] @@rc_path = [] ENV['HGRCPATH'].split(File::PATH_SEPARATOR).each do |p| next if p.empty? if File.directory?(p) File.stat_list(p) do |f, kind| if f =~ /\.rc$/ @@rc_path << File.join(p, f) end end else @@rc_path << p end end else @@rc_path = self.os_rcpath end end @@rc_path end |
.system(command, opts = {}) ⇒ Object
Advanced calling of system().
Allows the caller to provide substitute environment variables and the directory to use
998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 |
# File 'lib/amp/support/support.rb', line 998 def self.system(command, opts={}) backup_dir = Dir.pwd # in case something goes wrong temp_environ, temp_path = opts.delete(:environ), opts.delete(:chdir) || backup_dir if (temp_environ) old_env = ENV.to_hash temp_environ["HG"] = $amp_executable || File.amp_find_executable("amp") temp_environ.each {|k, v| ENV[k] = v.to_s} end Dir.chdir(temp_path) do rc = Kernel::system(command) end ensure ENV.clear.update(old_env) if temp_environ Dir.chdir(backup_dir) end |
.system_rcpath ⇒ Object
Returns the hgrc paths specific to this type of system, and are system-wide.
1071 1072 1073 1074 1075 1076 1077 1078 |
# File 'lib/amp/support/support.rb', line 1071 def self.system_rcpath path = [] if ARGV.size > 0 path += rc_files_for_path(File.dirname(ARGV[0]) + "/../etc/mercurial") end path += rc_files_for_path "/etc/mercurial" path end |
.user_rcpath ⇒ Object
Returns the hgrc files for the current user, specific to the particular OS and user.
1043 1044 1045 |
# File 'lib/amp/support/support.rb', line 1043 def self.user_rcpath [File.("~/.hgrc")] end |