local mp = require('mp') -- TODO: Move plugins (and opts) table to seperate file so that we can auto update without -- messing with the user's configs local plugins = { -- the plugins you want to load -- link to repo file dest dir -- { 'https://git.squi.bid/eat-it', 'eatit.lua', 'scripts' }, -- this is an example uncommenting it (and updating) will overwrite your config } -- options for eat it local opts = { logging = { -- options for logging log = true, logdate = '[%H:%M:%S]:', logfile = '~~/eatit.log', }, dl = { -- options for dealing with the git repos dir = '/tmp/mpv-eatit', powerwash = false, -- if true the tmp dir gets deleted after mpv closes } } local function tablelength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end local function logwrite(string) if opts.logging.log then io.write(os.date(opts.logging.logdate) .. ' ' .. string .. '\n') end end local function getgit() os.execute('mkdir -p ' .. opts.dl.dir) logwrite('Starting Download...') for i in pairs(plugins) do logwrite('downloading ' .. plugins[i][1]) -- construct the git cmd local cmd = 'git -C ' .. opts.dl.dir .. ' clone ' .. plugins[i][1] -- run the command and get the result for logging local run = io.popen(cmd) -- BUG: logwriting the git command doens't actually log the output -- (commented out for now) -- logwrite(run:read('*a')) run:close() -- get the file's dir local pluginfile = opts.dl.dir .. '/' .. string.match(plugins[i][1], '/([^/]+)$') .. '/' .. plugins[i][2] -- get the dest dir local destfile = mp.command_native({'expand-path', '~~/'}) .. '/' .. plugins[i][3] .. '/' .. plugins[i][2] -- copy the file contents over to the desired location local infile = io.open(pluginfile, 'r') local outfile = io.open(destfile, 'w') outfile:write(infile:read('*a')) outfile:close() infile:close() end end local function init() if opts.logging.log then -- log if asked to -- get our logfile's full path local fn = mp.command_native({'expand-path', opts.logging.logfile}) os.remove(fn) -- remove logfile so that we start fresh f = io.open(fn, 'a') -- open file buffer io.output(f) -- set it as default end logwrite('# of plugins defined in table: ' .. tablelength(plugins)) getgit() -- closing/removing everything if opts.dl.powerwash == true then logwrite('powerwashing the tmp dir (' .. opts.dl.dir .. ')') os.execute('rm -rf ' .. opts.dl.dir) end if opts.logging.log then io.close(f) end end mp.add_key_binding('U', 'UpdatePlugins', init)