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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/lib/rufus/lua/win.rb +18 -0
- data/lib/rufus/lua/win/version.rb +7 -0
- data/rufus-lua-win.gemspec +23 -0
- data/vendor/lua/bin/liblua.dll +0 -0
- data/vendor/lua/lib/lua/LuaXml.lua +119 -0
- data/vendor/lua/lib/lua/alien.lua +250 -0
- data/vendor/lua/lib/lua/alien/core.dll +0 -0
- data/vendor/lua/lib/lua/alien/struct.dll +0 -0
- data/vendor/lua/lib/lua/base.lua +536 -0
- data/vendor/lua/lib/lua/bin.lua +20 -0
- data/vendor/lua/lib/lua/bit.dll +0 -0
- data/vendor/lua/lib/lua/cdlua.dll +0 -0
- data/vendor/lua/lib/lua/cdluacontextplus.dll +0 -0
- data/vendor/lua/lib/lua/cdluagl.dll +0 -0
- data/vendor/lua/lib/lua/cdluaim.dll +0 -0
- data/vendor/lua/lib/lua/cdluapdf.dll +0 -0
- data/vendor/lua/lib/lua/copas.lua +543 -0
- data/vendor/lua/lib/lua/coxpcall.lua +57 -0
- data/vendor/lua/lib/lua/date.lua +745 -0
- data/vendor/lua/lib/lua/debug_ext.lua +84 -0
- data/vendor/lua/lib/lua/debug_init.lua +2 -0
- data/vendor/lua/lib/lua/des56.dll +0 -0
- data/vendor/lua/lib/lua/dist/config.lua +109 -0
- data/vendor/lua/lib/lua/dist/constraints.lua +271 -0
- data/vendor/lua/lib/lua/dist/depends.lua +601 -0
- data/vendor/lua/lib/lua/dist/git.lua +307 -0
- data/vendor/lua/lib/lua/dist/init.lua +278 -0
- data/vendor/lua/lib/lua/dist/manifest.lua +225 -0
- data/vendor/lua/lib/lua/dist/package.lua +583 -0
- data/vendor/lua/lib/lua/dist/sys.lua +367 -0
- data/vendor/lua/lib/lua/dist/utils.lua +130 -0
- data/vendor/lua/lib/lua/ex.dll +0 -0
- data/vendor/lua/lib/lua/fstable.lua +116 -0
- data/vendor/lua/lib/lua/getopt.lua +273 -0
- data/vendor/lua/lib/lua/git.lua +5 -0
- data/vendor/lua/lib/lua/git/core.dll +0 -0
- data/vendor/lua/lib/lua/git/objects.lua +121 -0
- data/vendor/lua/lib/lua/git/pack.lua +316 -0
- data/vendor/lua/lib/lua/git/protocol.lua +188 -0
- data/vendor/lua/lib/lua/git/repo.lua +283 -0
- data/vendor/lua/lib/lua/git/util.lua +233 -0
- data/vendor/lua/lib/lua/gzio.dll +0 -0
- data/vendor/lua/lib/lua/gzip.lua +81 -0
- data/vendor/lua/lib/lua/iconv.dll +0 -0
- data/vendor/lua/lib/lua/imlua.dll +0 -0
- data/vendor/lua/lib/lua/imlua_fftw.dll +0 -0
- data/vendor/lua/lib/lua/imlua_jp2.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process.dll +0 -0
- data/vendor/lua/lib/lua/imlua_process_omp.dll +0 -0
- data/vendor/lua/lib/lua/io_ext.lua +115 -0
- data/vendor/lua/lib/lua/iuplua.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_mglplot.dll +0 -0
- data/vendor/lua/lib/lua/iuplua_pplot.dll +0 -0
- data/vendor/lua/lib/lua/iupluacd.dll +0 -0
- data/vendor/lua/lib/lua/iupluacontrols.dll +0 -0
- data/vendor/lua/lib/lua/iupluagl.dll +0 -0
- data/vendor/lua/lib/lua/iupluaim.dll +0 -0
- data/vendor/lua/lib/lua/iupluaimglib.dll +0 -0
- data/vendor/lua/lib/lua/iupluatuio.dll +0 -0
- data/vendor/lua/lib/lua/lanes-keeper.lua +302 -0
- data/vendor/lua/lib/lua/lanes.lua +591 -0
- data/vendor/lua/lib/lua/lanes/core.dll +0 -0
- data/vendor/lua/lib/lua/lcs.lua +55 -0
- data/vendor/lua/lib/lua/lemock.lua +659 -0
- data/vendor/lua/lib/lua/lfs.dll +0 -0
- data/vendor/lua/lib/lua/list.lua +375 -0
- data/vendor/lua/lib/lua/logging.lua +189 -0
- data/vendor/lua/lib/lua/logging/console.lua +22 -0
- data/vendor/lua/lib/lua/logging/email.lua +44 -0
- data/vendor/lua/lib/lua/logging/file.lua +55 -0
- data/vendor/lua/lib/lua/logging/rolling_file.lua +81 -0
- data/vendor/lua/lib/lua/logging/socket.lua +35 -0
- data/vendor/lua/lib/lua/logging/sql.lua +64 -0
- data/vendor/lua/lib/lua/loop/base.lua +68 -0
- data/vendor/lua/lib/lua/loop/cached.lua +312 -0
- data/vendor/lua/lib/lua/loop/collection/MapWithArrayOfKeys.lua +64 -0
- data/vendor/lua/lib/lua/loop/collection/ObjectCache.lua +39 -0
- data/vendor/lua/lib/lua/loop/collection/OrderedSet.lua +164 -0
- data/vendor/lua/lib/lua/loop/collection/PriorityQueue.lua +86 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArray.lua +32 -0
- data/vendor/lua/lib/lua/loop/collection/UnorderedArraySet.lua +56 -0
- data/vendor/lua/lib/lua/loop/compiler/Arguments.lua +108 -0
- data/vendor/lua/lib/lua/loop/compiler/Conditional.lua +50 -0
- data/vendor/lua/lib/lua/loop/compiler/Expression.lua +215 -0
- data/vendor/lua/lib/lua/loop/component/base.lua +221 -0
- data/vendor/lua/lib/lua/loop/component/contained.lua +71 -0
- data/vendor/lua/lib/lua/loop/component/dynamic.lua +223 -0
- data/vendor/lua/lib/lua/loop/component/intercepted.lua +354 -0
- data/vendor/lua/lib/lua/loop/component/wrapped.lua +195 -0
- data/vendor/lua/lib/lua/loop/debug/Inspector.lua +521 -0
- data/vendor/lua/lib/lua/loop/debug/Matcher.lua +192 -0
- data/vendor/lua/lib/lua/loop/debug/Verbose.lua +266 -0
- data/vendor/lua/lib/lua/loop/debug/Viewer.lua +200 -0
- data/vendor/lua/lib/lua/loop/multiple.lua +105 -0
- data/vendor/lua/lib/lua/loop/object/Exception.lua +57 -0
- data/vendor/lua/lib/lua/loop/object/Publisher.lua +43 -0
- data/vendor/lua/lib/lua/loop/object/Wrapper.lua +39 -0
- data/vendor/lua/lib/lua/loop/scoped.lua +585 -0
- data/vendor/lua/lib/lua/loop/serial/FileStream.lua +48 -0
- data/vendor/lua/lib/lua/loop/serial/Serializer.lua +291 -0
- data/vendor/lua/lib/lua/loop/serial/SocketStream.lua +51 -0
- data/vendor/lua/lib/lua/loop/serial/StringStream.lua +47 -0
- data/vendor/lua/lib/lua/loop/simple.lua +75 -0
- data/vendor/lua/lib/lua/loop/table.lua +71 -0
- data/vendor/lua/lib/lua/loop/thread/CoSocket.lua +416 -0
- data/vendor/lua/lib/lua/loop/thread/IOScheduler.lua +170 -0
- data/vendor/lua/lib/lua/loop/thread/Scheduler.lua +327 -0
- data/vendor/lua/lib/lua/loop/thread/SocketScheduler.lua +88 -0
- data/vendor/lua/lib/lua/loop/thread/Timer.lua +54 -0
- data/vendor/lua/lib/lua/lpeg.dll +0 -0
- data/vendor/lua/lib/lua/ltn12.lua +292 -0
- data/vendor/lua/lib/lua/luaXML_lib.dll +0 -0
- data/vendor/lua/lib/lua/luacurl.dll +0 -0
- data/vendor/lua/lib/lua/luadoc/config.lua +34 -0
- data/vendor/lua/lib/lua/luadoc/doclet/debug.lua +46 -0
- data/vendor/lua/lib/lua/luadoc/doclet/formatter.lua +84 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html.lua +289 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/file.lp +113 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/function.lp +64 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/index.lp +70 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/luadoc.css +286 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/menu.lp +55 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/module.lp +109 -0
- data/vendor/lua/lib/lua/luadoc/doclet/html/table.lp +15 -0
- data/vendor/lua/lib/lua/luadoc/doclet/raw.lua +12 -0
- data/vendor/lua/lib/lua/luadoc/init.lua +58 -0
- data/vendor/lua/lib/lua/luadoc/lp.lua +130 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard.lua +495 -0
- data/vendor/lua/lib/lua/luadoc/taglet/standard/tags.lua +171 -0
- data/vendor/lua/lib/lua/luadoc/util.lua +233 -0
- data/vendor/lua/lib/lua/luagl.dll +0 -0
- data/vendor/lua/lib/lua/luaglu.dll +0 -0
- data/vendor/lua/lib/lua/luaidl.lua +113 -0
- data/vendor/lua/lib/lua/luaidl/lex.lua +793 -0
- data/vendor/lua/lib/lua/luaidl/pre.lua +149 -0
- data/vendor/lua/lib/lua/luaidl/sin.lua +3631 -0
- data/vendor/lua/lib/lua/luarocks/add.lua +108 -0
- data/vendor/lua/lib/lua/luarocks/admin_remove.lua +87 -0
- data/vendor/lua/lib/lua/luarocks/build.lua +330 -0
- data/vendor/lua/lib/lua/luarocks/build/builtin.lua +253 -0
- data/vendor/lua/lib/lua/luarocks/build/cmake.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/build/command.lua +32 -0
- data/vendor/lua/lib/lua/luarocks/build/make.lua +92 -0
- data/vendor/lua/lib/lua/luarocks/cache.lua +85 -0
- data/vendor/lua/lib/lua/luarocks/cfg.lua +449 -0
- data/vendor/lua/lib/lua/luarocks/command_line.lua +163 -0
- data/vendor/lua/lib/lua/luarocks/deps.lua +654 -0
- data/vendor/lua/lib/lua/luarocks/dir.lua +69 -0
- data/vendor/lua/lib/lua/luarocks/download.lua +90 -0
- data/vendor/lua/lib/lua/luarocks/fetch.lua +321 -0
- data/vendor/lua/lib/lua/luarocks/fetch/cvs.lua +44 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git.lua +81 -0
- data/vendor/lua/lib/lua/luarocks/fetch/git_file.lua +17 -0
- data/vendor/lua/lib/lua/luarocks/fetch/hg.lua +54 -0
- data/vendor/lua/lib/lua/luarocks/fetch/sscm.lua +42 -0
- data/vendor/lua/lib/lua/luarocks/fetch/svn.lua +53 -0
- data/vendor/lua/lib/lua/luarocks/fs.lua +40 -0
- data/vendor/lua/lib/lua/luarocks/fs/lua.lua +676 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix.lua +88 -0
- data/vendor/lua/lib/lua/luarocks/fs/unix/tools.lua +325 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32.lua +107 -0
- data/vendor/lua/lib/lua/luarocks/fs/win32/tools.lua +334 -0
- data/vendor/lua/lib/lua/luarocks/help.lua +101 -0
- data/vendor/lua/lib/lua/luarocks/index.lua +172 -0
- data/vendor/lua/lib/lua/luarocks/install.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/list.lua +35 -0
- data/vendor/lua/lib/lua/luarocks/loader.lua +228 -0
- data/vendor/lua/lib/lua/luarocks/make.lua +71 -0
- data/vendor/lua/lib/lua/luarocks/make_manifest.lua +34 -0
- data/vendor/lua/lib/lua/luarocks/manif.lua +360 -0
- data/vendor/lua/lib/lua/luarocks/manif_core.lua +75 -0
- data/vendor/lua/lib/lua/luarocks/new_version.lua +141 -0
- data/vendor/lua/lib/lua/luarocks/pack.lua +205 -0
- data/vendor/lua/lib/lua/luarocks/path.lua +315 -0
- data/vendor/lua/lib/lua/luarocks/persist.lua +173 -0
- data/vendor/lua/lib/lua/luarocks/refresh_cache.lua +30 -0
- data/vendor/lua/lib/lua/luarocks/remove.lua +135 -0
- data/vendor/lua/lib/lua/luarocks/rep.lua +313 -0
- data/vendor/lua/lib/lua/luarocks/require.lua +6 -0
- data/vendor/lua/lib/lua/luarocks/search.lua +399 -0
- data/vendor/lua/lib/lua/luarocks/show.lua +138 -0
- data/vendor/lua/lib/lua/luarocks/site_config.lua +23 -0
- data/vendor/lua/lib/lua/luarocks/tools/patch.lua +712 -0
- data/vendor/lua/lib/lua/luarocks/tools/tar.lua +144 -0
- data/vendor/lua/lib/lua/luarocks/tools/zip.lua +245 -0
- data/vendor/lua/lib/lua/luarocks/type_check.lua +267 -0
- data/vendor/lua/lib/lua/luarocks/unpack.lua +151 -0
- data/vendor/lua/lib/lua/luarocks/util.lua +420 -0
- data/vendor/lua/lib/lua/luarocks/validate.lua +164 -0
- data/vendor/lua/lib/lua/luars232.dll +0 -0
- data/vendor/lua/lib/lua/luasql/mysql.dll +0 -0
- data/vendor/lua/lib/lua/luasql/postgres.dll +0 -0
- data/vendor/lua/lib/lua/luasql/sqlite3.dll +0 -0
- data/vendor/lua/lib/lua/luaunit.lua +601 -0
- data/vendor/lua/lib/lua/lxp.dll +0 -0
- data/vendor/lua/lib/lua/lxp/lom.lua +60 -0
- data/vendor/lua/lib/lua/math_ext.lua +27 -0
- data/vendor/lua/lib/lua/mbox.lua +53 -0
- data/vendor/lua/lib/lua/md5.lua +19 -0
- data/vendor/lua/lib/lua/md5/core.dll +0 -0
- data/vendor/lua/lib/lua/metalua.lua +0 -0
- data/vendor/lua/lib/lua/metalua/ast_to_string.mlua +553 -0
- data/vendor/lua/lib/lua/metalua/base.lua +104 -0
- data/vendor/lua/lib/lua/metalua/bytecode.lua +0 -0
- data/vendor/lua/lib/lua/metalua/clopts.mlua +204 -0
- data/vendor/lua/lib/lua/metalua/compiler.lua +3 -0
- data/vendor/lua/lib/lua/metalua/dollar.mlua +24 -0
- data/vendor/lua/lib/lua/metalua/extension/H-runtime.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/extension/H.mlua +22 -0
- data/vendor/lua/lib/lua/metalua/extension/anaphoric.mlua +54 -0
- data/vendor/lua/lib/lua/metalua/extension/clist.mlua +149 -0
- data/vendor/lua/lib/lua/metalua/extension/continue.mlua +53 -0
- data/vendor/lua/lib/lua/metalua/extension/localin.mlua +2 -0
- data/vendor/lua/lib/lua/metalua/extension/log.mlua +39 -0
- data/vendor/lua/lib/lua/metalua/extension/match.mlua +374 -0
- data/vendor/lua/lib/lua/metalua/extension/ternary.mlua +10 -0
- data/vendor/lua/lib/lua/metalua/extension/trycatch.mlua +189 -0
- data/vendor/lua/lib/lua/metalua/extension/types-runtime.mlua +159 -0
- data/vendor/lua/lib/lua/metalua/extension/types.mlua +352 -0
- data/vendor/lua/lib/lua/metalua/extension/withdo.mlua +30 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal-runtime.lua +41 -0
- data/vendor/lua/lib/lua/metalua/extension/xglobal.mlua +20 -0
- data/vendor/lua/lib/lua/metalua/extension/xloop.mlua +100 -0
- data/vendor/lua/lib/lua/metalua/extension/xmatch.mlua +216 -0
- data/vendor/lua/lib/lua/metalua/metaloop.mlua +76 -0
- data/vendor/lua/lib/lua/metalua/mlc.lua +0 -0
- data/vendor/lua/lib/lua/metalua/mlc_xcall.lua +119 -0
- data/vendor/lua/lib/lua/metalua/mlp.lua +0 -0
- data/vendor/lua/lib/lua/metalua/package2.lua +101 -0
- data/vendor/lua/lib/lua/metalua/runtime.lua +3 -0
- data/vendor/lua/lib/lua/metalua/string2.lua +44 -0
- data/vendor/lua/lib/lua/metalua/table2.lua +372 -0
- data/vendor/lua/lib/lua/metalua/walk.mlua +304 -0
- data/vendor/lua/lib/lua/metalua/walk/bindings.mlua +41 -0
- data/vendor/lua/lib/lua/metalua/walk/id.mlua +186 -0
- data/vendor/lua/lib/lua/metalua/walk/scope.lua +54 -0
- data/vendor/lua/lib/lua/mime.lua +87 -0
- data/vendor/lua/lib/lua/mime/core.dll +0 -0
- data/vendor/lua/lib/lua/mobdebug.lua +1484 -0
- data/vendor/lua/lib/lua/modules.lua +16 -0
- data/vendor/lua/lib/lua/object.lua +56 -0
- data/vendor/lua/lib/lua/oil/Exception.lua +26 -0
- data/vendor/lua/lib/lua/oil/arch.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/basic/client.lua +29 -0
- data/vendor/lua/lib/lua/oil/arch/basic/common.lua +13 -0
- data/vendor/lua/lib/lua/oil/arch/basic/server.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/common.lua +10 -0
- data/vendor/lua/lib/lua/oil/arch/cooperative/server.lua +16 -0
- data/vendor/lua/lib/lua/oil/arch/corba/client.lua +39 -0
- data/vendor/lua/lib/lua/oil/arch/corba/common.lua +58 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/client.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/intercepted/server.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/corba/server.lua +35 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/byref.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/client.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/common.lua +18 -0
- data/vendor/lua/lib/lua/oil/arch/ludo/server.lua +19 -0
- data/vendor/lua/lib/lua/oil/arch/typed/client.lua +27 -0
- data/vendor/lua/lib/lua/oil/arch/typed/common.lua +9 -0
- data/vendor/lua/lib/lua/oil/arch/typed/server.lua +18 -0
- data/vendor/lua/lib/lua/oil/assert.lua +87 -0
- data/vendor/lua/lib/lua/oil/builder.lua +45 -0
- data/vendor/lua/lib/lua/oil/builder/basic/client.lua +31 -0
- data/vendor/lua/lib/lua/oil/builder/basic/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/basic/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/common.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/cooperative/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/common.lua +24 -0
- data/vendor/lua/lib/lua/oil/builder/corba/gencode.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/intercepted/server.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/corba/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/lua/client.lua +11 -0
- data/vendor/lua/lib/lua/oil/builder/lua/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/byref.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/client.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/common.lua +14 -0
- data/vendor/lua/lib/lua/oil/builder/ludo/server.lua +13 -0
- data/vendor/lua/lib/lua/oil/builder/typed/client.lua +16 -0
- data/vendor/lua/lib/lua/oil/builder/typed/server.lua +12 -0
- data/vendor/lua/lib/lua/oil/compat.lua +846 -0
- data/vendor/lua/lib/lua/oil/component.lua +1 -0
- data/vendor/lua/lib/lua/oil/corba/giop.lua +301 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Codec.lua +1568 -0
- data/vendor/lua/lib/lua/oil/corba/giop/CodecGen.lua +589 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Exception.lua +25 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Indexer.lua +63 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Listener.lua +343 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Messenger.lua +228 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Referrer.lua +180 -0
- data/vendor/lua/lib/lua/oil/corba/giop/Requester.lua +462 -0
- data/vendor/lua/lib/lua/oil/corba/idl.lua +597 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Compiler.lua +133 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Importer.lua +235 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Indexer.lua +95 -0
- data/vendor/lua/lib/lua/oil/corba/idl/Registry.lua +1821 -0
- data/vendor/lua/lib/lua/oil/corba/idl/ir.lua +847 -0
- data/vendor/lua/lib/lua/oil/corba/idl/sysex.lua +21 -0
- data/vendor/lua/lib/lua/oil/corba/iiop/Profiler.lua +200 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Listener.lua +158 -0
- data/vendor/lua/lib/lua/oil/corba/intercepted/Requester.lua +181 -0
- data/vendor/lua/lib/lua/oil/corba/services/event.lua +126 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ConsumerAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventFactory.lua +15 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/EventQueue.lua +37 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushConsumer.lua +75 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/ProxyPushSupplier.lua +62 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleDeferredDispatcher.lua +60 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SingleSynchronousDispatcher.lua +39 -0
- data/vendor/lua/lib/lua/oil/corba/services/event/SupplierAdmin.lua +50 -0
- data/vendor/lua/lib/lua/oil/corba/services/naming.lua +436 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Acceptor.lua +268 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Channels.lua +121 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Connector.lua +147 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Dispatcher.lua +99 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies.lua +86 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/asynchronous.lua +56 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/protected.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/synchronous.lua +17 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Proxies/utils.lua +29 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Receiver.lua +110 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Servants.lua +207 -0
- data/vendor/lua/lib/lua/oil/kernel/base/Sockets.lua +44 -0
- data/vendor/lua/lib/lua/oil/kernel/cooperative/Receiver.lua +139 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Listener.lua +47 -0
- data/vendor/lua/lib/lua/oil/kernel/intercepted/Requester.lua +58 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Dispatcher.lua +76 -0
- data/vendor/lua/lib/lua/oil/kernel/lua/Proxies.lua +69 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Dispatcher.lua +91 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Proxies.lua +153 -0
- data/vendor/lua/lib/lua/oil/kernel/typed/Servants.lua +137 -0
- data/vendor/lua/lib/lua/oil/ludo/Codec.lua +66 -0
- data/vendor/lua/lib/lua/oil/ludo/CodecByRef.lua +103 -0
- data/vendor/lua/lib/lua/oil/ludo/Listener.lua +151 -0
- data/vendor/lua/lib/lua/oil/ludo/Referrer.lua +72 -0
- data/vendor/lua/lib/lua/oil/ludo/Requester.lua +107 -0
- data/vendor/lua/lib/lua/oil/oo.lua +1 -0
- data/vendor/lua/lib/lua/oil/port.lua +1 -0
- data/vendor/lua/lib/lua/oil/properties.lua +57 -0
- data/vendor/lua/lib/lua/oil/verbose.lua +133 -0
- data/vendor/lua/lib/lua/package_ext.lua +15 -0
- data/vendor/lua/lib/lua/parser.lua +268 -0
- data/vendor/lua/lib/lua/pl/Date.lua +555 -0
- data/vendor/lua/lib/lua/pl/List.lua +613 -0
- data/vendor/lua/lib/lua/pl/Map.lua +113 -0
- data/vendor/lua/lib/lua/pl/MultiMap.lua +62 -0
- data/vendor/lua/lib/lua/pl/OrderedMap.lua +151 -0
- data/vendor/lua/lib/lua/pl/Set.lua +153 -0
- data/vendor/lua/lib/lua/pl/app.lua +165 -0
- data/vendor/lua/lib/lua/pl/array2d.lua +501 -0
- data/vendor/lua/lib/lua/pl/class.lua +180 -0
- data/vendor/lua/lib/lua/pl/comprehension.lua +286 -0
- data/vendor/lua/lib/lua/pl/config.lua +176 -0
- data/vendor/lua/lib/lua/pl/data.lua +606 -0
- data/vendor/lua/lib/lua/pl/dir.lua +475 -0
- data/vendor/lua/lib/lua/pl/file.lua +70 -0
- data/vendor/lua/lib/lua/pl/func.lua +376 -0
- data/vendor/lua/lib/lua/pl/init.lua +68 -0
- data/vendor/lua/lib/lua/pl/input.lua +173 -0
- data/vendor/lua/lib/lua/pl/lapp.lua +407 -0
- data/vendor/lua/lib/lua/pl/lexer.lua +456 -0
- data/vendor/lua/lib/lua/pl/luabalanced.lua +264 -0
- data/vendor/lua/lib/lua/pl/operator.lua +201 -0
- data/vendor/lua/lib/lua/pl/path.lua +398 -0
- data/vendor/lua/lib/lua/pl/permute.lua +63 -0
- data/vendor/lua/lib/lua/pl/platf/luajava.lua +101 -0
- data/vendor/lua/lib/lua/pl/pretty.lua +285 -0
- data/vendor/lua/lib/lua/pl/seq.lua +551 -0
- data/vendor/lua/lib/lua/pl/sip.lua +344 -0
- data/vendor/lua/lib/lua/pl/strict.lua +70 -0
- data/vendor/lua/lib/lua/pl/stringio.lua +158 -0
- data/vendor/lua/lib/lua/pl/stringx.lua +440 -0
- data/vendor/lua/lib/lua/pl/tablex.lua +817 -0
- data/vendor/lua/lib/lua/pl/template.lua +103 -0
- data/vendor/lua/lib/lua/pl/test.lua +135 -0
- data/vendor/lua/lib/lua/pl/text.lua +243 -0
- data/vendor/lua/lib/lua/pl/utils.lua +550 -0
- data/vendor/lua/lib/lua/pl/xml.lua +689 -0
- data/vendor/lua/lib/lua/profiler.dll +0 -0
- data/vendor/lua/lib/lua/re.lua +248 -0
- data/vendor/lua/lib/lua/rex_onig.dll +0 -0
- data/vendor/lua/lib/lua/rex_pcre.dll +0 -0
- data/vendor/lua/lib/lua/rex_posix.dll +0 -0
- data/vendor/lua/lib/lua/rings.dll +0 -0
- data/vendor/lua/lib/lua/serialize.lua +193 -0
- data/vendor/lua/lib/lua/set.lua +149 -0
- data/vendor/lua/lib/lua/socket.lua +133 -0
- data/vendor/lua/lib/lua/socket/core.dll +0 -0
- data/vendor/lua/lib/lua/socket/ftp.lua +281 -0
- data/vendor/lua/lib/lua/socket/http.lua +350 -0
- data/vendor/lua/lib/lua/socket/smtp.lua +251 -0
- data/vendor/lua/lib/lua/socket/tp.lua +123 -0
- data/vendor/lua/lib/lua/socket/url.lua +297 -0
- data/vendor/lua/lib/lua/ssl.dll +0 -0
- data/vendor/lua/lib/lua/ssl.lua +93 -0
- data/vendor/lua/lib/lua/ssl/https.lua +138 -0
- data/vendor/lua/lib/lua/stable.lua +28 -0
- data/vendor/lua/lib/lua/std.lua +16 -0
- data/vendor/lua/lib/lua/strbuf.lua +32 -0
- data/vendor/lua/lib/lua/strict.lua +45 -0
- data/vendor/lua/lib/lua/string_ext.lua +274 -0
- data/vendor/lua/lib/lua/table_ext.lua +117 -0
- data/vendor/lua/lib/lua/tar.lua +262 -0
- data/vendor/lua/lib/lua/task.dll +0 -0
- data/vendor/lua/lib/lua/tree.lua +81 -0
- data/vendor/lua/lib/lua/unicode.dll +0 -0
- data/vendor/lua/lib/lua/verbose_require.lua +11 -0
- data/vendor/lua/lib/lua/vstruct.lua +86 -0
- data/vendor/lua/lib/lua/vstruct/ast.lua +192 -0
- data/vendor/lua/lib/lua/vstruct/ast/Bitpack.lua +33 -0
- data/vendor/lua/lib/lua/vstruct/ast/Generator.lua +174 -0
- data/vendor/lua/lib/lua/vstruct/ast/IO.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/ast/List.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/ast/Name.lua +20 -0
- data/vendor/lua/lib/lua/vstruct/ast/Repeat.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/ast/Root.lua +19 -0
- data/vendor/lua/lib/lua/vstruct/ast/Table.lua +65 -0
- data/vendor/lua/lib/lua/vstruct/cursor.lua +81 -0
- data/vendor/lua/lib/lua/vstruct/io.lua +45 -0
- data/vendor/lua/lib/lua/vstruct/io/a.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/b.lua +28 -0
- data/vendor/lua/lib/lua/vstruct/io/bigendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/c.lua +25 -0
- data/vendor/lua/lib/lua/vstruct/io/defaults.lua +24 -0
- data/vendor/lua/lib/lua/vstruct/io/endianness.lua +41 -0
- data/vendor/lua/lib/lua/vstruct/io/f.lua +129 -0
- data/vendor/lua/lib/lua/vstruct/io/hostendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/i.lua +42 -0
- data/vendor/lua/lib/lua/vstruct/io/littleendian.lua +21 -0
- data/vendor/lua/lib/lua/vstruct/io/m.lua +62 -0
- data/vendor/lua/lib/lua/vstruct/io/p.lua +23 -0
- data/vendor/lua/lib/lua/vstruct/io/s.lua +27 -0
- data/vendor/lua/lib/lua/vstruct/io/seekb.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekf.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/seekto.lua +18 -0
- data/vendor/lua/lib/lua/vstruct/io/u.lua +54 -0
- data/vendor/lua/lib/lua/vstruct/io/x.lua +34 -0
- data/vendor/lua/lib/lua/vstruct/io/z.lua +63 -0
- data/vendor/lua/lib/lua/vstruct/lexer.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/pack.lua +142 -0
- data/vendor/lua/lib/lua/vstruct/test.lua +47 -0
- data/vendor/lua/lib/lua/vstruct/test/basic.lua +73 -0
- data/vendor/lua/lib/lua/vstruct/test/common.lua +100 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-bigendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/fp-littleendian.lua +56 -0
- data/vendor/lua/lib/lua/vstruct/test/struct-test-gen.lua +1230 -0
- data/vendor/lua/lib/lua/vstruct/unpack.lua +126 -0
- data/vendor/lua/lib/lua/wx.dll +0 -0
- data/vendor/lua/lib/lua/xml.lua +75 -0
- data/vendor/lua/lib/lua/zip.dll +0 -0
- data/vendor/lua/lib/lua/zlib.dll +0 -0
- 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
|