123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- local platform = vim.uv.os_uname()
- local deps_install_dir = table.remove(_G.arg, 1)
- local subcommand = table.remove(_G.arg, 1)
- local suffix = (platform and platform.sysname:lower():find 'windows') and '.dll' or '.so'
- package.path = deps_install_dir
- .. '/share/lua/5.1/?.lua;'
- .. deps_install_dir
- .. '/share/lua/5.1/?/init.lua;'
- .. package.path
- package.cpath = deps_install_dir .. '/lib/lua/5.1/?' .. suffix .. ';' .. package.cpath
- local uv = vim.uv
- -- we use busted and luacheck and their lua dependencies
- -- But installing their binary dependencies with luarocks is very
- -- slow, replace them with vim.uv wrappers
- local system = {}
- package.loaded['system.core'] = system
- function system.monotime()
- uv.update_time()
- return uv.now() * 1e-3
- end
- function system.gettime()
- local sec, usec = uv.gettimeofday()
- return sec + usec * 1e-6
- end
- function system.sleep(sec)
- uv.sleep(sec * 1e3)
- end
- local term = {}
- package.loaded['term.core'] = term
- function term.isatty(_)
- return uv.guess_handle(1) == 'tty'
- end
- local lfs = { _VERSION = 'fake' }
- package.loaded['lfs'] = lfs
- function lfs.attributes(path, attr)
- local stat = uv.fs_stat(path)
- if attr == 'mode' then
- return stat and stat.type or ''
- elseif attr == 'modification' then
- if not stat then
- return nil
- end
- local mtime = stat.mtime
- return mtime.sec + mtime.nsec * 1e-9
- else
- error('not implemented')
- end
- end
- function lfs.currentdir()
- return uv.cwd()
- end
- function lfs.chdir(dir)
- local status, err = pcall(uv.chdir, dir)
- if status then
- return true
- else
- return nil, err
- end
- end
- function lfs.dir(path)
- local fs = uv.fs_scandir(path)
- return function()
- if not fs then
- return
- end
- return uv.fs_scandir_next(fs)
- end
- end
- function lfs.mkdir(dir)
- return uv.fs_mkdir(dir, 493) -- octal 755
- end
- if subcommand == 'busted' then
- require 'busted.runner'({ standalone = false })
- elseif subcommand == 'luacheck' then
- require 'luacheck.main'
- else
- error 'unknown subcommand'
- end
|