rUtilAnts 0.3.0.20110825 → 1.0.0.20120223

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 - 2011 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -7,12 +7,12 @@ module RUtilAnts
7
7
 
8
8
  module Platform
9
9
 
10
- class PlatformInfo
10
+ module PlatformInfo
11
11
 
12
12
  # Return the ID of the OS
13
13
  # Applications may adapt their behavior based on it.
14
14
  #
15
- # Return:
15
+ # Return::
16
16
  # * _Integer_: OS ID
17
17
  def os
18
18
  return OS_CYGWIN
@@ -20,7 +20,7 @@ module RUtilAnts
20
20
 
21
21
  # Return the list of directories where we look for executables
22
22
  #
23
- # Return:
23
+ # Return::
24
24
  # * <em>list<String></em>: List of directories
25
25
  def getSystemExePath
26
26
  return ENV['PATH'].split(':')
@@ -28,7 +28,7 @@ module RUtilAnts
28
28
 
29
29
  # Set the list of directories where we look for executables
30
30
  #
31
- # Parameters:
31
+ # Parameters::
32
32
  # * *iNewDirsList* (<em>list<String></em>): List of directories
33
33
  def setSystemExePath(iNewDirsList)
34
34
  ENV['PATH'] = iNewDirsList.join(':')
@@ -37,7 +37,7 @@ module RUtilAnts
37
37
  # Return the list of file extensions that might be discretely happened to executable files.
38
38
  # This is the optional extensions that can be happened when invoked from a terminal.
39
39
  #
40
- # Return:
40
+ # Return::
41
41
  # * <em>list<String></em>: List of extensions (including .)
42
42
  def getDiscreteExeExtensions
43
43
  return []
@@ -45,7 +45,7 @@ module RUtilAnts
45
45
 
46
46
  # Return the list of directories where we look for libraries
47
47
  #
48
- # Return:
48
+ # Return::
49
49
  # * <em>list<String></em>: List of directories
50
50
  def getSystemLibsPath
51
51
  rList = ENV['PATH'].split(':')
@@ -59,7 +59,7 @@ module RUtilAnts
59
59
 
60
60
  # Set the list of directories where we look for libraries
61
61
  #
62
- # Parameters:
62
+ # Parameters::
63
63
  # * *iNewDirsList* (<em>list<String></em>): List of directories
64
64
  def setSystemLibsPath(iNewDirsList)
65
65
  ENV['LD_LIBRARY_PATH'] = iNewDirsList.join(':')
@@ -67,7 +67,7 @@ module RUtilAnts
67
67
 
68
68
  # This method sends a message (platform dependent) to the user, without the use of wxruby
69
69
  #
70
- # Parameters:
70
+ # Parameters::
71
71
  # * *iMsg* (_String_): The message to display
72
72
  def sendMsg(iMsg)
73
73
  # TODO: Handle case of xmessage not installed
@@ -84,10 +84,10 @@ module RUtilAnts
84
84
  # Execute a Shell command.
85
85
  # Do not wait for its termination.
86
86
  #
87
- # Parameters:
87
+ # Parameters::
88
88
  # * *iCmd* (_String_): The command to execute
89
89
  # * *iInTerminal* (_Boolean_): Do we execute this command in a separate terminal ?
90
- # Return:
90
+ # Return::
91
91
  # * _Exception_: Error, or nil if success
92
92
  def execShellCmdNoWait(iCmd, iInTerminal)
93
93
  rException = nil
@@ -110,9 +110,9 @@ module RUtilAnts
110
110
 
111
111
  # Execute a given URL to be launched in a browser
112
112
  #
113
- # Parameters:
113
+ # Parameters::
114
114
  # * *iURL* (_String_): The URL to launch
115
- # Return:
115
+ # Return::
116
116
  # * _String_: Error message, or nil if success
117
117
  def launchURL(iURL)
118
118
  rError = nil
@@ -128,7 +128,7 @@ module RUtilAnts
128
128
 
129
129
  # Get file extensions specifics to executable files
130
130
  #
131
- # Return:
131
+ # Return::
132
132
  # * <em>list<String></em>: List of extensions (including . character). It can be empty.
133
133
  def getExecutableExtensions
134
134
  return []
@@ -136,12 +136,43 @@ module RUtilAnts
136
136
 
137
137
  # Get prohibited characters from file names
138
138
  #
139
- # Return:
139
+ # Return::
140
140
  # * _String_: String of prohibited characters in file names
141
141
  def getProhibitedFileNamesCharacters
142
142
  return '/'
143
143
  end
144
144
 
145
+ # Create a shortcut (ln -s on Cygwin/Unix systems, a .lnk file on Windows systems)
146
+ #
147
+ # Parameters::
148
+ # * *iSrc* (_String_): The source file
149
+ # * *iDst* (_String_): The destination file
150
+ def createShortcut(iSrc, iDst)
151
+ require 'fileutils'
152
+ FileUtils::ln_s(iSrc, iDst)
153
+ end
154
+
155
+ # Get the name of a real file name, pointed by a shortcut.
156
+ # On Windows systems, it will be the target of the lnk file.
157
+ #
158
+ # Parameters::
159
+ # * *iShortcutName* (_String_): Name of the shortcut (same name used by createShortcut). Don't use OS specific extensions in this name (no .lnk).
160
+ # Return::
161
+ # * _String_: The real file name pointed by this shortcut
162
+ def followShortcut(iShortcutName)
163
+ return File.readlink(iShortcutName)
164
+ end
165
+
166
+ # Get the real file name of a shortcut
167
+ #
168
+ # Parameters::
169
+ # * *iDst* (_String_): The destination file that will host the shortcut
170
+ # Return::
171
+ # * _String_: The real shortcut file name
172
+ def getShortcutFileName(iDst)
173
+ return iDst
174
+ end
175
+
145
176
  end
146
177
 
147
178
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 - 2011 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -7,12 +7,12 @@ module RUtilAnts
7
7
 
8
8
  module Platform
9
9
 
10
- class PlatformInfo
10
+ module PlatformInfo
11
11
 
12
12
  # Return the ID of the OS
13
13
  # Applications may adapt their behavior based on it.
14
14
  #
15
- # Return:
15
+ # Return::
16
16
  # * _Integer_: OS ID
17
17
  def os
18
18
  return OS_LINUX
@@ -20,7 +20,7 @@ module RUtilAnts
20
20
 
21
21
  # Return the list of directories where we look for executables
22
22
  #
23
- # Return:
23
+ # Return::
24
24
  # * <em>list<String></em>: List of directories
25
25
  def getSystemExePath
26
26
  return ENV['PATH'].split(':')
@@ -28,7 +28,7 @@ module RUtilAnts
28
28
 
29
29
  # Set the list of directories where we look for executables
30
30
  #
31
- # Parameters:
31
+ # Parameters::
32
32
  # * *iNewDirsList* (<em>list<String></em>): List of directories
33
33
  def setSystemExePath(iNewDirsList)
34
34
  ENV['PATH'] = iNewDirsList.join(':')
@@ -37,7 +37,7 @@ module RUtilAnts
37
37
  # Return the list of file extensions that might be discretely happened to executable files.
38
38
  # This is the optional extensions that can be happened when invoked from a terminal.
39
39
  #
40
- # Return:
40
+ # Return::
41
41
  # * <em>list<String></em>: List of extensions (including .)
42
42
  def getDiscreteExeExtensions
43
43
  return []
@@ -45,7 +45,7 @@ module RUtilAnts
45
45
 
46
46
  # Return the list of directories where we look for libraries
47
47
  #
48
- # Return:
48
+ # Return::
49
49
  # * <em>list<String></em>: List of directories
50
50
  def getSystemLibsPath
51
51
  rList = ENV['PATH'].split(':')
@@ -59,7 +59,7 @@ module RUtilAnts
59
59
 
60
60
  # Set the list of directories where we look for libraries
61
61
  #
62
- # Parameters:
62
+ # Parameters::
63
63
  # * *iNewDirsList* (<em>list<String></em>): List of directories
64
64
  def setSystemLibsPath(iNewDirsList)
65
65
  ENV['LD_LIBRARY_PATH'] = iNewDirsList.join(':')
@@ -67,7 +67,7 @@ module RUtilAnts
67
67
 
68
68
  # This method sends a message (platform dependent) to the user, without the use of wxruby
69
69
  #
70
- # Parameters:
70
+ # Parameters::
71
71
  # * *iMsg* (_String_): The message to display
72
72
  def sendMsg(iMsg)
73
73
  # TODO: Handle case of xmessage not installed
@@ -84,10 +84,10 @@ module RUtilAnts
84
84
  # Execute a Shell command.
85
85
  # Do not wait for its termination.
86
86
  #
87
- # Parameters:
87
+ # Parameters::
88
88
  # * *iCmd* (_String_): The command to execute
89
89
  # * *iInTerminal* (_Boolean_): Do we execute this command in a separate terminal ?
90
- # Return:
90
+ # Return::
91
91
  # * _Exception_: Error, or nil if success
92
92
  def execShellCmdNoWait(iCmd, iInTerminal)
93
93
  rException = nil
@@ -110,9 +110,9 @@ module RUtilAnts
110
110
 
111
111
  # Execute a given URL to be launched in a browser
112
112
  #
113
- # Parameters:
113
+ # Parameters::
114
114
  # * *iURL* (_String_): The URL to launch
115
- # Return:
115
+ # Return::
116
116
  # * _String_: Error message, or nil if success
117
117
  def launchURL(iURL)
118
118
  rError = nil
@@ -128,7 +128,7 @@ module RUtilAnts
128
128
 
129
129
  # Get file extensions specifics to executable files
130
130
  #
131
- # Return:
131
+ # Return::
132
132
  # * <em>list<String></em>: List of extensions (including . character). It can be empty.
133
133
  def getExecutableExtensions
134
134
  return []
@@ -136,12 +136,43 @@ module RUtilAnts
136
136
 
137
137
  # Get prohibited characters from file names
138
138
  #
139
- # Return:
139
+ # Return::
140
140
  # * _String_: String of prohibited characters in file names
141
141
  def getProhibitedFileNamesCharacters
142
142
  return '/'
143
143
  end
144
144
 
145
+ # Create a shortcut (ln -s on Cygwin/Unix systems, a .lnk file on Windows systems)
146
+ #
147
+ # Parameters::
148
+ # * *iSrc* (_String_): The source file
149
+ # * *iDst* (_String_): The destination file
150
+ def createShortcut(iSrc, iDst)
151
+ require 'fileutils'
152
+ FileUtils::ln_s(iSrc, iDst)
153
+ end
154
+
155
+ # Get the name of a real file name, pointed by a shortcut.
156
+ # On Windows systems, it will be the target of the lnk file.
157
+ #
158
+ # Parameters::
159
+ # * *iShortcutName* (_String_): Name of the shortcut (same name used by createShortcut). Don't use OS specific extensions in this name (no .lnk).
160
+ # Return::
161
+ # * _String_: The real file name pointed by this shortcut
162
+ def followShortcut(iShortcutName)
163
+ return File.readlink(iShortcutName)
164
+ end
165
+
166
+ # Get the real file name of a shortcut
167
+ #
168
+ # Parameters::
169
+ # * *iDst* (_String_): The destination file that will host the shortcut
170
+ # Return::
171
+ # * _String_: The real shortcut file name
172
+ def getShortcutFileName(iDst)
173
+ return iDst
174
+ end
175
+
145
176
  end
146
177
 
147
178
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2009 - 2011 Muriel Salvan (murielsalvan@users.sourceforge.net)
2
+ # Copyright (c) 2009 - 2012 Muriel Salvan (muriel@x-aeon.com)
3
3
  # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
4
  #++
5
5
 
@@ -7,12 +7,12 @@ module RUtilAnts
7
7
 
8
8
  module Platform
9
9
 
10
- class PlatformInfo
10
+ module PlatformInfo
11
11
 
12
12
  # Return the ID of the OS
13
13
  # Applications may adapt their behavior based on it.
14
14
  #
15
- # Return:
15
+ # Return::
16
16
  # * _Integer_: OS ID
17
17
  def os
18
18
  return OS_WINDOWS
@@ -20,7 +20,7 @@ module RUtilAnts
20
20
 
21
21
  # Return the list of directories where we look for executables
22
22
  #
23
- # Return:
23
+ # Return::
24
24
  # * <em>list<String></em>: List of directories
25
25
  def getSystemExePath
26
26
  return ENV['PATH'].split(';')
@@ -28,7 +28,7 @@ module RUtilAnts
28
28
 
29
29
  # Set the list of directories where we look for executables
30
30
  #
31
- # Parameters:
31
+ # Parameters::
32
32
  # * *iNewDirsList* (<em>list<String></em>): List of directories
33
33
  def setSystemExePath(iNewDirsList)
34
34
  ENV['PATH'] = iNewDirsList.join(';')
@@ -37,7 +37,7 @@ module RUtilAnts
37
37
  # Return the list of file extensions that might be discretely happened to executable files.
38
38
  # This is the optional extensions that can be happened when invoked from a terminal.
39
39
  #
40
- # Return:
40
+ # Return::
41
41
  # * <em>list<String></em>: List of extensions (including .)
42
42
  def getDiscreteExeExtensions
43
43
  rExtList = []
@@ -51,7 +51,7 @@ module RUtilAnts
51
51
 
52
52
  # Return the list of directories where we look for libraries
53
53
  #
54
- # Return:
54
+ # Return::
55
55
  # * <em>list<String></em>: List of directories
56
56
  def getSystemLibsPath
57
57
  return ENV['PATH'].split(';')
@@ -59,7 +59,7 @@ module RUtilAnts
59
59
 
60
60
  # Set the list of directories where we look for libraries
61
61
  #
62
- # Parameters:
62
+ # Parameters::
63
63
  # * *iNewDirsList* (<em>list<String></em>): List of directories
64
64
  def setSystemLibsPath(iNewDirsList)
65
65
  ENV['PATH'] = iNewDirsList.join(';')
@@ -67,7 +67,7 @@ module RUtilAnts
67
67
 
68
68
  # This method sends a message (platform dependent) to the user, without the use of wxruby
69
69
  #
70
- # Parameters:
70
+ # Parameters::
71
71
  # * *iMsg* (_String_): The message to display
72
72
  def sendMsg(iMsg)
73
73
  # iMsg must not be longer than 255 characters
@@ -82,10 +82,10 @@ module RUtilAnts
82
82
  # Execute a Shell command.
83
83
  # Do not wait for its termination.
84
84
  #
85
- # Parameters:
85
+ # Parameters::
86
86
  # * *iCmd* (_String_): The command to execute
87
87
  # * *iInTerminal* (_Boolean_): Do we execute this command in a separate terminal ?
88
- # Return:
88
+ # Return::
89
89
  # * _Exception_: Error, or nil if success
90
90
  def execShellCmdNoWait(iCmd, iInTerminal)
91
91
  rException = nil
@@ -107,9 +107,9 @@ module RUtilAnts
107
107
 
108
108
  # Execute a given URL to be launched in a browser
109
109
  #
110
- # Parameters:
110
+ # Parameters::
111
111
  # * *iURL* (_String_): The URL to launch
112
- # Return:
112
+ # Return::
113
113
  # * _String_: Error message, or nil if success
114
114
  def launchURL(iURL)
115
115
  rError = nil
@@ -127,21 +127,62 @@ module RUtilAnts
127
127
 
128
128
  # Get file extensions specifics to executable files
129
129
  #
130
- # Return:
130
+ # Return::
131
131
  # * <em>list<String></em>: List of extensions (including . character). It can be empty.
132
132
  def getExecutableExtensions
133
- # TODO: Use PATHEXT environment variable if possible
134
- return [ '.exe', '.com', '.bat' ]
133
+ rLstExt = [ '.exe', '.com', '.bat' ]
134
+
135
+ # Use PATHEXT environment variable if possible
136
+ if (ENV['PATHEXT'] != nil)
137
+ rLstExt.concat(ENV['PATHEXT'].split(';').map { |iExt| iExt.downcase })
138
+ rLstExt.uniq!
139
+ end
140
+
141
+ return rLstExt
135
142
  end
136
143
 
137
144
  # Get prohibited characters from file names
138
145
  #
139
- # Return:
146
+ # Return::
140
147
  # * _String_: String of prohibited characters in file names
141
148
  def getProhibitedFileNamesCharacters
142
149
  return '\\/:*?"<>|'
143
150
  end
144
151
 
152
+ # Create a shortcut (ln -s on Cygwin/Unix systems, a .lnk file on Windows systems)
153
+ #
154
+ # Parameters::
155
+ # * *iSrc* (_String_): The source file
156
+ # * *iDst* (_String_): The destination file
157
+ def createShortcut(iSrc, iDst)
158
+ require 'win32/shortcut'
159
+ Win32::Shortcut.new(getShortcutFileName(iDst)) do |oShortcut|
160
+ oShortcut.path = File.expand_path(iSrc)
161
+ end
162
+ end
163
+
164
+ # Get the name of a real file name, pointed by a shortcut.
165
+ # On Windows systems, it will be the target of the lnk file.
166
+ #
167
+ # Parameters::
168
+ # * *iShortcutName* (_String_): Name of the shortcut (same name used by createShortcut). Don't use OS specific extensions in this name (no .lnk).
169
+ # Return::
170
+ # * _String_: The real file name pointed by this shortcut
171
+ def followShortcut(iShortcutName)
172
+ require 'win32/shortcut'
173
+ return Win32::Shortcut.open(getShortcutFileName(iShortcutName)).path
174
+ end
175
+
176
+ # Get the real file name of a shortcut
177
+ #
178
+ # Parameters::
179
+ # * *iDst* (_String_): The destination file that will host the shortcut
180
+ # Return::
181
+ # * _String_: The real shortcut file name
182
+ def getShortcutFileName(iDst)
183
+ return "#{iDst}.lnk"
184
+ end
185
+
145
186
  end
146
187
 
147
188
  end