From 16f32bdcdd10c3dc95519b5f0ab4d6818b3a3bfe Mon Sep 17 00:00:00 2001 From: Squibid Date: Sat, 27 Jul 2024 09:26:54 -0400 Subject: complete refactor see README for more info --- modules/lssi/lssi.lua | 133 -------------------------------------------------- 1 file changed, 133 deletions(-) delete mode 100644 modules/lssi/lssi.lua (limited to 'modules/lssi/lssi.lua') diff --git a/modules/lssi/lssi.lua b/modules/lssi/lssi.lua deleted file mode 100644 index 21f9536..0000000 --- a/modules/lssi/lssi.lua +++ /dev/null @@ -1,133 +0,0 @@ ---[[ -Eat It - a Mpv plugin manager - -Copyright © 2023 squibid - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -]] - --- NOTE: This is a POC and will most likely be reimplimented using diff files --- with git --- or we might want to generate a diff file from the requested changes --- and check if the diffs match in content - ---[[ - Lua Script Script Injector -Takes an input file and code then, it outputs a file with your code in there. -]]-- - -local mp = require('mp') - -mod = { - version = 'ALPHA 1.1', -- the current version of lssi - author = 'squibid', -} - --- load the eatit config file -dofile(mp.command_native({'expand-path', '~~/eatit-cfg.lua'})) - --- helper functions -local function tablelength(T) - local count = 0 - for _ in pairs(T) do count = count + 1 end - return count -end - -local function fileexists(name) - local f = io.open(name, 'r') - if f ~= nil then io.close(f) return true else return false end -end - -local function logwrite(string) - if opts.logging.log then - io.write(os.date(opts.logging.logdate)..' '..string..'\n') - end -end - -local function openlog() - if opts.logging.log then -- log if asked to - -- get our logfile's full path - fn = mp.command_native({'expand-path', opts.logging.logfile}) - - f = io.open(fn, 'a') -- open file buffer - if not f then return end - io.output(f) -- set it as default - end -end - -local function closelog() - if opts.logging.log then - io.close(f) - end -end - -local function inject(infile, l, outfile) - local inf = io.open(infile, 'r') - local infcont = {} - for i in inf:lines() do - table.insert(infcont, i) - end - inf:close() - - -- don't do anything if there is already code injected into the file - if string.find(infcont[1], "-- code injected by lssi") then - logwrite('code is already injected into '..infile) - return - end - logwrite('Injecting code into '..infile) - - for i in pairs(l) do - -- add requested line below existing line - if l[i][2] == 'G' then - infcont[tablelength(infcont)] = infcont[tablelength(infcont)]..'\n'..l[i][1] - elseif l[i][2] == 'g' then - infcont[1] = l[i][1]..'\n'..infcont[1] - else - infcont[l[i][2]] = (infcont[l[i][2]])..'\n'..l[i][1] - end - end - - local outf = io.open(outfile, 'w') - - -- we inject metadata to prevent writing to the file more than once - infcont[1] = "-- code injected by lssi "..mod.version..'\n'..infcont[1] - for i, v in ipairs(infcont) do - outf:write(v..'\n') - end - - io.close(outf) -end - -local function checkandinject() - openlog() - - for i = 1, tablelength(plugins) do - -- check if the plugin has been configured with lssi - if plugins[i]['lssi'] ~= nil then - -- get the file we want to inject our code into - local f = mp.command_native({'expand-path', '~~/'}) .. - '/'..(plugins[i]['dir'] or 'scripts') .. - '/'..plugins[i]['file'] - -- and the file we are trying to modify actually exists - if fileexists(f) then - -- inject it! no going back now - inject(f, plugins[i]['lssi'], f) - else - logwrite('Failed to inject code into "' .. - plugins[i]['file']..'" file does not exist') - end - end - end - - closelog() -end - -checkandinject() -- cgit v1.2.1