/* * decaffeinate suggestions: * DS101: Remove unnecessary use of Array.from * DS102: Remove unnecessary code created because of implicit returns * DS207: Consider shorter variations of null checks * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ let TikzManager; const fs = require("fs"); const Path = require("path"); const ResourceWriter = require("./ResourceWriter"); const SafeReader = require("./SafeReader"); const logger = require("logger-sharelatex"); // for \tikzexternalize or pstool to work the main file needs to match the // jobname. Since we set the -jobname to output, we have to create a // copy of the main file as 'output.tex'. module.exports = (TikzManager = { checkMainFile(compileDir, mainFile, resources, callback) { // if there's already an output.tex file, we don't want to touch it if (callback == null) { callback = function(error, needsMainFile) {}; } for (let resource of Array.from(resources)) { if (resource.path === "output.tex") { logger.log({compileDir, mainFile}, "output.tex already in resources"); return callback(null, false); } } // if there's no output.tex, see if we are using tikz/pgf or pstool in the main file return ResourceWriter.checkPath(compileDir, mainFile, function(error, path) { if (error != null) { return callback(error); } return SafeReader.readFile(path, 65536, "utf8", function(error, content) { if (error != null) { return callback(error); } const usesTikzExternalize = (content != null ? content.indexOf("\\tikzexternalize") : undefined) >= 0; const usesPsTool = (content != null ? content.indexOf("{pstool}") : undefined) >= 0; logger.log({compileDir, mainFile, usesTikzExternalize, usesPsTool}, "checked for packages needing main file as output.tex"); const needsMainFile = (usesTikzExternalize || usesPsTool); return callback(null, needsMainFile); }); }); }, injectOutputFile(compileDir, mainFile, callback) { if (callback == null) { callback = function(error) {}; } return ResourceWriter.checkPath(compileDir, mainFile, function(error, path) { if (error != null) { return callback(error); } return fs.readFile(path, "utf8", function(error, content) { if (error != null) { return callback(error); } logger.log({compileDir, mainFile}, "copied file to output.tex as project uses packages which require it"); // use wx flag to ensure that output file does not already exist return fs.writeFile(Path.join(compileDir, "output.tex"), content, {flag:'wx'}, callback); }); }); } });