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,316 @@
1
+ local io = io
2
+ local core = require 'git.core'
3
+
4
+ local assert, pcall, print, select, setmetatable, string, type, unpack =
5
+ assert, pcall, print, select, setmetatable, string, type, unpack
6
+
7
+ local ord = string.byte
8
+ local fmt = string.format
9
+ local concat, insert = table.concat, table.insert
10
+
11
+ local band = core.band
12
+ local rshift, lshift = core.rshift, core.lshift
13
+
14
+ local to_hex = git.util.to_hex
15
+ local from_hex = git.util.from_hex
16
+ local object_sha = git.util.object_sha
17
+ local binary_sha = git.util.binary_sha
18
+ local readable_sha = git.util.readable_sha
19
+ local tmpfile = git.util.tmpfile
20
+ local reader = git.util.reader
21
+
22
+ module(...)
23
+
24
+ -- read git/Documentation/technical/pack-format.txt for some inspiration
25
+
26
+ -- 1 = commit, 2 = tree ...
27
+ local types = {'commit', 'tree', 'blob', 'tag', '???', 'ofs_delta', 'ref_delta'}
28
+
29
+ -- read a 4 byte unsigned integer stored in network order
30
+ local function read_int(f)
31
+ local s = f:read(4)
32
+ local a,b,c,d = s:byte(1,4)
33
+ return a*256^3 + b*256^2 + c*256 + d
34
+ end
35
+
36
+ -- read in the type and file length
37
+ local function read_object_header(f)
38
+ local b = ord(f:read(1))
39
+ local type = band(rshift(b, 4), 0x7)
40
+ local len = band(b, 0xF)
41
+ local ofs = 0
42
+ while band(b, 0x80) ~= 0 do
43
+ b = ord(f:read(1))
44
+ len = len + lshift(band(b, 0x7F), ofs * 7 + 4)
45
+ ofs = ofs + 1
46
+ end
47
+ return len, type
48
+ end
49
+
50
+ -- reads in the delta header and returns the offset where original data is stored
51
+ local function read_delta_header(f)
52
+ local b = ord(f:read(1))
53
+ local offset = band(b, 0x7F)
54
+ while band(b, 0x80) ~= 0 do
55
+ offset = offset + 1
56
+ b = ord(f:read(1))
57
+ offset = lshift(offset, 7) + band(b, 0x7F)
58
+ end
59
+ return offset
60
+ end
61
+
62
+ -- read just enough of file `f` to uncompress `size` bytes
63
+ local function uncompress_by_len(f, size)
64
+ local z = core.inflate()
65
+ local chunks = {}
66
+ local CHUNK_SIZE = 1024
67
+ local curr_pos = f:seek()
68
+ local inflated, eof, total
69
+ -- read until end of zlib-compresed stream
70
+ while not eof do
71
+ local data = f:read(CHUNK_SIZE)
72
+ inflated, eof, total = z(data)
73
+ insert(chunks, inflated)
74
+ end
75
+ -- repair the current position in stream
76
+ f:seek('set', curr_pos + total)
77
+ return concat(chunks)
78
+ end
79
+
80
+ -- uncompress the object from the current location in `f`
81
+ local function unpack_object(f, len, type)
82
+ local data = uncompress_by_len(f, len)
83
+ return data, len, type
84
+ end
85
+
86
+ -- returns a size value encoded in delta data
87
+ local function delta_size(f)
88
+ local size = 0
89
+ local i = 0
90
+ repeat
91
+ local b = ord(f:read(1))
92
+ size = size + lshift(band(b, 0x7F), i)
93
+ i = i + 7
94
+ until band(b, 0x80) == 0
95
+ return size
96
+ end
97
+
98
+ -- returns a patched object from string `base` according to `delta` data
99
+ local function patch_object(base, delta, base_type)
100
+ -- insert delta codes into temporary file
101
+ local df = reader(delta)
102
+
103
+ -- retrieve original and result size (for checks)
104
+ local orig_size = delta_size(df)
105
+ assert(#base == orig_size, fmt('#base(%d) ~= orig_size(%d)', #base, orig_size))
106
+
107
+ local result_size = delta_size(df)
108
+ local size = result_size
109
+
110
+ local result = {}
111
+
112
+ -- process the delta codes
113
+ local cmd = df:read(1)
114
+ while cmd do
115
+ cmd = ord(cmd)
116
+ if cmd == 0 then
117
+ error('unexpected delta code 0')
118
+ elseif band(cmd, 0x80) ~= 0 then -- copy a selected part of base data
119
+ local cp_off, cp_size = 0, 0
120
+ -- retrieve offset
121
+ if band(cmd, 0x01) ~= 0 then cp_off = ord(df:read(1)) end
122
+ if band(cmd, 0x02) ~= 0 then cp_off = cp_off + ord(df:read(1))*256 end
123
+ if band(cmd, 0x04) ~= 0 then cp_off = cp_off + ord(df:read(1))*256^2 end
124
+ if band(cmd, 0x08) ~= 0 then cp_off = cp_off + ord(df:read(1))*256^3 end
125
+ -- retrieve size
126
+ if band(cmd, 0x10) ~= 0 then cp_size = ord(df:read(1)) end
127
+ if band(cmd, 0x20) ~= 0 then cp_size = cp_size + ord(df:read(1))*256 end
128
+ if band(cmd, 0x40) ~= 0 then cp_size = cp_size + ord(df:read(1))*256^2 end
129
+ if cp_size == 0 then cp_size = 0x10000 end
130
+ if cp_off + cp_size > #base or cp_size > size then break end
131
+ -- get the data and append it to result
132
+ local data = base:sub(cp_off + 1, cp_off + cp_size)
133
+ insert(result, data)
134
+ size = size - cp_size
135
+ else -- insert new data
136
+ if cmd > size then break end
137
+ local data = df:read(cmd)
138
+ insert(result, data)
139
+ size = size - cmd
140
+ end
141
+ cmd = df:read(1)
142
+ end
143
+
144
+ df:close()
145
+
146
+ result = concat(result)
147
+ assert(#result == result_size, fmt('#result(%d) ~= result_size(%d)', #result, result_size))
148
+ return result, result_size, base_type
149
+ end
150
+
151
+ Pack = {}
152
+ Pack.__index = Pack
153
+
154
+ -- read an object from the current location in pack, or from a specific `offset`
155
+ -- if specified
156
+ function Pack:read_object(offset, ignore_data)
157
+ local f = self.pack_file
158
+ if offset then
159
+ f:seek('set', offset)
160
+ end
161
+ local curr_pos = f:seek()
162
+
163
+ local len, type = read_object_header(f)
164
+ if type < 5 then -- commit, tree, blob, tag
165
+ return unpack_object(f, len, type)
166
+ elseif type == 6 then -- ofs_delta
167
+ local offset = read_delta_header(f)
168
+ local delta_data = uncompress_by_len(f, len)
169
+ if not ignore_data then
170
+ -- the offset is negative from the current location
171
+ local base, base_len, base_type = self:read_object(curr_pos - offset)
172
+ return patch_object(base, delta_data, base_type)
173
+ end
174
+ elseif type == 7 then -- ref_delta
175
+ local sha = f:read(20)
176
+ local delta_data = uncompress_by_len(f, len)
177
+ if not ignore_data then
178
+ -- lookup the object in the pack by sha
179
+ -- FIXME: maybe lookup in repo/other packs
180
+ local base_offset = self.index[binary_sha(sha)]
181
+ local base, base_len, base_type = self:read_object(base_offset)
182
+ return patch_object(base, delta_data, base_type)
183
+ end
184
+ else
185
+ error('unknown object type: '..type)
186
+ end
187
+ end
188
+
189
+ -- returns true if this pack contains the given object
190
+ function Pack:has_object(sha)
191
+ return self.index[binary_sha(sha)] ~= nil
192
+ end
193
+
194
+ -- if the object name `sha` exists in the pack, returns a temporary file with the
195
+ -- object content, length and type, otherwise returns nil
196
+ function Pack:get_object(sha)
197
+ local offset = self.index[binary_sha(sha)]
198
+ if not offset then
199
+ print('!!! Failed to find object', readable_sha(sha))
200
+ end
201
+
202
+ local data, len, type = self:read_object(offset)
203
+ print(readable_sha(sha), len, type, data)
204
+ local f = tmpfile()
205
+ f:write(data)
206
+ f:seek('set', 0)
207
+
208
+ return f, len, types[type]
209
+ end
210
+
211
+ function Pack:unpack(repo)
212
+ for i=1, self.nobjects do
213
+ local offset = self.offsets[i]
214
+ local data, len, type = self:read_object(offset)
215
+ repo:store_object(data, len, types[type])
216
+ end
217
+ end
218
+
219
+ -- parses the index
220
+ function Pack:parse_index(index_file)
221
+ local f = index_file
222
+
223
+ local head = f:read(4)
224
+ assert(head == '\255tOc', "Incorrect header: " .. head)
225
+ local version = read_int(f)
226
+ assert(version == 2, "Incorrect version: " .. version)
227
+
228
+ -- first the fanout table (how many objects are in the index, whose
229
+ -- first byte is below or equal to i)
230
+ local fanout = {}
231
+ for i=0, 255 do
232
+ local nobjs = read_int(f)
233
+ fanout[i] = nobjs
234
+ end
235
+
236
+ -- the last element in fanout is the number of all objects in index
237
+ local count = fanout[255]
238
+
239
+ -- then come the sorted object names (=sha hash)
240
+ local tmp = {}
241
+ for i=1,count do
242
+ local sha = f:read(20)
243
+ tmp[i] = { sha = sha }
244
+ end
245
+
246
+ -- then the CRCs (assume ok, skip them)
247
+ for i=1, count do
248
+ local crc = f:read(4)
249
+ end
250
+
251
+ -- then come the offsets - read just the 32bit ones, does not handle packs > 2G
252
+ for i=1, count do
253
+ local offset = read_int(f)
254
+ tmp[i].offset = offset
255
+ end
256
+
257
+ -- construct the lookup table
258
+ local lookup = {}
259
+ for i=1, count do
260
+ lookup[tmp[i].sha] = tmp[i].offset
261
+ end
262
+ self.index = lookup
263
+ end
264
+
265
+ -- constructs the index/offsets if the index file is missing
266
+ function Pack:construct_index(path)
267
+ local index = {}
268
+ for i=1, self.nobjects do
269
+ local offset = self.offsets[i]
270
+ local data, len, type = self:read_object(offset)
271
+ local sha = object_sha(data, len, types[type])
272
+ index[binary_sha(sha)] = offset
273
+ end
274
+ self.index = index
275
+ end
276
+
277
+ function Pack:close()
278
+ self.pack_file:close()
279
+ end
280
+
281
+ function Pack.open(path)
282
+ local fp = assert(io.open(path, 'rb')) -- stays open
283
+
284
+ -- read the pack header
285
+ local head = fp:read(4)
286
+ assert(head == 'PACK', "Incorrect header: " .. head)
287
+ local version = read_int(fp)
288
+ assert(version == 2, "Incorrect version: " .. version)
289
+ local nobj = read_int(fp)
290
+
291
+ local pack = setmetatable({
292
+ offsets = {},
293
+ nobjects = nobj,
294
+ pack_file = fp,
295
+ }, Pack)
296
+
297
+ -- fill the offsets by traversing through the pack
298
+ for i=1,nobj do
299
+ pack.offsets[i] = fp:seek()
300
+ -- ignore the object data, we only need the offset in the pack
301
+ pack:read_object(nil, true)
302
+ end
303
+
304
+ -- read the index
305
+ local fi = io.open((path:gsub('%.pack$', '.idx')), 'rb')
306
+ if fi then
307
+ pack:parse_index(fi)
308
+ fi:close()
309
+ else
310
+ pack:construct_index(path)
311
+ end
312
+
313
+ return pack
314
+ end
315
+
316
+ return Pack
@@ -0,0 +1,188 @@
1
+ local socket = require 'socket'
2
+ local urllib = require 'socket.url'
3
+ local lfs = require 'lfs'
4
+
5
+ local Repo = git.repo.Repo
6
+ local Pack = git.pack.Pack
7
+ local join_path = git.util.join_path
8
+ local parent_dir = git.util.parent_dir
9
+ local make_dir = git.util.make_dir
10
+ local correct_separators = git.util.correct_separators
11
+
12
+ local assert, error, getmetatable, io, os, pairs, print, require, string, tonumber =
13
+ assert, error, getmetatable, io, os, pairs, print, require, string, tonumber
14
+
15
+ local _VERSION, newproxy = _VERSION, newproxy
16
+
17
+ module(...)
18
+
19
+ local GIT_PORT = 9418
20
+
21
+ local function git_connect(host)
22
+ local sock = assert(socket.connect(host, GIT_PORT))
23
+ local gitsocket = {}
24
+
25
+ function gitsocket:send(data)
26
+ if not data then -- flush packet
27
+ sock:send('0000')
28
+ else
29
+ local len = #data + 4
30
+ len = string.format("%04x", len)
31
+ assert(sock:send(len .. data))
32
+ end
33
+ end
34
+
35
+ function gitsocket:receive()
36
+ local len = assert(sock:receive(4))
37
+ len = tonumber(len, 16)
38
+ if len == 0 then return end -- flush packet
39
+ local data = assert(sock:receive(len - 4))
40
+ return data
41
+ end
42
+
43
+ function gitsocket:close()
44
+ sock:close()
45
+ end
46
+
47
+ return gitsocket
48
+ end
49
+
50
+ local function addFinalizer(object, finalizer)
51
+ if _VERSION <= "Lua 5.1" then
52
+ local gc = newproxy(true)
53
+ getmetatable(gc).__gc = finalizer
54
+ object.__gc = gc
55
+ else
56
+ local mt = getmetatable(object)
57
+ if mt then mt.__gc = finalizer
58
+ else setmetatable(object, {__gc = finalizer})
59
+ end
60
+ end
61
+ end
62
+
63
+ local function git_fetch(host, path, repo, head, supress_progress)
64
+ local s = git_connect(host)
65
+ s:send('git-upload-pack '..path..'\0host='..host..'\0')
66
+
67
+ local refs, refsbyname = {}, {}
68
+ repeat
69
+ local ref = s:receive()
70
+ if ref then
71
+ local sha, name = ref:sub(1,40), ref:sub(42, -2)
72
+ refs[sha] = name
73
+ refsbyname[name] = sha
74
+ end
75
+ until not ref
76
+
77
+ local wantedSha
78
+ local headsha = head and refsbyname[head]
79
+
80
+ for sha, ref in pairs(refs) do
81
+ -- we implicitly want this ref
82
+ local wantObject = true
83
+ -- unless we ask for a specific head
84
+ if headsha then
85
+ if sha ~= headsha then
86
+ wantObject = false
87
+ else
88
+ wantedSha = sha
89
+ end
90
+ end
91
+ -- or we already have it
92
+ if repo and repo:has_object(sha) then
93
+ wantObject = false
94
+ end
95
+ if wantObject then
96
+ s:send('want '..sha..' multi_ack_detailed side-band-64k ofs-delta\n')
97
+ end
98
+ end
99
+
100
+ if head and not wantedSha then
101
+ error("Server does not have "..head)
102
+ end
103
+
104
+ s:send('deepen 1')
105
+ s:send()
106
+ while s:receive() do end
107
+ s:send('done\n')
108
+
109
+ assert(s:receive() == "NAK\n")
110
+
111
+ local packname = os.tmpname() .. '.pack'
112
+ local packfile = assert(io.open(packname, 'wb'))
113
+ repeat
114
+ local got = s:receive()
115
+ if got then
116
+ -- get sideband channel, 1=pack data, 2=progress, 3=error
117
+ local cmd = string.byte(got:sub(1,1))
118
+ local data = got:sub(2)
119
+ if cmd == 1 then
120
+ packfile:write(data)
121
+ elseif cmd == 2 then
122
+ if not supress_progress then io.write(data) end
123
+ else
124
+ error(data)
125
+ end
126
+ end
127
+ until not got
128
+
129
+ packfile:close()
130
+ s:close()
131
+
132
+ local pack = Pack.open(packname)
133
+ if repo then
134
+ pack:unpack(repo)
135
+ repo.isShallow = true
136
+ if wantedSha then
137
+ local headfile = correct_separators(join_path(repo.dir, head))
138
+ assert(make_dir(parent_dir(headfile)))
139
+ local f = assert(io.open(headfile, 'wb'))
140
+ f:write(wantedSha)
141
+ f:close()
142
+ end
143
+ end
144
+
145
+ addFinalizer(pack, function()
146
+ os.remove(packname)
147
+ end)
148
+
149
+ return pack, wantedSha
150
+ end
151
+
152
+ function fetch(url, repo, head, supress_progress)
153
+ if repo then assert(getmetatable(repo) == Repo, "arg #2 is not a repository") end
154
+ url = urllib.parse(url)
155
+ if url.scheme == 'git' then
156
+ local pack, sha = git_fetch(url.host, url.path, repo, head, supress_progress)
157
+ return pack, sha
158
+ else
159
+ error('unsupported scheme: '..url.scheme)
160
+ end
161
+ end
162
+
163
+ function remotes(url)
164
+ -- TODO: refactor common code
165
+ url = assert(urllib.parse(url))
166
+
167
+ if url.scheme ~= 'git' then
168
+ error('unsupported scheme: '..url.scheme)
169
+ end
170
+
171
+ local host, path = url.host, url.path
172
+
173
+ local s = git_connect(host)
174
+ s:send('git-upload-pack '..path..'\0host='..host..'\0')
175
+
176
+ local remote = {}
177
+ repeat
178
+ local ref = s:receive()
179
+ if ref then
180
+ local sha, name = ref:sub(1,40), ref:sub(42, -2)
181
+ remote[name] = sha
182
+ end
183
+ until not ref
184
+
185
+ s:close()
186
+
187
+ return remote
188
+ end