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,283 @@
1
+ local util = require 'git.util'
2
+ local objects = require 'git.objects'
3
+ local core = require 'git.core'
4
+ local pack = require 'git.pack'
5
+
6
+ local join_path = util.join_path
7
+ local decompressed = util.decompressed
8
+ local read_until_nul = util.read_until_nul
9
+ local to_hex = util.to_hex
10
+ local object_sha = util.object_sha
11
+ local readable_sha = util.readable_sha
12
+
13
+ local deflate = core.deflate
14
+
15
+ local lfs = require 'lfs'
16
+ local assert, error, io, ipairs, print, os, setmetatable, string, table =
17
+ assert, error, io, ipairs, print, os, setmetatable, string, table
18
+
19
+ module(...)
20
+
21
+ Repo = {}
22
+ Repo.__index = Repo
23
+
24
+ -- retrieves an object identified by `sha` from the repository or its packs
25
+ -- returns a file-like object (supports 'read', 'seek' and 'close'), the size
26
+ -- of the object and its type
27
+ -- errors when the object does not exist
28
+ function Repo:raw_object(sha)
29
+ -- first, look in 'objects' directory
30
+ -- first byte of sha is the directory, the rest is name of object file
31
+ sha = readable_sha(sha)
32
+ local dir = sha:sub(1,2)
33
+ local file = sha:sub(3)
34
+ local path = join_path(self.dir, 'objects', dir, file)
35
+
36
+ if not lfs.attributes(path, 'size') then
37
+ -- then, try to look in packs
38
+ for _, pack in ipairs(self.packs) do
39
+ local obj, len, typ = pack:get_object(sha)
40
+ if obj then
41
+ return obj, len, typ
42
+ end
43
+ end
44
+ error('Object not found in object neither in packs: '..sha)
45
+ else
46
+ -- the objects are zlib compressed
47
+ local f = decompressed(path)
48
+
49
+ -- retrieve the type and length - <type> SP <len> \0 <data...>
50
+ local content = read_until_nul(f)
51
+ local typ, len = content:match('(%w+) (%d+)')
52
+
53
+ return f, len, typ
54
+ end
55
+ end
56
+
57
+ --- Store a new object into the repository in `objects` directory.
58
+ -- @param data A string containing the contents of the new file.
59
+ -- @param len The length of the data.
60
+ -- @param type One of 'commit', 'blob', 'tree', 'tag'
61
+ function Repo:store_object(data, len, type)
62
+ local sha = readable_sha(object_sha(data, len, type))
63
+ local dir = sha:sub(1,2)
64
+ local file = sha:sub(3)
65
+ util.make_dir(join_path(self.dir, 'objects', dir))
66
+ local path = join_path(self.dir, 'objects', dir, file)
67
+ local fo = assert(io.open(path, 'wb'))
68
+ local header = type .. ' ' .. len .. '\0'
69
+ local compressed = deflate()(header .. data, "finish")
70
+ fo:write(compressed)
71
+ fo:close()
72
+ end
73
+
74
+ local function resolvetag(f)
75
+ local tag
76
+ local line = f:read()
77
+ while line do
78
+ tag = line:match('^object (%x+)$')
79
+ if tag then break end
80
+ line = f:read()
81
+ end
82
+ f:close()
83
+ return tag
84
+ end
85
+
86
+ function Repo:commit(sha)
87
+ local f, len, typ = self:raw_object(sha)
88
+ while typ == 'tag' do
89
+ sha = assert(resolvetag(f), 'could not parse tag for '..readable_sha(sha))
90
+ f, len, typ = self:raw_object(sha)
91
+ end
92
+ assert(typ == 'commit', string.format('%s (%s) is not a commit', sha, typ))
93
+
94
+ local commit = { id = sha, repo = self, stored = true, parents = {} }
95
+ repeat
96
+ local line = f:read()
97
+ if not line then break end
98
+
99
+ local space = line:find(' ') or 0
100
+ local word = line:sub(1, space - 1)
101
+ local afterSpace = line:sub(space + 1)
102
+
103
+ if word == 'tree' then
104
+ commit.tree_sha = afterSpace
105
+ elseif word == 'parent' then
106
+ table.insert(commit.parents, afterSpace)
107
+ elseif word == 'author' then
108
+ commit.author = afterSpace
109
+ elseif word == 'committer' then
110
+ commit.committer = afterSpace
111
+ elseif commit.message then
112
+ table.insert(commit.message, line)
113
+ elseif line == '' then
114
+ commit.message = {}
115
+ end
116
+ until false -- ends with break
117
+ f:close()
118
+
119
+ commit.message = table.concat(commit.message, '\n')
120
+
121
+ return setmetatable(commit, objects.Commit)
122
+ end
123
+
124
+ function Repo:tree(sha)
125
+ local f, len, typ = self:raw_object(sha)
126
+ assert(typ == 'tree', string.format('%s (%s) is not a tree', sha, typ))
127
+
128
+ local tree = { id = sha, repo = self, stored = true, _entries = {} }
129
+
130
+ while true do
131
+ local info = read_until_nul(f)
132
+ if not info then break end
133
+ local entry_sha = to_hex(f:read(20))
134
+ local mode, name = info:match('^(%d+)%s(.+)$')
135
+ local entry_type = 'blob'
136
+ if mode == '40000' then
137
+ entry_type = 'tree'
138
+ elseif mode == '160000' then
139
+ entry_type = 'commit'
140
+ end
141
+ tree._entries[name] = { mode = mode, id = entry_sha, type = entry_type }
142
+ end
143
+
144
+ f:close()
145
+
146
+ return setmetatable(tree, objects.Tree)
147
+ end
148
+
149
+ -- retrieves a Blob
150
+ function Repo:blob(sha)
151
+ local f, len, typ = self:raw_object(sha)
152
+ f:close() -- can be reopened in Blob:content()
153
+
154
+ assert(typ == 'blob', string.format('%s (%s) is not a blob', sha, typ))
155
+ return setmetatable({
156
+ id = sha,
157
+ len = len,
158
+ repo = self,
159
+ stored = true }, objects.Blob)
160
+ end
161
+
162
+ function Repo:head()
163
+ return self:commit(self.refs.HEAD)
164
+ end
165
+
166
+ function Repo:has_object(sha)
167
+ local dir = sha:sub(1,2)
168
+ local file = sha:sub(3)
169
+ local path = join_path(self.dir, 'objects', dir, file)
170
+
171
+ if lfs.attributes(path, 'size') then return true end
172
+
173
+ for _, pack in ipairs(self.packs) do
174
+ local has = pack:has_object(sha)
175
+ if has then return true end
176
+ end
177
+
178
+ return false
179
+ end
180
+
181
+ function Repo:checkout(sha, target)
182
+ if not target then target = self.workDir end
183
+ assert(target, 'target directory not specified')
184
+
185
+ local commit = self:commit(sha)
186
+ commit:checkout(target)
187
+
188
+ -- if the repo was checked out using the deepen command (one level of history only)
189
+ -- mark the commit's parent as shalow, that is it has no history
190
+ if self.isShallow then
191
+ -- if it has a parent, mark it shallow
192
+ if commit.parents[1] then
193
+ local f = assert(io.open(self.dir .. '/shallow', "w"))
194
+ f:write(commit.parents[1], '\n')
195
+ f:close()
196
+ end
197
+ end
198
+ end
199
+
200
+ function Repo:close()
201
+ for _, pack in ipairs(self.packs) do
202
+ pack:close()
203
+ end
204
+ end
205
+
206
+ function create(dir)
207
+ if not dir:match('%.git.?$') then
208
+ dir = join_path(dir, '.git')
209
+ end
210
+
211
+ util.make_dir(dir)
212
+ util.make_dir(dir .. '/branches')
213
+ util.make_dir(dir .. '/hooks')
214
+ util.make_dir(dir .. '/info')
215
+ util.make_dir(dir .. '/objects/info')
216
+ util.make_dir(dir .. '/objects/pack')
217
+ util.make_dir(dir .. '/refs/heads')
218
+ util.make_dir(dir .. '/refs/tags')
219
+ util.make_dir(dir .. '/refs/remotes')
220
+
221
+ do
222
+ local f = assert(io.open(dir .. "/HEAD", "w"))
223
+ f:write("ref: refs/heads/master\n")
224
+ f:close()
225
+ end
226
+
227
+ local refs = {}
228
+ local packs = {}
229
+
230
+ return setmetatable({
231
+ dir = dir,
232
+ refs = refs,
233
+ packs = packs,
234
+ }, Repo)
235
+ end
236
+
237
+ -- opens a repository located in working directory `dir` or directly a .git repo
238
+ function open(dir)
239
+ local workDir = dir
240
+ if not dir:match('%.git.?$') then
241
+ dir = join_path(dir, '.git')
242
+ else
243
+ workDir = nil -- no working directory, working directly with repo
244
+ end
245
+
246
+ local refs = {}
247
+ for _,d in ipairs{'refs/heads', 'refs/tags'} do
248
+ for fn in lfs.dir(join_path(dir, d)) do
249
+ if fn ~= '.' and fn ~= '..' then
250
+ local path = join_path(dir, d, fn)
251
+ local f = assert(io.open(path), 'rb')
252
+ local ref = f:read()
253
+ refs[join_path(d, fn)] = ref
254
+ f:close()
255
+ end
256
+ end
257
+ end
258
+
259
+ local packs = {}
260
+ for fn in lfs.dir(join_path(dir, 'objects/pack')) do
261
+ if fn:match('%.pack$') then
262
+ local path = join_path(dir, 'objects/pack', fn)
263
+ table.insert(packs, pack.open(path))
264
+ end
265
+ end
266
+
267
+ local head = io.open(join_path(dir, 'HEAD'), 'rb')
268
+ if head then
269
+ local src = head:read()
270
+ local HEAD = src:match('ref: (.-)$')
271
+ refs.HEAD = refs[HEAD]
272
+ head:close()
273
+ end
274
+
275
+ return setmetatable({
276
+ dir = dir,
277
+ workDir = workDir,
278
+ refs = refs,
279
+ packs = packs,
280
+ }, Repo)
281
+ end
282
+
283
+ return Repo
@@ -0,0 +1,233 @@
1
+ local lfs = require 'lfs'
2
+ local core = require 'git.core'
3
+ local deflate = core.deflate
4
+ local inflate = core.inflate
5
+ local sha = core.sha
6
+
7
+ module(..., package.seeall)
8
+
9
+ local BUF_SIZE = 4096
10
+
11
+ local dirsep = package.config:sub(1,1)
12
+
13
+ -- replaces '/' path separators on Windows with the correct ones ('\\')
14
+ function correct_separators(path)
15
+ return path:gsub('/', dirsep)
16
+ end
17
+
18
+ -- joins several path components into a single path, uses system-specific directory
19
+ -- separator, cleans input, i.e. join_path('a/', 'b', 'c/') => 'a/b/c'
20
+ function join_path(...)
21
+ local n = select('#', ...)
22
+ local args = {...}
23
+ for i=1,n do
24
+ args[i] = args[i]:gsub(dirsep..'?$', '')
25
+ end
26
+ return table.concat(args, dirsep, 1, n)
27
+ end
28
+
29
+ -- Return the path with the all occurences of '/.' or '\.' (representing
30
+ -- the current directory) removed.
31
+ local function remove_curr_dir_dots(path)
32
+ while path:match(dirsep .. "%." .. dirsep) do -- match("/%./")
33
+ path = path:gsub(dirsep .. "%." .. dirsep, dirsep) -- gsub("/%./", "/")
34
+ end
35
+ return path:gsub(dirsep .. "%.$", "") -- gsub("/%.$", "")
36
+ end
37
+
38
+ -- Return whether the path is a root.
39
+ local function is_root(path)
40
+ return path:find("^[%u%U.]?:?[/\\]$")
41
+ end
42
+
43
+ -- Return the path with the unnecessary trailing separator removed.
44
+ local function remove_trailing(path)
45
+ if path:sub(-1) == dirsep and not is_root(path) then path = path:sub(1,-2) end
46
+ return path
47
+ end
48
+
49
+ -- Extract file or directory name from its path.
50
+ local function extract_name(path)
51
+ if is_root(path) then return path end
52
+
53
+ path = remove_trailing(path)
54
+ path = path:gsub("^.*" .. dirsep, "")
55
+ return path
56
+ end
57
+
58
+ -- Return the string 'str', with all magic (pattern) characters escaped.
59
+ local function escape_magic(str)
60
+ local escaped = str:gsub('[%-%.%+%[%]%(%)%^%%%?%*%^%$]','%%%1')
61
+ return escaped
62
+ end
63
+
64
+ -- Return parent directory of the 'path' or nil if there's no parent directory.
65
+ -- If 'path' is a path to file, return the directory the file is in.
66
+ function parent_dir(path)
67
+ path = remove_curr_dir_dots(path)
68
+ path = remove_trailing(path)
69
+
70
+ local dir = path:gsub(escape_magic(extract_name(path)) .. "$", "")
71
+ if dir == "" then
72
+ return nil
73
+ else
74
+ return remove_trailing(dir)
75
+ end
76
+ end
77
+
78
+ -- Make a new directory, making also all of its parent directories that doesn't exist.
79
+ function make_dir(path)
80
+ if lfs.attributes(path) then
81
+ return true
82
+ else
83
+ local par_dir = parent_dir(path)
84
+ if par_dir then
85
+ assert(make_dir(par_dir))
86
+ end
87
+ return lfs.mkdir(path)
88
+ end
89
+ end
90
+
91
+
92
+ -- Reader class
93
+ -- adapted from Penlight: https://raw.github.com/stevedonovan/Penlight/master/lua/pl/stringio.lua
94
+
95
+ local SR = {}
96
+ SR.__index = SR
97
+
98
+ function SR:_read(fmt)
99
+ local i,str = self.i,self.str
100
+ local sz = #str
101
+ if i > sz then return nil, "past end of file" end
102
+ local res
103
+ if fmt == '*l' or fmt == '*L' then
104
+ local idx = str:find('\n',i) or (sz+1)
105
+ res = str:sub(i,fmt == '*l' and idx-1 or idx)
106
+ self.i = idx+1
107
+ elseif fmt == '*a' then
108
+ res = str:sub(i)
109
+ self.i = sz+1
110
+ elseif fmt == '*n' then
111
+ local _,i2,i2,idx
112
+ _,idx = str:find ('%s*%d+',i)
113
+ _,i2 = str:find ('^%.%d+',idx+1)
114
+ if i2 then idx = i2 end
115
+ _,i2 = str:find ('^[eE][%+%-]*%d+',idx+1)
116
+ if i2 then idx = i2 end
117
+ local val = str:sub(i,idx)
118
+ res = tonumber(val)
119
+ self.i = idx+1
120
+ elseif type(fmt) == 'number' then
121
+ res = str:sub(i,i+fmt-1)
122
+ self.i = i + fmt
123
+ else
124
+ error("bad read format",2)
125
+ end
126
+ return res
127
+ end
128
+
129
+ function SR:read(...)
130
+ if select('#',...) == 0 then
131
+ return self:_read('*l')
132
+ else
133
+ local res, fmts = {},{...}
134
+ for i = 1, #fmts do
135
+ res[i] = self:_read(fmts[i])
136
+ end
137
+ return unpack(res)
138
+ end
139
+ end
140
+
141
+ function SR:seek(whence,offset)
142
+ local base
143
+ whence = whence or 'cur'
144
+ offset = offset or 0
145
+ if whence == 'set' then
146
+ base = 1
147
+ elseif whence == 'cur' then
148
+ base = self.i
149
+ elseif whence == 'end' then
150
+ base = #self.str
151
+ end
152
+ self.i = base + offset
153
+ return self.i
154
+ end
155
+
156
+ function SR:close() -- for compatibility only
157
+ end
158
+
159
+ --- create a file-like object for reading from a given string.
160
+ -- @param s The input string.
161
+ function reader(s)
162
+ return setmetatable({str=s,i=1},SR)
163
+ end
164
+
165
+
166
+ -- decompress the file and return a handle to temporary uncompressed file
167
+ function decompressed(path)
168
+ local fi = assert(io.open(path, 'rb'))
169
+ local result = {}
170
+
171
+ local z = inflate()
172
+ repeat
173
+ local str = fi:read(BUF_SIZE)
174
+ local data = z(str)
175
+ if type(data) == 'string' then
176
+ result[#result+1] = data
177
+ else print('!!!', data) end
178
+ until not str
179
+ fi:close()
180
+
181
+ return reader(table.concat(result))
182
+ end
183
+
184
+ -- reads until the byte \0, consumes it and returns the string up to the \0
185
+ function read_until_nul(f)
186
+ local t = {}
187
+ repeat
188
+ local c = f:read(1)
189
+ if c and c ~= '\0' then t[#t+1] = c end
190
+ until not c or c == '\0'
191
+ if #t > 0 then
192
+ return table.concat(t)
193
+ else
194
+ return nil
195
+ end
196
+ end
197
+
198
+ -- converts a string to lowercase hex
199
+ function to_hex(s)
200
+ return (s:gsub('.', function(c)
201
+ return string.format('%02x', string.byte(c))
202
+ end))
203
+ end
204
+
205
+ -- converts a string from hex to binary
206
+ function from_hex(s)
207
+ return (s:gsub('..', function(cc)
208
+ return string.char(tonumber(cc, 16))
209
+ end))
210
+ end
211
+
212
+ -- always returns readable (hex) hash
213
+ function readable_sha(s)
214
+ if #s ~= 40 then return to_hex(s)
215
+ else return s end
216
+ end
217
+
218
+ -- always returns binary hash
219
+ function binary_sha(s)
220
+ if #s ~= 20 then return from_hex(s)
221
+ else return s end
222
+ end
223
+
224
+ function object_sha(data, len, type)
225
+ local header = type .. ' ' .. len .. '\0'
226
+ local res = sha(header .. data)
227
+ return res
228
+ end
229
+
230
+ function deflate(data)
231
+ local c = deflate()
232
+ return c(data, "finish")
233
+ end