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,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
|