mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-08 19:50:47 +00:00
fallback check for missing files
dot files are not examined by OutputFileFinder, so do an extra check to make sure those exist also check for any relative paths in the resources
This commit is contained in:
parent
0d613a6480
commit
81e8243827
1 changed files with 24 additions and 6 deletions
|
@ -4,6 +4,7 @@ logger = require "logger-sharelatex"
|
|||
settings = require("settings-sharelatex")
|
||||
Errors = require "./Errors"
|
||||
SafeReader = require "./SafeReader"
|
||||
async = require "async"
|
||||
|
||||
module.exports = ResourceStateManager =
|
||||
|
||||
|
@ -50,14 +51,31 @@ module.exports = ResourceStateManager =
|
|||
resources = ({path: path} for path in resourceList)
|
||||
callback(null, resources)
|
||||
|
||||
checkResourceFiles: (resources, allFiles, directory, callback = (error) ->) ->
|
||||
checkResourceFiles: (resources, allFiles, basePath, callback = (error) ->) ->
|
||||
# check the paths are all relative to current directory
|
||||
for file in resources or []
|
||||
for dir in file?.path?.split('/')
|
||||
if dir == '..'
|
||||
return callback new Error("relative path in resource file list")
|
||||
# check if any of the input files are not present in list of files
|
||||
seenFile = {}
|
||||
for file in allFiles
|
||||
seenFile[file] = true
|
||||
missingFiles = (resource.path for resource in resources when not seenFile[resource.path])
|
||||
if missingFiles.length > 0
|
||||
logger.err missingFiles:missingFiles, dir:directory, allFiles:allFiles, resources:resources, "missing input files for project"
|
||||
return callback new Errors.FilesOutOfSyncError("resource files missing in incremental update")
|
||||
missingFileCandidates = (resource.path for resource in resources when not seenFile[resource.path])
|
||||
# now check if they are really missing
|
||||
ResourceStateManager._checkMissingFiles missingFileCandidates, basePath, (missingFiles) ->
|
||||
if missingFiles?.length > 0
|
||||
logger.err missingFiles:missingFiles, basePath:basePath, allFiles:allFiles, resources:resources, "missing input files for project"
|
||||
return callback new Errors.FilesOutOfSyncError("resource files missing in incremental update")
|
||||
else
|
||||
callback()
|
||||
|
||||
_checkMissingFiles: (missingFileCandidates, basePath, callback = (missingFiles) ->) ->
|
||||
if missingFileCandidates.length > 0
|
||||
fileDoesNotExist = (file, cb) ->
|
||||
fs.stat Path.join(basePath, file), (err) ->
|
||||
logger.log file:file, err:err, result: err?, "stating potential missing file"
|
||||
cb(err?)
|
||||
async.filterSeries missingFileCandidates, fileDoesNotExist, callback
|
||||
else
|
||||
callback()
|
||||
callback([])
|
||||
|
|
Loading…
Add table
Reference in a new issue