rufus-lua-win 5.1.5

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.
Files changed (459) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +69 -0
  6. data/Rakefile +1 -0
  7. data/lib/rufus/lua/win.rb +18 -0
  8. data/lib/rufus/lua/win/version.rb +7 -0
  9. data/rufus-lua-win.gemspec +23 -0
  10. data/vendor/lua/bin/liblua.dll +0 -0
  11. data/vendor/lua/lib/lua/LuaXml.lua +119 -0
  12. data/vendor/lua/lib/lua/alien.lua +250 -0
  13. data/vendor/lua/lib/lua/alien/core.dll +0 -0
  14. data/vendor/lua/lib/lua/alien/struct.dll +0 -0
  15. data/vendor/lua/lib/lua/base.lua +536 -0
  16. data/vendor/lua/lib/lua/bin.lua +20 -0
  17. data/vendor/lua/lib/lua/bit.dll +0 -0
  18. data/vendor/lua/lib/lua/cdlua.dll +0 -0
  19. data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
  20. data/vendor/lua/lib/lua/cdluagl.dll +0 -0
  21. data/vendor/lua/lib/lua/cdluaim.dll +0 -0
  22. data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
  23. data/vendor/lua/lib/lua/copas.lua +543 -0
  24. data/vendor/lua/lib/lua/coxpcall.lua +57 -0
  25. data/vendor/lua/lib/lua/date.lua +745 -0
  26. data/vendor/lua/lib/lua/debug_ext.lua +84 -0
  27. data/vendor/lua/lib/lua/debug_init.lua +2 -0
  28. data/vendor/lua/lib/lua/des56.dll +0 -0
  29. data/vendor/lua/lib/lua/dist/config.lua +109 -0
  30. data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
  31. data/vendor/lua/lib/lua/dist/depends.lua +601 -0
  32. data/vendor/lua/lib/lua/dist/git.lua +307 -0
  33. data/vendor/lua/lib/lua/dist/init.lua +278 -0
  34. data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
  35. data/vendor/lua/lib/lua/dist/package.lua +583 -0
  36. data/vendor/lua/lib/lua/dist/sys.lua +367 -0
  37. data/vendor/lua/lib/lua/dist/utils.lua +130 -0
  38. data/vendor/lua/lib/lua/ex.dll +0 -0
  39. data/vendor/lua/lib/lua/fstable.lua +116 -0
  40. data/vendor/lua/lib/lua/getopt.lua +273 -0
  41. data/vendor/lua/lib/lua/git.lua +5 -0
  42. data/vendor/lua/lib/lua/git/core.dll +0 -0
  43. data/vendor/lua/lib/lua/git/objects.lua +121 -0
  44. data/vendor/lua/lib/lua/git/pack.lua +316 -0
  45. data/vendor/lua/lib/lua/git/protocol.lua +188 -0
  46. data/vendor/lua/lib/lua/git/repo.lua +283 -0
  47. data/vendor/lua/lib/lua/git/util.lua +233 -0
  48. data/vendor/lua/lib/lua/gzio.dll +0 -0
  49. data/vendor/lua/lib/lua/gzip.lua +81 -0
  50. data/vendor/lua/lib/lua/iconv.dll +0 -0
  51. data/vendor/lua/lib/lua/imlua.dll +0 -0
  52. data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
  53. data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
  54. data/vendor/lua/lib/lua/imlua_process.dll +0 -0
  55. data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
  56. data/vendor/lua/lib/lua/io_ext.lua +115 -0
  57. data/vendor/lua/lib/lua/iuplua.dll +0 -0
  58. data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
  59. data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
  60. data/vendor/lua/lib/lua/iupluacd.dll +0 -0
  61. data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
  62. data/vendor/lua/lib/lua/iupluagl.dll +0 -0
  63. data/vendor/lua/lib/lua/iupluaim.dll +0 -0
  64. data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
  65. data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
  66. data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
  67. data/vendor/lua/lib/lua/lanes.lua +591 -0
  68. data/vendor/lua/lib/lua/lanes/core.dll +0 -0
  69. data/vendor/lua/lib/lua/lcs.lua +55 -0
  70. data/vendor/lua/lib/lua/lemock.lua +659 -0
  71. data/vendor/lua/lib/lua/lfs.dll +0 -0
  72. data/vendor/lua/lib/lua/list.lua +375 -0
  73. data/vendor/lua/lib/lua/logging.lua +189 -0
  74. data/vendor/lua/lib/lua/logging/console.lua +22 -0
  75. data/vendor/lua/lib/lua/logging/email.lua +44 -0
  76. data/vendor/lua/lib/lua/logging/file.lua +55 -0
  77. data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
  78. data/vendor/lua/lib/lua/logging/socket.lua +35 -0
  79. data/vendor/lua/lib/lua/logging/sql.lua +64 -0
  80. data/vendor/lua/lib/lua/loop/base.lua +68 -0
  81. data/vendor/lua/lib/lua/loop/cached.lua +312 -0
  82. data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
  83. data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
  84. data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
  85. data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
  86. data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
  87. data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
  88. data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
  89. data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
  90. data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
  91. data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
  92. data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
  93. data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
  94. data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
  95. data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
  96. data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
  97. data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
  98. data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
  99. data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
  100. data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
  101. data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
  102. data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
  103. data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
  104. data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
  105. data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
  106. data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
  107. data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
  108. data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
  109. data/vendor/lua/lib/lua/loop/simple.lua +75 -0
  110. data/vendor/lua/lib/lua/loop/table.lua +71 -0
  111. data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
  112. data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
  113. data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
  114. data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
  115. data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
  116. data/vendor/lua/lib/lua/lpeg.dll +0 -0
  117. data/vendor/lua/lib/lua/ltn12.lua +292 -0
  118. data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
  119. data/vendor/lua/lib/lua/luacurl.dll +0 -0
  120. data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
  121. data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
  122. data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
  123. data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
  124. data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
  125. data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
  126. data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
  127. data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
  128. data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
  129. data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
  130. data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
  131. data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
  132. data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
  133. data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
  134. data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
  135. data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
  136. data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
  137. data/vendor/lua/lib/lua/luagl.dll +0 -0
  138. data/vendor/lua/lib/lua/luaglu.dll +0 -0
  139. data/vendor/lua/lib/lua/luaidl.lua +113 -0
  140. data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
  141. data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
  142. data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
  143. data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
  144. data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
  145. data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
  146. data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
  147. data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
  148. data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
  149. data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
  150. data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
  151. data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
  152. data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
  153. data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
  154. data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
  155. data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
  156. data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
  157. data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
  158. data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
  159. data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
  160. data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
  161. data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
  162. data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
  163. data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
  164. data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
  165. data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
  166. data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
  167. data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
  168. data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
  169. data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
  170. data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
  171. data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
  172. data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
  173. data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
  174. data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
  175. data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
  176. data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
  177. data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
  178. data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
  179. data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
  180. data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
  181. data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
  182. data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
  183. data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
  184. data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
  185. data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
  186. data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
  187. data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
  188. data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
  189. data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
  190. data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
  191. data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
  192. data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
  193. data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
  194. data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
  195. data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
  196. data/vendor/lua/lib/lua/luars232.dll +0 -0
  197. data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
  198. data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
  199. data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
  200. data/vendor/lua/lib/lua/luaunit.lua +601 -0
  201. data/vendor/lua/lib/lua/lxp.dll +0 -0
  202. data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
  203. data/vendor/lua/lib/lua/math_ext.lua +27 -0
  204. data/vendor/lua/lib/lua/mbox.lua +53 -0
  205. data/vendor/lua/lib/lua/md5.lua +19 -0
  206. data/vendor/lua/lib/lua/md5/core.dll +0 -0
  207. data/vendor/lua/lib/lua/metalua.lua +0 -0
  208. data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
  209. data/vendor/lua/lib/lua/metalua/base.lua +104 -0
  210. data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
  211. data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
  212. data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
  213. data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
  214. data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
  215. data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
  216. data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
  217. data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
  218. data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
  219. data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
  220. data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
  221. data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
  222. data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
  223. data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
  224. data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
  225. data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
  226. data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
  227. data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
  228. data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
  229. data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
  230. data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
  231. data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
  232. data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
  233. data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
  234. data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
  235. data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
  236. data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
  237. data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
  238. data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
  239. data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
  240. data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
  241. data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
  242. data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
  243. data/vendor/lua/lib/lua/mime.lua +87 -0
  244. data/vendor/lua/lib/lua/mime/core.dll +0 -0
  245. data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
  246. data/vendor/lua/lib/lua/modules.lua +16 -0
  247. data/vendor/lua/lib/lua/object.lua +56 -0
  248. data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
  249. data/vendor/lua/lib/lua/oil/arch.lua +27 -0
  250. data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
  251. data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
  252. data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
  253. data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
  254. data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
  255. data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
  256. data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
  257. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
  258. data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
  259. data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
  260. data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
  261. data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
  262. data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
  263. data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
  264. data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
  265. data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
  266. data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
  267. data/vendor/lua/lib/lua/oil/assert.lua +87 -0
  268. data/vendor/lua/lib/lua/oil/builder.lua +45 -0
  269. data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
  270. data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
  271. data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
  272. data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
  273. data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
  274. data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
  275. data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
  276. data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
  277. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
  278. data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
  279. data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
  280. data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
  281. data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
  282. data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
  283. data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
  284. data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
  285. data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
  286. data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
  287. data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
  288. data/vendor/lua/lib/lua/oil/compat.lua +846 -0
  289. data/vendor/lua/lib/lua/oil/component.lua +1 -0
  290. data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
  291. data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
  292. data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
  293. data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
  294. data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
  295. data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
  296. data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
  297. data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
  298. data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
  299. data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
  300. data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
  301. data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
  302. data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
  303. data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
  304. data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
  305. data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
  306. data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
  307. data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
  308. data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
  309. data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
  310. data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
  311. data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
  312. data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
  313. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
  314. data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
  315. data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
  316. data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
  317. data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
  318. data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
  319. data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
  320. data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
  321. data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
  322. data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
  323. data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
  324. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
  325. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
  326. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
  327. data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
  328. data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
  329. data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
  330. data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
  331. data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
  332. data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
  333. data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
  334. data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
  335. data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
  336. data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
  337. data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
  338. data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
  339. data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
  340. data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
  341. data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
  342. data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
  343. data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
  344. data/vendor/lua/lib/lua/oil/oo.lua +1 -0
  345. data/vendor/lua/lib/lua/oil/port.lua +1 -0
  346. data/vendor/lua/lib/lua/oil/properties.lua +57 -0
  347. data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
  348. data/vendor/lua/lib/lua/package_ext.lua +15 -0
  349. data/vendor/lua/lib/lua/parser.lua +268 -0
  350. data/vendor/lua/lib/lua/pl/Date.lua +555 -0
  351. data/vendor/lua/lib/lua/pl/List.lua +613 -0
  352. data/vendor/lua/lib/lua/pl/Map.lua +113 -0
  353. data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
  354. data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
  355. data/vendor/lua/lib/lua/pl/Set.lua +153 -0
  356. data/vendor/lua/lib/lua/pl/app.lua +165 -0
  357. data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
  358. data/vendor/lua/lib/lua/pl/class.lua +180 -0
  359. data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
  360. data/vendor/lua/lib/lua/pl/config.lua +176 -0
  361. data/vendor/lua/lib/lua/pl/data.lua +606 -0
  362. data/vendor/lua/lib/lua/pl/dir.lua +475 -0
  363. data/vendor/lua/lib/lua/pl/file.lua +70 -0
  364. data/vendor/lua/lib/lua/pl/func.lua +376 -0
  365. data/vendor/lua/lib/lua/pl/init.lua +68 -0
  366. data/vendor/lua/lib/lua/pl/input.lua +173 -0
  367. data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
  368. data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
  369. data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
  370. data/vendor/lua/lib/lua/pl/operator.lua +201 -0
  371. data/vendor/lua/lib/lua/pl/path.lua +398 -0
  372. data/vendor/lua/lib/lua/pl/permute.lua +63 -0
  373. data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
  374. data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
  375. data/vendor/lua/lib/lua/pl/seq.lua +551 -0
  376. data/vendor/lua/lib/lua/pl/sip.lua +344 -0
  377. data/vendor/lua/lib/lua/pl/strict.lua +70 -0
  378. data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
  379. data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
  380. data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
  381. data/vendor/lua/lib/lua/pl/template.lua +103 -0
  382. data/vendor/lua/lib/lua/pl/test.lua +135 -0
  383. data/vendor/lua/lib/lua/pl/text.lua +243 -0
  384. data/vendor/lua/lib/lua/pl/utils.lua +550 -0
  385. data/vendor/lua/lib/lua/pl/xml.lua +689 -0
  386. data/vendor/lua/lib/lua/profiler.dll +0 -0
  387. data/vendor/lua/lib/lua/re.lua +248 -0
  388. data/vendor/lua/lib/lua/rex_onig.dll +0 -0
  389. data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
  390. data/vendor/lua/lib/lua/rex_posix.dll +0 -0
  391. data/vendor/lua/lib/lua/rings.dll +0 -0
  392. data/vendor/lua/lib/lua/serialize.lua +193 -0
  393. data/vendor/lua/lib/lua/set.lua +149 -0
  394. data/vendor/lua/lib/lua/socket.lua +133 -0
  395. data/vendor/lua/lib/lua/socket/core.dll +0 -0
  396. data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
  397. data/vendor/lua/lib/lua/socket/http.lua +350 -0
  398. data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
  399. data/vendor/lua/lib/lua/socket/tp.lua +123 -0
  400. data/vendor/lua/lib/lua/socket/url.lua +297 -0
  401. data/vendor/lua/lib/lua/ssl.dll +0 -0
  402. data/vendor/lua/lib/lua/ssl.lua +93 -0
  403. data/vendor/lua/lib/lua/ssl/https.lua +138 -0
  404. data/vendor/lua/lib/lua/stable.lua +28 -0
  405. data/vendor/lua/lib/lua/std.lua +16 -0
  406. data/vendor/lua/lib/lua/strbuf.lua +32 -0
  407. data/vendor/lua/lib/lua/strict.lua +45 -0
  408. data/vendor/lua/lib/lua/string_ext.lua +274 -0
  409. data/vendor/lua/lib/lua/table_ext.lua +117 -0
  410. data/vendor/lua/lib/lua/tar.lua +262 -0
  411. data/vendor/lua/lib/lua/task.dll +0 -0
  412. data/vendor/lua/lib/lua/tree.lua +81 -0
  413. data/vendor/lua/lib/lua/unicode.dll +0 -0
  414. data/vendor/lua/lib/lua/verbose_require.lua +11 -0
  415. data/vendor/lua/lib/lua/vstruct.lua +86 -0
  416. data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
  417. data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
  418. data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
  419. data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
  420. data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
  421. data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
  422. data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
  423. data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
  424. data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
  425. data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
  426. data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
  427. data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
  428. data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
  429. data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
  430. data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
  431. data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
  432. data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
  433. data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
  434. data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
  435. data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
  436. data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
  437. data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
  438. data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
  439. data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
  440. data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
  441. data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
  442. data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
  443. data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
  444. data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
  445. data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
  446. data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
  447. data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
  448. data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
  449. data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
  450. data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
  451. data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
  452. data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
  453. data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
  454. data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
  455. data/vendor/lua/lib/lua/wx.dll +0 -0
  456. data/vendor/lua/lib/lua/xml.lua +75 -0
  457. data/vendor/lua/lib/lua/zip.dll +0 -0
  458. data/vendor/lua/lib/lua/zlib.dll +0 -0
  459. metadata +529 -0
@@ -0,0 +1,367 @@
1
+ -- System functions
2
+
3
+ module ("dist.sys", package.seeall)
4
+
5
+ local cfg = require "dist.config"
6
+ local utils = require "dist.utils"
7
+ local lfs = require "lfs"
8
+
9
+ -- Return the path separator according to the platform.
10
+ function path_separator()
11
+ if cfg.arch == "Windows" then
12
+ return "\\"
13
+ else
14
+ return "/"
15
+ end
16
+ end
17
+
18
+ -- Return path with wrong separators replaced with the right ones.
19
+ function check_separators(path)
20
+ assert(type(path) == "string", "sys.check_separators: Argument 'path' is not a string.")
21
+ if cfg.arch == "Windows" then
22
+ return path:gsub("/", "\\")
23
+ else
24
+ return path
25
+ end
26
+ end
27
+
28
+ -- Return the path with the unnecessary trailing separator removed.
29
+ function remove_trailing(path)
30
+ assert(type(path) == "string", "sys.remove_trailing: Argument 'path' is not a string.")
31
+ if path:sub(-1) == path_separator() and not is_root(path) then path = path:sub(1,-2) end
32
+ return path
33
+ end
34
+
35
+ -- Return the path with the all occurences of '/.' or '\.' (representing
36
+ -- the current directory) removed.
37
+ function remove_curr_dir_dots(path)
38
+ assert(type(path) == "string", "sys.remove_curr_dir_dots: Argument 'path' is not a string.")
39
+ while path:match(path_separator() .. "%." .. path_separator()) do -- match("/%./")
40
+ path = path:gsub(path_separator() .. "%." .. path_separator(), path_separator()) -- gsub("/%./", "/")
41
+ end
42
+ return path:gsub(path_separator() .. "%.$", "") -- gsub("/%.$", "")
43
+ end
44
+
45
+ -- Return string argument quoted for a command line usage.
46
+ function quote(argument)
47
+ assert(type(argument) == "string", "sys.quote: Argument 'argument' is not a string.")
48
+
49
+ -- replace '/' path separators for '\' on Windows
50
+ if cfg.arch == "Windows" and argument:match("^[%u%U.]?:?[/\\].*") then
51
+ argument = argument:gsub("//","\\"):gsub("/","\\")
52
+ end
53
+
54
+ -- Windows doesn't recognize paths starting with two slashes or backslashes
55
+ -- so we double every backslash except for the first one
56
+ if cfg.arch == "Windows" and argument:match("^[/\\].*") then
57
+ local prefix = argument:sub(1,1)
58
+ argument = argument:sub(2):gsub("\\", "\\\\")
59
+ argument = prefix .. argument
60
+ else
61
+ argument = argument:gsub("\\", "\\\\")
62
+ end
63
+ argument = argument:gsub('"', '\\"')
64
+
65
+ return '"' .. argument .. '"'
66
+ end
67
+
68
+ -- Run the system command (in current directory).
69
+ -- Return true on success, nil on fail and log string.
70
+ -- When optional 'force_verbose' parameter is true, then the output will be shown
71
+ -- even when not in debug or verbose mode.
72
+ function exec(command, force_verbose)
73
+ force_verbose = force_verbose or false
74
+ assert(type(command) == "string", "sys.exec: Argument 'command' is not a string.")
75
+ assert(type(force_verbose) == "boolean", "sys.exec: Argument 'force_verbose' is not a boolean.")
76
+
77
+ if not (cfg.verbose or cfg.debug or force_verbose) then
78
+ if cfg.arch == "Windows" then
79
+ command = command .. " > NUL 2>&1"
80
+ else
81
+ command = command .. " > /dev/null 2>&1"
82
+ end
83
+ end
84
+
85
+ if cfg.debug then print("Executing the command: " .. command) end
86
+ local ok = os.execute(command)
87
+
88
+ if ok ~= 0 then
89
+ return nil, "Error when running the command: " .. command
90
+ else
91
+ return true, "Sucessfully executed the command: " .. command
92
+ end
93
+ end
94
+
95
+ -- Execute the 'command' and returns its output as a string.
96
+ function capture_output(command)
97
+ assert(type(command) == "string", "sys.exec: Argument 'command' is not a string.")
98
+
99
+ local executed, err = io.popen(command, "r")
100
+ if not executed then return nil, "Error running the command '" .. command .. "':" .. err end
101
+
102
+ local captured, err = executed:read("*a")
103
+ if not captured then return nil, "Error reading the output of command '" .. command .. "':" .. err end
104
+
105
+ executed:close()
106
+ return captured
107
+ end
108
+
109
+ -- Return whether the path is a root.
110
+ function is_root(path)
111
+ assert(type(path) == "string", "sys.is_root: Argument 'path' is not a string.")
112
+ return utils.to_boolean(path:find("^[%u%U.]?:?[/\\]$"))
113
+ end
114
+
115
+ -- Return whether the path is absolute.
116
+ function is_abs(path)
117
+ assert(type(path) == "string", "sys.is_abs: Argument 'path' is not a string.")
118
+ return utils.to_boolean(path:find("^[%u%U.]?:?[/\\].*$"))
119
+ end
120
+
121
+ -- Return whether the specified file or directory exists.
122
+ function exists(path)
123
+ assert(type(path) == "string", "sys.exists: Argument 'path' is not a string.")
124
+ local attr, err = lfs.attributes(path)
125
+ return utils.to_boolean(attr), err
126
+ end
127
+
128
+ -- Return whether the 'file' exists and is a file.
129
+ function is_file(file)
130
+ assert(type(file) == "string", "sys.is_file: Argument 'file' is not a string.")
131
+ return lfs.attributes(file, "mode") == "file"
132
+ end
133
+
134
+ -- Return whether the 'dir' exists and is a directory.
135
+ function is_dir(dir)
136
+ assert(type(dir) == "string", "sys.is_dir: Argument 'dir' is not a string.")
137
+ return lfs.attributes(dir, "mode") == "directory"
138
+ end
139
+
140
+ -- Return the current working directory
141
+ function current_dir()
142
+ local dir, err = lfs.currentdir()
143
+ if not dir then return nil, err end
144
+ return dir
145
+ end
146
+
147
+ -- Return an iterator over the directory 'dir'.
148
+ -- If 'dir' doesn't exist or is not a directory, return nil and error message.
149
+ function get_directory(dir)
150
+ dir = dir or current_dir()
151
+ assert(type(dir) == "string", "sys.get_directory: Argument 'dir' is not a string.")
152
+ if is_dir(dir) then
153
+ return lfs.dir(dir)
154
+ else
155
+ return nil, "Error: '".. dir .. "' is not a directory."
156
+ end
157
+ end
158
+
159
+ -- Extract file or directory name from its path.
160
+ function extract_name(path)
161
+ assert(type(path) == "string", "sys.extract_name: Argument 'path' is not a string.")
162
+ if is_root(path) then return path end
163
+
164
+ path = remove_trailing(path)
165
+ path = path:gsub("^.*" .. path_separator(), "")
166
+ return path
167
+ end
168
+
169
+ -- Return parent directory of the 'path' or nil if there's no parent directory.
170
+ -- If 'path' is a path to file, return the directory the file is in.
171
+ function parent_dir(path)
172
+ assert(type(path) == "string", "sys.parent_dir: Argument 'path' is not a string.")
173
+ path = remove_curr_dir_dots(path)
174
+ path = remove_trailing(path)
175
+
176
+ local dir = path:gsub(utils.escape_magic(extract_name(path)) .. "$", "")
177
+ if dir == "" then
178
+ return nil
179
+ else
180
+ return make_path(dir)
181
+ end
182
+ end
183
+
184
+ -- Returns the table of all parent directories of 'path' up to the directory
185
+ -- specified by 'boundary_path' (exclusive).
186
+ function parents_up_to(path, boundary_path)
187
+ assert(type(path) == "string", "sys.parents_up_to: Argument 'path' is not a string.")
188
+ assert(type(boundary_path) == "string", "sys.parents_up_to: Argument 'boundary_path' is not a string.")
189
+ boundary_path = remove_trailing(boundary_path)
190
+
191
+ -- helper function to recursively collect the parent directories
192
+ local function collect_parents(_path, _parents)
193
+ local _parent = parent_dir(_path)
194
+ if _parent and _parent ~= boundary_path then
195
+ table.insert(_parents, _parent)
196
+ return collect_parents(_parent, _parents)
197
+ else
198
+ return _parents
199
+ end
200
+ end
201
+
202
+ return collect_parents(path, {})
203
+ end
204
+
205
+ -- Compose path composed from specified parts or current
206
+ -- working directory when no part specified.
207
+ function make_path(...)
208
+ local parts = arg
209
+ assert(type(parts) == "table", "sys.make_path: Argument 'parts' is not a table.")
210
+
211
+ local path, err
212
+ if parts.n == 0 then
213
+ path, err = current_dir()
214
+ else
215
+ path, err = table.concat(parts, path_separator())
216
+ end
217
+ if not path then return nil, err end
218
+
219
+ -- squeeze repeated occurences of a file separator
220
+ path = path:gsub(path_separator() .. "+", path_separator())
221
+
222
+ -- remove unnecessary trailing path separator
223
+ path = remove_trailing(path)
224
+
225
+ return path
226
+ end
227
+
228
+ -- Return absolute path from 'path'
229
+ function abs_path(path)
230
+ assert(type(path) == "string", "sys.get_abs_path: Argument 'path' is not a string.")
231
+ if is_abs(path) then return path end
232
+
233
+ local cur_dir, err = current_dir()
234
+ if not cur_dir then return nil, err end
235
+
236
+ return make_path(cur_dir, path)
237
+ end
238
+
239
+ -- Return table of all paths in 'dir'
240
+ function get_file_list(dir)
241
+ dir = dir or current_dir()
242
+ assert(type(dir) == "string", "sys.get_directory: Argument 'dir' is not a string.")
243
+ if not exists(dir) then return nil, "Error getting file list of '" .. dir .. "': directory doesn't exist." end
244
+
245
+ local function collect(path, all_paths)
246
+ for item in get_directory(path) do
247
+
248
+ local item_path = make_path(path, item)
249
+ local _, last = item_path:find(dir .. path_separator(), 1, true)
250
+ local path_to_insert = item_path:sub(last + 1)
251
+
252
+ if is_file(item_path) then
253
+ table.insert(all_paths, path_to_insert)
254
+ elseif is_dir(item_path) and item ~= "." and item ~= ".." then
255
+ table.insert(all_paths, path_to_insert)
256
+ collect(item_path, all_paths)
257
+ end
258
+ end
259
+ end
260
+
261
+ local all_paths = {}
262
+ collect(dir, all_paths)
263
+
264
+ return all_paths
265
+ end
266
+
267
+ -- Return time of the last modification of 'file'.
268
+ function last_modification_time(file)
269
+ assert(type(file) == "string", "sys.last_modification_time: Argument 'file' is not a string.")
270
+ return lfs.attributes(file, "modification")
271
+ end
272
+
273
+ -- Return the current time (in seconds since epoch).
274
+ function current_time()
275
+ return os.time()
276
+ end
277
+
278
+ -- Change the current working directory and return 'true' and previous working
279
+ -- directory on success and 'nil' and error message on error.
280
+ function change_dir(dir_name)
281
+ assert(type(dir_name) == "string", "sys.change_dir: Argument 'dir_name' is not a string.")
282
+ local prev_dir = current_dir()
283
+ local ok, err = lfs.chdir(dir_name)
284
+ if ok then
285
+ return ok, prev_dir
286
+ else
287
+ return nil, err
288
+ end
289
+ end
290
+
291
+ -- Make a new directory, making also all of its parent directories that doesn't exist.
292
+ function make_dir(dir_name)
293
+ assert(type(dir_name) == "string", "sys.make_dir: Argument 'dir_name' is not a string.")
294
+ if exists(dir_name) then
295
+ return true
296
+ else
297
+ local par_dir = parent_dir(dir_name)
298
+ if par_dir then
299
+ local ok, err = make_dir(par_dir)
300
+ if not ok then return nil, err end
301
+ end
302
+ return lfs.mkdir(dir_name)
303
+ end
304
+ end
305
+
306
+ -- Move file (or directory) to the destination directory
307
+ function move_to(file_or_dir, dest_dir)
308
+ assert(type(file_or_dir) == "string", "sys.move_to: Argument 'file_or_dir' is not a string.")
309
+ assert(type(dest_dir) == "string", "sys.move_to: Argument 'dest_dir' is not a string.")
310
+ assert(is_dir(dest_dir), "sys.move_to: destination '" .. dest_dir .."' is not a directory.")
311
+
312
+ -- Extract file/dir name from its path
313
+ local file_or_dir_name = extract_name(file_or_dir)
314
+
315
+ return os.rename(file_or_dir, make_path(dest_dir, file_or_dir_name))
316
+ end
317
+
318
+ -- rename file (or directory) to the new name.
319
+ function rename(file, new_name)
320
+ assert(type(file) == "string", "sys.rename: Argument 'file' is not a string.")
321
+ assert(type(new_name) == "string", "sys.rename: Argument 'new_name' is not a string.")
322
+ assert(not exists(new_name), "sys.rename: desired filename already exists.")
323
+
324
+ return os.rename(file, new_name)
325
+ end
326
+
327
+ -- Copy 'source' to the destination directory 'dest_dir'.
328
+ -- If 'source' is a directory, then recursive copying is used.
329
+ -- For non-recursive copying of directories use the make_dir() function.
330
+ function copy(source, dest_dir)
331
+ assert(type(source) == "string", "sys.copy: Argument 'file_or_dir' is not a string.")
332
+ assert(type(dest_dir) == "string", "sys.copy: Argument 'dest_dir' is not a string.")
333
+ assert(is_dir(dest_dir), "sys.copy: destination '" .. dest_dir .."' is not a directory.")
334
+
335
+ if cfg.arch == "Windows" then
336
+ if is_dir(source) then
337
+ make_dir(make_path(dest_dir, extract_name(source)))
338
+ return exec("xcopy /E /I /Y /Q " .. quote(source) .. " " .. quote(dest_dir .. "\\" .. extract_name(source)))
339
+ else
340
+ return exec("copy /Y " .. quote(source) .. " " .. quote(dest_dir))
341
+ end
342
+ else
343
+ if is_dir(source) then
344
+ return exec("cp -fRH " .. quote(source) .. " " .. quote(dest_dir))
345
+ else
346
+ return exec("cp -fH " .. quote(source) .. " " .. quote(dest_dir))
347
+ end
348
+ end
349
+ end
350
+
351
+ -- Delete the specified file or directory
352
+ function delete(path)
353
+ assert(type(path) == "string", "sys.delete: Argument 'path' is not a string.")
354
+ assert(is_abs(path), "sys.delete: Argument 'path' is not an absolute path.")
355
+
356
+ if cfg.arch == "Windows" then
357
+ if not exists(path) then
358
+ return true
359
+ elseif is_file(path) then
360
+ return os.remove(path)
361
+ else
362
+ return exec("rd /S /Q " .. quote(path))
363
+ end
364
+ else
365
+ return exec("rm -rf " .. quote(path))
366
+ end
367
+ end
@@ -0,0 +1,130 @@
1
+ -- System functions
2
+
3
+ module ("dist.utils", package.seeall)
4
+
5
+ local sys = require "dist.sys"
6
+
7
+ -- Returns a deep copy of 'table' with reference to the same metadata table.
8
+ -- Source: http://lua-users.org/wiki/CopyTable
9
+ function deepcopy(object)
10
+ local lookup_table = {}
11
+ local function _copy(object)
12
+ if type(object) ~= "table" then
13
+ return object
14
+ elseif lookup_table[object] then
15
+ return lookup_table[object]
16
+ end
17
+ local new_table = {}
18
+ lookup_table[object] = new_table
19
+ for index, value in pairs(object) do
20
+ new_table[_copy(index)] = _copy(value)
21
+ end
22
+ return setmetatable(new_table, getmetatable(object))
23
+ end
24
+ return _copy(object)
25
+ end
26
+
27
+ -- Return deep copy of table 'array', containing only items for which 'predicate_fn' returns true.
28
+ function filter(array, predicate_fn)
29
+ assert(type(array) == "table", "utils.filter: Argument 'array' is not a table.")
30
+ assert(type(predicate_fn) == "function", "utils.filter: Argument 'predicate_fn' is not a function.")
31
+ local tbl = {}
32
+ for _,v in pairs(array) do
33
+ if predicate_fn(v) == true then table.insert(tbl, deepcopy(v)) end
34
+ end
35
+ return tbl
36
+ end
37
+
38
+ -- Return deep copy of table 'array', sorted according to the 'compare_fn' function.
39
+ function sort(array, compare_fn)
40
+ assert(type(array) == "table", "utils.sort: Argument 'array' is not a table.")
41
+ assert(type(compare_fn) == "function", "utils.sort: Argument 'compare_fn' is not a function.")
42
+ local tbl = deepcopy(array)
43
+ table.sort(tbl, compare_fn)
44
+ return tbl
45
+ end
46
+
47
+ -- Return whether the 'value' is in the table 'tbl'.
48
+ function contains(tbl, value)
49
+ assert(type(tbl) == "table", "utils.contains: Argument 'tbl' is not a table.")
50
+ for _,v in pairs(tbl) do
51
+ if v == value then return true end
52
+ end
53
+ return false
54
+ end
55
+
56
+ -- Return single line string consisting of values in 'tbl' separated by comma.
57
+ -- Used for printing the dependencies/provides/conflicts.
58
+ function table_tostring(tbl, label)
59
+ assert(type(tbl) == "table", "utils.table_tostring: Argument 'tbl' is not a table.")
60
+ local str = ""
61
+ for k,v in pairs(tbl) do
62
+ if type(v) == "table" then
63
+ str = str .. table_tostring(v, k)
64
+ else
65
+ if label ~= nil then
66
+ str = str .. tostring(v) .. " [" .. tostring(label) .. "]" .. ", "
67
+ else
68
+ str = str .. tostring(v) .. ", "
69
+ end
70
+ end
71
+ end
72
+ return str
73
+ end
74
+
75
+ -- Return table made up from values of the string, separated by separator.
76
+ function make_table(str, separator)
77
+ assert(type(str) == "string", "utils.make_table: Argument 'str' is not a string.")
78
+ assert(type(separator) == "string", "utils.make_table: Argument 'separator' is not a string.")
79
+
80
+ local tbl = {}
81
+ for val in str:gmatch("(.-)" .. separator) do
82
+ table.insert(tbl, val)
83
+ end
84
+ local last_val = str:gsub(".-" .. separator, "")
85
+ if last_val and last_val ~= "" then
86
+ table.insert(tbl, last_val)
87
+ end
88
+ return tbl
89
+ end
90
+
91
+ -- Return whether the 'cache_timeout' for 'file' has expired.
92
+ function cache_timeout_expired(cache_timeout, file)
93
+ assert(type(cache_timeout) == "number", "utils.cache_timeout_expired: Argument 'cache_timeout' is not a number.")
94
+ assert(type(file) == "string", "utils.cache_timeout_expired: Argument 'file' is not a string.")
95
+ return sys.last_modification_time(file) + cache_timeout < sys.current_time()
96
+ end
97
+
98
+ -- Return the string 'str', with all magic (pattern) characters escaped.
99
+ function escape_magic(str)
100
+ assert(type(str) == "string", "utils.escape: Argument 'str' is not a string.")
101
+ local escaped = str:gsub('[%-%.%+%[%]%(%)%^%%%?%*%^%$]','%%%1')
102
+ return escaped
103
+ end
104
+
105
+ -- Return the boolean representation of an 'arg'.
106
+ function to_boolean(arg)
107
+ return not not arg
108
+ end
109
+
110
+ -- Return pseudo-random number in range [0, 1], [1, n] or [n, m].
111
+ function rand(...)
112
+ math.randomseed(os.time())
113
+ return math.random(...)
114
+ end
115
+
116
+ -- Perform check of system dependency, which isn't provided in the LuaDist
117
+ -- installation itself and if it is missing, print instructions how
118
+ -- to install it. The 'command' is used for testing, 'name' when printing
119
+ -- information to the user.
120
+ function system_dependency_available(name, command)
121
+ assert(type(name) == "string", "utils.system_dependency_available: Argument 'name' is not a string.")
122
+ assert(type(command) == "string", "utils.system_dependency_available: Argument 'command' is not a string.")
123
+
124
+ if not sys.exec(command) then
125
+ print("Error: command '" .. name .. "' not found on system. See installation instructions at\nhttps://github.com/LuaDist/Repository/wiki/Installation-of-System-Dependencies")
126
+ return false
127
+ end
128
+
129
+ return true
130
+ end