Removed game.dat requirement. Added logging.

This commit is contained in:
chris062689 2019-04-07 20:04:24 -04:00
parent cde239172f
commit 0092f79f8f

View file

@ -141,81 +141,6 @@ function validateFileExists(dir) {
return true; return true;
} }
/// Validates a TOML document
function validateTOML(path) {
if (fs.existsSync(path) === false) {
validationError(`TOML was not found at ${path}.`);
return;
}
let rawContents = fs.readFileSync(path);
let tomlDoc;
try {
tomlDoc = toml.parse(rawContents);
} catch (e) {
validationError("TOML parse error (" + e.line + "): " + e.message);
return;
}
// Check the global header section
validateNotEmpty(tomlDoc, "title");
validateNotEmpty(tomlDoc, "description");
if (tomlDoc["github_issues"] !== undefined) {
validateContents(tomlDoc, "github_issues", field => {
if (Array.isArray(field) === false) {
validationError("Github issues field is not an array!")
} else {
// Validate each individual entry
field.forEach(elem => {
if (typeof elem !== "number") {
validationError("Github issues entry is not a number!")
}
});
}
});
}
if (tomlDoc["gametypes"] !== undefined) {
validateContents(tomlDoc, "gametypes", field => {
if (config.gametypes.indexOf(field) === -1) {
validationError(`Could not find gametype \"${field}\"!`);
}
if (field === "vc") {
validateContents(tomlDoc, "vc_system", field => {
if (config.vc_systems.indexOf(field) === -1) {
validationError(`Could not find VC console \"${field}\"!`);
}
});
}
});
}
let section;
// Check each release individually
if (tomlDoc["releases"] !== undefined) {
section = tomlDoc["releases"];
section.forEach(release => {
validateContents(release, "title", field => {
if (field.length !== 16) {
validationError(`Release: Game title ID has an invalid length`);
} else if (!field.match(/^([A-Z0-9]){16}$/)) {
validationError(`Release: Game title ID is not a hexadecimal ID`);
}
});
validateContents(release, "region", field => {
if (config.regions.indexOf(field) === -1) {
validationError(`Release: Invalid region ${field}`);
}
});
validateIsDate(release, "release_date");
});
} else {
validationError("No releases.")
}
}
/// Validates the basic structure of a save game's TOML. Assumes it exists. /// Validates the basic structure of a save game's TOML. Assumes it exists.
function validateSaveTOML(path) { function validateSaveTOML(path) {
let rawContents = fs.readFileSync(path); let rawContents = fs.readFileSync(path);
@ -300,6 +225,8 @@ getDirectories(config.directory).forEach(function (game) {
let inputDirectoryGame = `${config.directory}/${game}`; let inputDirectoryGame = `${config.directory}/${game}`;
currentGame = game; currentGame = game;
console.info(`Validating ${currentGame}`)
// Check that everything is lowercase and is a known file. // Check that everything is lowercase and is a known file.
getFiles(inputDirectoryGame).forEach(file => { getFiles(inputDirectoryGame).forEach(file => {
if (config.permitted_files.indexOf(file) === -1) { if (config.permitted_files.indexOf(file) === -1) {
@ -324,9 +251,6 @@ getDirectories(config.directory).forEach(function (game) {
// Verify the game's image. // Verify the game's image.
validateImage(`${inputDirectoryGame}/${config.icon.filename}`, config.icon); validateImage(`${inputDirectoryGame}/${config.icon.filename}`, config.icon);
// Verify the game's metadata.
validateTOML(`${inputDirectoryGame}/${config.data.filename}`);
// Verify the game's screenshots. // Verify the game's screenshots.
validateDirImages(`${inputDirectoryGame}/${config.screenshots.dirname}`, validateDirImages(`${inputDirectoryGame}/${config.screenshots.dirname}`,
config.screenshots); config.screenshots);