rUtilAnts 0.1.0.20091014

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,149 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RUtilAnts
7
+
8
+ module Platform
9
+
10
+ class PlatformInfo
11
+
12
+ # Return the ID of the OS
13
+ # Applications may adapt their behavior based on it.
14
+ #
15
+ # Return:
16
+ # * _Integer_: OS ID
17
+ def os
18
+ return OS_LINUX
19
+ end
20
+
21
+ # Return the list of directories where we look for executables
22
+ #
23
+ # Return:
24
+ # * <em>list<String></em>: List of directories
25
+ def getSystemExePath
26
+ return ENV['PATH'].split(':')
27
+ end
28
+
29
+ # Set the list of directories where we look for executables
30
+ #
31
+ # Parameters:
32
+ # * *iNewDirsList* (<em>list<String></em>): List of directories
33
+ def setSystemExePath(iNewDirsList)
34
+ ENV['PATH'] = iNewDirsList.join(':')
35
+ end
36
+
37
+ # Return the list of file extensions that might be discretely happened to executable files.
38
+ # This is the optional extensions that can be happened when invoked from a terminal.
39
+ #
40
+ # Return:
41
+ # * <em>list<String></em>: List of extensions (including .)
42
+ def getDiscreteExeExtensions
43
+ return []
44
+ end
45
+
46
+ # Return the list of directories where we look for libraries
47
+ #
48
+ # Return:
49
+ # * <em>list<String></em>: List of directories
50
+ def getSystemLibsPath
51
+ rList = ENV['PATH'].split(':')
52
+
53
+ if (ENV['LD_LIBRARY_PATH'] != nil)
54
+ rList += ENV['LD_LIBRARY_PATH'].split(':')
55
+ end
56
+
57
+ return rList
58
+ end
59
+
60
+ # Set the list of directories where we look for libraries
61
+ #
62
+ # Parameters:
63
+ # * *iNewDirsList* (<em>list<String></em>): List of directories
64
+ def setSystemLibsPath(iNewDirsList)
65
+ ENV['LD_LIBRARY_PATH'] = iNewDirsList.join(':')
66
+ end
67
+
68
+ # This method sends a message (platform dependent) to the user, without the use of wxruby
69
+ #
70
+ # Parameters:
71
+ # * *iMsg* (_String_): The message to display
72
+ def sendMsg(iMsg)
73
+ # TODO: Handle case of xmessage not installed
74
+ # Create a temporary file with the content to display
75
+ require 'tmpdir'
76
+ lTmpFileName = "#{Dir.tmpdir}/RUA_MSG"
77
+ File.open(lTmpFileName, 'w') do |oFile|
78
+ oFile.write(iMsg)
79
+ end
80
+ system("xmessage -file #{lTmpFileName}")
81
+ File.unlink(lTmpFileName)
82
+ end
83
+
84
+ # Execute a Shell command.
85
+ # Do not wait for its termination.
86
+ #
87
+ # Parameters:
88
+ # * *iCmd* (_String_): The command to execute
89
+ # * *iInTerminal* (_Boolean_): Do we execute this command in a separate terminal ?
90
+ # Return:
91
+ # * _Exception_: Error, or nil if success
92
+ def execShellCmdNoWait(iCmd, iInTerminal)
93
+ rException = nil
94
+
95
+ if (iInTerminal)
96
+ # TODO: Handle case of xterm not installed
97
+ if (!system("xterm -e \"#{iCmd}\""))
98
+ rException = RuntimeError.new
99
+ end
100
+ else
101
+ begin
102
+ IO.popen(iCmd)
103
+ rescue Exception
104
+ rException = $!
105
+ end
106
+ end
107
+
108
+ return rException
109
+ end
110
+
111
+ # Execute a given URL to be launched in a browser
112
+ #
113
+ # Parameters:
114
+ # * *iURL* (_String_): The URL to launch
115
+ # Return:
116
+ # * _String_: Error message, or nil if success
117
+ def launchURL(iURL)
118
+ rError = nil
119
+
120
+ begin
121
+ IO.popen("xdg-open '#{iURL}'")
122
+ rescue Exception
123
+ rError = $!.to_s
124
+ end
125
+
126
+ return rError
127
+ end
128
+
129
+ # Get file extensions specifics to executable files
130
+ #
131
+ # Return:
132
+ # * <em>list<String></em>: List of extensions (including . character). It can be empty.
133
+ def getExecutableExtensions
134
+ return []
135
+ end
136
+
137
+ # Get prohibited characters from file names
138
+ #
139
+ # Return:
140
+ # * _String_: String of prohibited characters in file names
141
+ def getProhibitedFileNamesCharacters
142
+ return '/'
143
+ end
144
+
145
+ end
146
+
147
+ end
148
+
149
+ end
@@ -0,0 +1,141 @@
1
+ #--
2
+ # Copyright (c) 2009 Muriel Salvan (murielsalvan@users.sourceforge.net)
3
+ # Licensed under the terms specified in LICENSE file. No warranty is provided.
4
+ #++
5
+
6
+ module RUtilAnts
7
+
8
+ module Platform
9
+
10
+ class PlatformInfo
11
+
12
+ # Return the ID of the OS
13
+ # Applications may adapt their behavior based on it.
14
+ #
15
+ # Return:
16
+ # * _Integer_: OS ID
17
+ def os
18
+ return OS_WINDOWS
19
+ end
20
+
21
+ # Return the list of directories where we look for executables
22
+ #
23
+ # Return:
24
+ # * <em>list<String></em>: List of directories
25
+ def getSystemExePath
26
+ return ENV['PATH'].split(';')
27
+ end
28
+
29
+ # Set the list of directories where we look for executables
30
+ #
31
+ # Parameters:
32
+ # * *iNewDirsList* (<em>list<String></em>): List of directories
33
+ def setSystemExePath(iNewDirsList)
34
+ ENV['PATH'] = iNewDirsList.join(';')
35
+ end
36
+
37
+ # Return the list of file extensions that might be discretely happened to executable files.
38
+ # This is the optional extensions that can be happened when invoked from a terminal.
39
+ #
40
+ # Return:
41
+ # * <em>list<String></em>: List of extensions (including .)
42
+ def getDiscreteExeExtensions
43
+ return [ '.exe', '.com', '.bat' ]
44
+ end
45
+
46
+ # Return the list of directories where we look for libraries
47
+ #
48
+ # Return:
49
+ # * <em>list<String></em>: List of directories
50
+ def getSystemLibsPath
51
+ return ENV['PATH'].split(';')
52
+ end
53
+
54
+ # Set the list of directories where we look for libraries
55
+ #
56
+ # Parameters:
57
+ # * *iNewDirsList* (<em>list<String></em>): List of directories
58
+ def setSystemLibsPath(iNewDirsList)
59
+ ENV['PATH'] = iNewDirsList.join(';')
60
+ end
61
+
62
+ # This method sends a message (platform dependent) to the user, without the use of wxruby
63
+ #
64
+ # Parameters:
65
+ # * *iMsg* (_String_): The message to display
66
+ def sendMsg(iMsg)
67
+ # !!! iMsg must not be longer than 256 characters
68
+ if (iMsg.size > 256)
69
+ system("msg \"#{ENV['USERNAME']}\" /W #{iMsg[0..255]}")
70
+ else
71
+ system("msg \"#{ENV['USERNAME']}\" /W #{iMsg}")
72
+ end
73
+ end
74
+
75
+ # Execute a Shell command.
76
+ # Do not wait for its termination.
77
+ #
78
+ # Parameters:
79
+ # * *iCmd* (_String_): The command to execute
80
+ # * *iInTerminal* (_Boolean_): Do we execute this command in a separate terminal ?
81
+ # Return:
82
+ # * _Exception_: Error, or nil if success
83
+ def execShellCmdNoWait(iCmd, iInTerminal)
84
+ rException = nil
85
+
86
+ if (iInTerminal)
87
+ if (!system("start cmd /c #{iCmd}"))
88
+ rException = RuntimeError.new
89
+ end
90
+ else
91
+ begin
92
+ IO.popen(iCmd)
93
+ rescue Exception
94
+ rException = $!
95
+ end
96
+ end
97
+
98
+ return rException
99
+ end
100
+
101
+ # Execute a given URL to be launched in a browser
102
+ #
103
+ # Parameters:
104
+ # * *iURL* (_String_): The URL to launch
105
+ # Return:
106
+ # * _String_: Error message, or nil if success
107
+ def launchURL(iURL)
108
+ rError = nil
109
+
110
+ # We must put " around the URL after the http:// prefix, as otherwise & symbol will not be recognized
111
+ lMatch = iURL.match(/^(http|https|ftp|ftps):\/\/(.*)$/)
112
+ if (lMatch == nil)
113
+ rError = "URL #{iURL} is not one of http://, https://, ftp:// or ftps://. Can't invoke it."
114
+ else
115
+ IO.popen("start #{lMatch[1]}://\"#{lMatch[2]}\"")
116
+ end
117
+
118
+ return rError
119
+ end
120
+
121
+ # Get file extensions specifics to executable files
122
+ #
123
+ # Return:
124
+ # * <em>list<String></em>: List of extensions (including . character). It can be empty.
125
+ def getExecutableExtensions
126
+ return [ '.exe', '.com', '.bat' ]
127
+ end
128
+
129
+ # Get prohibited characters from file names
130
+ #
131
+ # Return:
132
+ # * _String_: String of prohibited characters in file names
133
+ def getProhibitedFileNamesCharacters
134
+ return '\\/:*?"<>|'
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+
141
+ end