2017-03-16 12:55:53 -04:00
fs = require "fs"
Path = require "path"
2017-03-21 07:29:37 -04:00
ResourceWriter = require "./ResourceWriter"
2017-09-29 12:00:53 -04:00
SafeReader = require "./SafeReader"
2017-03-16 12:55:53 -04:00
logger = require "logger-sharelatex"
2018-10-10 11:13:20 -04:00
# for \ tikzexternalize or pstool to work the main file needs to match the
2017-03-16 12:55:53 -04:00
# jobname . Since we set the - jobname to output , we have to create a
# copy of the main file as 'output.tex' .
module . exports = TikzManager =
2017-09-29 12:00:53 -04:00
2018-10-10 11:13:20 -04:00
checkMainFile : ( compileDir , mainFile , resources , callback = ( error , needsMainFile ) - > ) - >
2017-03-16 12:55:53 -04:00
# if there 's already an output.tex file, we don' t want to touch it
for resource in resources
if resource . path is "output.tex"
2017-09-29 12:00:53 -04:00
logger . log compileDir : compileDir , mainFile : mainFile , "output.tex already in resources"
return callback ( null , false )
2018-10-10 11:13:20 -04:00
# if there ' s no output . tex , see if we are using tikz / pgf or pstool in the main file
2017-09-29 12:00:53 -04:00
ResourceWriter . checkPath compileDir , mainFile , ( error , path ) - >
return callback ( error ) if error ?
SafeReader . readFile path , 65536 , "utf8" , ( error , content ) - >
return callback ( error ) if error ?
usesTikzExternalize = content ? . indexOf ( "\\tikzexternalize" ) >= 0
2018-10-15 05:01:52 -04:00
usesPsTool = content ? . indexOf ( "{pstool}" ) >= 0
2018-10-10 11:13:20 -04:00
logger . log compileDir : compileDir , mainFile : mainFile , usesTikzExternalize : usesTikzExternalize , usesPsTool : usesPsTool , "checked for packages needing main file as output.tex"
needsMainFile = ( usesTikzExternalize || usesPsTool )
callback null , needsMainFile
2017-03-16 12:55:53 -04:00
injectOutputFile : ( compileDir , mainFile , callback = ( error ) - > ) - >
2017-03-21 07:29:37 -04:00
ResourceWriter . checkPath compileDir , mainFile , ( error , path ) - >
2017-03-16 12:55:53 -04:00
return callback ( error ) if error ?
2017-03-21 07:29:37 -04:00
fs . readFile path , "utf8" , ( error , content ) - >
return callback ( error ) if error ?
2018-10-12 05:49:54 -04:00
logger . log compileDir : compileDir , mainFile : mainFile , "copied file to output.tex as project uses packages which require it"
2017-03-21 07:29:37 -04:00
# use wx flag to ensure that output file does not already exist
fs . writeFile Path . join ( compileDir , "output.tex" ) , content , { flag : 'wx' } , callback