| @@ -404,6 +404,78 @@ ext.add("open-remote-init-file", function(ev, arg){ | |||||
| window.openUILinkIn(URL, "tab"); | window.openUILinkIn(URL, "tab"); | ||||
| }, "Open remote initialization file"); | }, "Open remote initialization file"); | ||||
| var updateInitFile = (function(){ | |||||
| const URL = "https://raw.github.com/10sr/dotfiles/master/_keysnail.js"; | |||||
| // content/modules/userscript.js | |||||
| // copy file from aFile | |||||
| function placeFile(aFile, force) { | |||||
| var dstdir = util.getUnicharPref("extensions.keysnail.userscript.location"); | |||||
| if (dstdir === "") { | |||||
| throw util.getLocaleString("failedToInstallFile", [aFile.leafName]) + " :: " + x; | |||||
| } | |||||
| // TODO: fail when dstdir is empty | |||||
| try | |||||
| { | |||||
| // calc dir from path | |||||
| let destinationDir = util.openFile(dstdir); | |||||
| let destinationFile = util.openFile(dstdir); | |||||
| destinationFile.append(aFile.leafName); | |||||
| if (destinationFile.exists()) | |||||
| { | |||||
| if (util.hashFile(aFile) === util.hashFile(destinationFile)) | |||||
| { | |||||
| // no need to install this file | |||||
| return destinationFile; | |||||
| } | |||||
| let confirmed = force || | |||||
| util.confirm(util.getLocaleString("overWriteConfirmationTitle"), | |||||
| util.getLocaleString("overWriteConfirmation", [destinationFile.path])); | |||||
| if (!confirmed) { | |||||
| throw util.getLocaleString("canceledByUser"); | |||||
| } | |||||
| } | |||||
| aFile.moveTo(destinationDir, ""); | |||||
| return destinationFile; | |||||
| } | |||||
| catch (x) | |||||
| { | |||||
| throw util.getLocaleString("failedToInstallFile", [aFile.leafName]) + " :: " + x; | |||||
| } | |||||
| } | |||||
| function updateFile() { | |||||
| util.httpGet(URL, false, function (req) { | |||||
| if (req.status !== 200) { | |||||
| util.message(req.responseText); | |||||
| } | |||||
| try { | |||||
| let name = util.getLeafNameFromURL(URL); | |||||
| let file = userscript.writeTextTmp(name, req.responseText); | |||||
| let installed = placeFile(file); | |||||
| util.message(installed.path + " installed"); | |||||
| } catch (x) { | |||||
| util.message("An error occured while installing required scripts :: " + x.message); | |||||
| } | |||||
| }); | |||||
| } | |||||
| return { | |||||
| updateFile: updateFile | |||||
| }; | |||||
| })(); | |||||
| ext.add("update-init-file", updateInitFile.updateFile, "update init file"); | |||||
| var importExportBookmarks = (function(){ | var importExportBookmarks = (function(){ | ||||
| function getOrganizer(){ | function getOrganizer(){ | ||||
| // [How to call for Firefox bookmark dialog? - Stack Overflow] | // [How to call for Firefox bookmark dialog? - Stack Overflow] | ||||