Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------
- -- Peripheral manager
- -- by SukaiPoppuGo
- -- Modpack: Luapolis 1.3 / ComputerCraft
- -- Generation du code d'un API pour controuner les bugs
- -- lies a certains peripheriques.
- --------------------------------------------------------
- -- Params:
- -- sFileName : chemin/nom du fichier
- -- sSide : nom du cote par lequel le peripherique est
- -- attache, ou bien son identifiant dans le network
- local sFileName, sSide = ...
- --------------------------------------------------------
- print("Verification des parametres")
- if not sFileName or not sSide then
- printError("Usage: <string:fileName> <string:side>")
- return
- elseif fs.exists(sFileName) then
- local confirm
- repeat
- printError("Fichier:", sFileName, "deja existant")
- print("Ecraser ? Y/N")
- confirm = string.lower( read() )
- if confirm ~= "y" and confirm ~= "n" then
- printError("Reponse invalide")
- print(string.format([[Veuillez repondre :
- N (No) pour annuler
- Y (Yes) pour ecraser le fichier :
- %s]], sFileName))
- end
- until confirm == "y" or confirm == "n"
- if confirm == "n" then
- return
- end
- end
- if not peripheral.isPresent(sSide) then
- printError("Peripherique introuvable:", sSide)
- return
- end
- --------------------------------------------------------
- print("Examen du peripherique")
- local sTtype = peripheral.getType(sSide)
- local tMethodsList = peripheral.getMethods(sSide)
- --------------------------------------------------------
- print("Preparation du fichier")
- local file = fs.open(sFileName, "w")
- file.write(string.format([[-- Peripheral manager: (%s) %s
- local sSide = "%s"
- local function _rawCall(sMethod, ...)
- return peripheral.call(sSide, sMethod, ...)
- end
- ]],
- sSide, sTtype, sSide))
- --END file.write
- print("Copie des methodes")
- for i,sMethod in pairs(tMethodsList) do
- print(" ", i.."/"..#tMethodsList, sMethod)
- file.write(string.format([[
- function %s(...)
- return _rawCall("%s", ...)
- end
- ]], sMethod, sMethod))
- --END file.write
- end
- --------------------------------------------------------
- print("Sauvegarde:", sFileName)
- file.close()
- local ext = settings.get("edit.default_extension", "" )
- if not fs.exists(sFileName) then
- printError("Echec: Le fichier n'a pu etre enregistre:", sFileName)
- return
- elseif not os.loadAPI(sFileName) then
- printError("Bug:", sFileName, "echoue a fonctionner comme un API")
- return
- elseif string.sub(sFileName,-4) == ".lua" then
- os.unloadAPI(fs.getName(string.sub(sFileName,1,-5)))
- elseif string.sub(sFileName,-1*(string.len(ext)+1)) == "."..ext then
- os.unloadAPI(fs.getName(string.sub(sFileName,1,-1*(string.len(ext)+1))))
- else
- os.unloadAPI(fs.getName(sFileName))
- end
- print("Succes")
- print("Vous pourrez employer ce peripherique via l'API:")
- print(string.format([[os.loadAPI("%s")]], sFileName))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement