mirror of
https://github.com/mwpenny/portal64-still-alive.git
synced 2024-10-20 22:47:37 -04:00
33 lines
972 B
JavaScript
33 lines
972 B
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const InvalidTokenCharacter = /[^A-Za-z0-9_]/gim;
|
|
|
|
function getSegmentName(objectLocation) {
|
|
const levelName = path.basename(objectLocation);
|
|
const noExtension = levelName.slice(0, levelName.length - path.extname(levelName).length);
|
|
|
|
return noExtension.replace(InvalidTokenCharacter, '_');
|
|
}
|
|
|
|
function generateLD(segmentLocation, objectLocation) {
|
|
const segmentName = getSegmentName(objectLocation);
|
|
|
|
return `
|
|
BEGIN_SEG(${segmentName}, ${segmentLocation})
|
|
{
|
|
${objectLocation}(.data);
|
|
${objectLocation}(.bss);
|
|
}
|
|
END_SEG(${segmentName})
|
|
`;
|
|
}
|
|
|
|
function generateData(segmentLocation, objectLocations) {
|
|
return objectLocations.map(objectLocation => generateLD(segmentLocation, objectLocation)).join('\n');
|
|
}
|
|
|
|
const output = process.argv[2];
|
|
const segmentLocation = process.argv[3];
|
|
|
|
fs.writeFileSync(output, generateData(segmentLocation, process.argv.slice(4))); |