const Cu = Components.utils; const {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {}); const {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", {}); const require = devtools.require; const promise = require("projecteditor/helpers/promise"); const ProjectEditor = require("projecteditor/projecteditor"); const SAMPLE_PATH = buildTempDirectoryStructure(); const SAMPLE_NAME = "DevTools Content Application Name"; const SAMPLE_PROJECT_URL = "data:text/html;charset=utf-8,
ProjectEditor Temp File
', ' ', ''].join("\n") ); let readmeFile = FileUtils.getFile("TmpD", ["ProjectEditor", "README.md"]); readmeFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); writeToFile(readmeFile, [ '## Readme' ].join("\n") ); let licenseFile = FileUtils.getFile("TmpD", ["ProjectEditor", "LICENSE"]); licenseFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); writeToFile(licenseFile, [ '/* This Source Code Form is subject to the terms of the Mozilla Public', ' * License, v. 2.0. If a copy of the MPL was not distributed with this', ' * file, You can obtain one at http://mozilla.org/MPL/2.0/. */' ].join("\n") ); let cssFile = FileUtils.getFile("TmpD", ["ProjectEditor", "css", "styles.css"]); cssFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); writeToFile(cssFile, [ 'body {', ' background: red;', '}' ].join("\n") ); FileUtils.getFile("TmpD", ["ProjectEditor", "js", "script.js"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); FileUtils.getFile("TmpD", ["ProjectEditor", "img", "fake.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "16x16.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "32x32.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "128x128.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "vector.svg"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); return TEMP_DIR.path; } // https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O#Writing_to_a_file function writeToFile(file, data) { let defer = promise.defer(); var ostream = FileUtils.openSafeFileOutputStream(file) var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance(Components.interfaces.nsIScriptableUnicodeConverter); converter.charset = "UTF-8"; var istream = converter.convertToInputStream(data); // The last argument (the callback) is optional. NetUtil.asyncCopy(istream, ostream, function(status) { if (!Components.isSuccessCode(status)) { // Handle error! console.log("ERROR WRITING TEMP FILE", status); } }); }