Files
esercizi-web/base/Terminale/crea_files.js
2026-02-05 01:54:49 +01:00

41 lines
9.8 KiB
JavaScript

import { existsSync, mkdirSync, writeFileSync } from 'fs';
import { join, resolve } from 'path';
function createFileStructure(basePath, obj) {
if (!existsSync(basePath)) mkdirSync(basePath, { recursive: true });
for (const key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
const newPath = join(basePath, key);
const value = obj[key];
if (typeof value === 'string') {
writeFileSync(newPath, value);
} else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
if (!existsSync(newPath)) mkdirSync(newPath);
createFileStructure(newPath, value);
}
}
}
}
const cases = {
"": "eyIxX0FjY2FtcGFtZW50b19TaWN1cm8iOnsiZGFfZXNwbG9yYXJlLnR4dCI6IkxhIGZvcmVzdGEgc2VtYnJhIG9zY3VyYSBlIG1pc3Rlcmlvc2EsIHF1aSBkb2JiaWFtbyB0cm92YXJlIHVuIHRlc29ybyBuYXNjb3N0by4iLCJpbml6aWFfZXNwbG9yYXppb25lLmpzIjoiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnO1xuXG5sZXQgcGF0aCA9IHJlc29sdmUoKTtcbmNvbnN0IGluZGV4UGF0aCA9IHBhdGguaW5kZXhPZignVGVybWluYWxlJykgKyAnVGVybWluYWxlJy5sZW5ndGg7XG5pZiAoaW5kZXhQYXRoID09PSAtMSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1F1YWxjb3NhIMOoIGFuZGF0byBzdG9ydG8uJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufVxucGF0aCA9IHBhdGguc2xpY2UoMCwgaW5kZXhQYXRoKTtcblxuZXhlYygnbm9kZSBjcmVhX2ZpbGVzLmpzIGZvcmVzdCcsIHsgY3dkOiBwYXRoIH0sIChlcnIsIHNvdXQsIHNlcnIpID0+IGVyciA/IGNvbnNvbGUuZXJyb3Ioc2VycikgOiBjb25zb2xlLmxvZyhzb3V0KSk7XG5jb25zb2xlLmxvZygnSW5pemlhIGxhIHR1YSBlc3Bsb3JhemlvbmUgZGVsbGEgZm9yZXN0YSFcXG5Ub3JuYSBpbmRpZXRybyBjb24gYGNkIC4uYCBlIHVzYSBscyBwZXIgdmVkZXJlIGkgZmlsZXMuJyk7XG4iLCJ0ZW5kYV9kZWxsZV9wcm92dmlzdGUiOnsiY2liby50eHQiOiJIYWkgdHJvdmF0byBkZWwgY2libyFcbk90dGltbyBwZXIgaWwgdmlhZ2dpby4iLCJhY3F1YS50eHQiOiJIYWkgdHJvdmF0byBkZWxsJ2FjcXVhIVxuVXRpbGUgcGVyIGRpc3NldGFydGkuIn19fQ=",
"forest": "eyIyX0xhX0ZvcmVzdGFfUGVyZHV0YSI6eyJpbmRpemlvLnR4dCI6Ik1pc3Npb25lOiBUcm92YSBpbCBURVNPUk8udHh0LlxuSW5pemlhIGVzcGxvcmFuZG8gdW5hIGRlbGxlIHBvc3NpYmlsaSB2aWUuXG5SaWNvcmRhIGRpIHVzYXJlIGkgY29tYW5kaSAnbHMnLCAnY2QnIGUgJ2NhdCcgcGVyIHRyb3ZhcmUgbGEgdmlhIGNvcnJldHRhLiIsInJhZHVyYV9sdW1pbm9zYSI6eyJpbmRpemlvLnR4dCI6IlVuYSByYWR1cmEgaWxsdW1pbmF0YTogc2VtYnJhIHBlcsOyIG5vbiBlc3NlcmNpIG51bGxhIGRpIGludGVyZXNzYW50ZS5cblRvcm5hIGluZGlldHJvIGNvbiAnY2QgLi4nIn0sImNpdHTDoF9hbF9jb25maW5lIjp7ImluZGl6aW8udHh0IjoiTm9uIGNyZWRvIGNoZSBzaWEgaWwgcG9zdG8gZ2l1c3RvIHBlciBjZXJjYXJlIGlsIHRlc29yby5cblRvcm5hIGluZGlldHJvIGNvbiAnY2QgLi4nIn0sImZvcmVzdGEiOnsiaW5kaXppby50eHQiOiJJbCBwZXJjb3JzbyBzZW1icmEgZmF0dGliaWxlLCBwcm92YSBhIHByb3NlZ2l1cmUgcGVyIHVuYSBkZWxsZSBkdWUgdmllIHBvc3NpYmlsaS4iLCJhbGJlcm9fbWFlc3RybyI6eyJpbmRpemlvLnR4dCI6IlNlaSBzYWxpdG8gdHJvcHBvIGluIGFsdG8uXG5Ub3JuYSBpbmRpZXRybyBjb24gJ2NkIC4uJyJ9LCJzZW50aWVyb19idWlvIjp7ImluZGl6aW8udHh0IjoiVHJvcHBvIGJ1aW8gcGVyIGNvbnRpbnVhcmUuXG5Ub3JuYSBpbmRpZXRybyBjb24gJ2NkIC4uJyJ9fSwiZ3JvdHRhX3BpY2NvbGEiOnsiaW5kaXppby50eHQiOiJTZW1icmEgZXNzZXJlIHRyb3BwbyBzdHJldHRhIHBlciBwcm9zZWd1aXJlLlxuVG9ybmEgaW5kaWV0cm8gY29uICdjZCAuLicifSwicG9udGVfc29zcGVzbyI6eyJpbmRpemlvLnR4dCI6IklsIHBlcmNvcnNvIHNlbWJyYSBmYXR0aWJpbGUsIHByb3ZhIGEgcHJvc2VnaXVyZSBwZXIgdW5hIGRlbGxlIGR1ZSB2aWUgcG9zc2liaWxpLiIsImxhX21vbnRhZ25hIjp7ImZpdW1lX2ltcGV0dW9zbyI6eyJpbmRpemlvLnR4dCI6Ik5vbiBwdW9pIGF0dHJhdmVyc2FyZSBhIG51b3RvLCBsYSBjb3JyZW50ZSDDqCB0cm9wcG8gZm9ydGUuXG5Ub3JuYSBpbmRpZXRybyBjb24gJ2NkIC4uJyJ9LCJjcmVwYWNjaW8iOnsiaW5kaXppby50eHQiOiJMYSBzYWxpdGEgw6ggdHJvcHBvIHJpcGlkYS5cblRvcm5hIGluZGlldHJvIGNvbiAnY2QgLi4nIn0sInNlbnRpZXJvX2RlbF9jcmluYWxlIjp7ImluZGl6aW8udHh0IjoiQWxsYSBmaW5lIGRlbCBzZW50aWVybyB2ZWRpIHVuIGFudGljbyB0ZW1waW8uIiwidGVtcGlvX2FudGljbyI6eyJURVNPUk8udHh0IjoiQ09NUExJTUVOVEkhIEhhaSB0cm92YXRvIGlsIHRlc29ybyBlIGNvbXBsZXRhdG8gaWwgbGFiaXJpbnRvISIsImxldmFfbmFzY29zdGEuanMiOiJpbXBvcnQgeyBleGVjIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5cbmxldCBwYXRoID0gcmVzb2x2ZSgpO1xuY29uc3QgaW5kZXhQYXRoID0gcGF0aC5pbmRleE9mKCdUZXJtaW5hbGUnKSArICdUZXJtaW5hbGUnLmxlbmd0aDtcbmlmIChpbmRleFBhdGggPT09IC0xKSB7XG4gICAgY29uc29sZS5lcnJvcignUXVhbGNvc2Egw6ggYW5kYXRvIHN0b3J0by4nKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5wYXRoID0gcGF0aC5zbGljZSgwLCBpbmRleFBhdGgpO1xuXG5leGVjKCdub2RlIGNyZWFfZmlsZXMuanMgcnVpbnMnLCB7IGN3ZDogcGF0aCB9LCAoZXJyLCBzb3V0LCBzZXJyKSA9PiBlcnIgPyBjb25zb2xlLmVycm9yKHNlcnIpIDogY29uc29sZS5sb2coc291dCkpO1xuY29uc29sZS5sb2coJ1NlbWJyYSBlc3NlciBhcHBhcnNvIHVuIG51b3ZvIHNlbnRpZXJvIGRhIGVzcGxvYXJlIVxcblByb3ZhIGEgY2VyY2FybG8sIG1hIHByaW1hIHRvcm5hIGFsbFxcJ2FjY2FtcGFtZW50b19zaWN1cm8uJyk7XG4ifX19LCJ2YWxsZV9uYXNjb3N0YSI6eyJpbmRpemlvLnR4dCI6IkxhIHZhbGxlIMOoIGJlbGxpc3NpbWEsIG1hIHNlbWJyYSBub24gcG9ydGkgZGEgbmVzc3VuYSBwYXJ0ZS5cblRvcm5hIGluZGlldHJvIGNvbiAnY2QgLi4nIn19fX0=",
"ruins": "eyIzX0xlX1JvdmluZV9kZWxfVGVtcGlvIjp7ImluZGl6aW8udHh0IjoiTWlzc2lvbmU6IFRyb3ZhIGlsIHRlc29ybyBuYXNjb3N0byBuZWxsZSByb3ZpbmUgYW50aWNoZS5cblF1ZXN0YSBtaXNzaW9uZSByaWNoaWVkZSBsJ3V0aWxpenpvIGRpICdub2RlJyBwZXIgc2Jsb2NjYXJlIG51b3ZpIHBhc3NhZ2dpLlxuSW5pemlhIHVzYW5kbyB1bm8gZGVpIGR1ZSBzY3JpcHQuIiwic2NhdmFfYV9kZXN0cmEuanMiOiJpbXBvcnQgeyBleGVjIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5cbmxldCBwYXRoID0gcmVzb2x2ZSgpO1xuY29uc3QgaW5kZXhQYXRoID0gcGF0aC5pbmRleE9mKCdUZXJtaW5hbGUnKSArICdUZXJtaW5hbGUnLmxlbmd0aDtcbmlmIChpbmRleFBhdGggPT09IC0xKSB7XG4gICAgY29uc29sZS5lcnJvcignUXVhbGNvc2Egw6ggYW5kYXRvIHN0b3J0by4nKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5wYXRoID0gcGF0aC5zbGljZSgwLCBpbmRleFBhdGgpO1xuXG5leGVjKCdub2RlIGNyZWFfZmlsZXMuanMgZGlnOnInLCB7IGN3ZDogcGF0aCB9LCAoZXJyLCBzb3V0LCBzZXJyKSA9PiBlcnIgPyBjb25zb2xlLmVycm9yKHNlcnIpIDogY29uc29sZS5sb2coc291dCkpO1xuY29uc29sZS5sb2coJ05lbGxvIHNjYXZhcmUgaGFpIHRyb3ZhdG8gdW4gcGVyY29yc28hXFxuUHJvdmEgYSBzZWd1aXJsbyBwZXIgdmVkZXJlIGRvdmUgcG9ydGEuJyk7XG4iLCJzY2F2YV9hX3NpbmlzdHJhLmpzIjoiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnO1xuXG5sZXQgcGF0aCA9IHJlc29sdmUoKTtcbmNvbnN0IGluZGV4UGF0aCA9IHBhdGguaW5kZXhPZignVGVybWluYWxlJykgKyAnVGVybWluYWxlJy5sZW5ndGg7XG5pZiAoaW5kZXhQYXRoID09PSAtMSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1F1YWxjb3NhIMOoIGFuZGF0byBzdG9ydG8uJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufVxucGF0aCA9IHBhdGguc2xpY2UoMCwgaW5kZXhQYXRoKTtcblxuZXhlYygnbm9kZSBjcmVhX2ZpbGVzLmpzIGRpZzpsJywgeyBjd2Q6IHBhdGggfSwgKGVyciwgc291dCwgc2VycikgPT4gZXJyID8gY29uc29sZS5lcnJvcihzZXJyKSA6IGNvbnNvbGUubG9nKHNvdXQpKTtcbmNvbnNvbGUubG9nKCdEb3BvIGF2ZXIgc2NhdmF0bywgcGVyIHVuIHBvXFwnLCB0cm92aSB1biBwZXJjb3JzbyBpbnRlcmVzc2FudGUhXFxuUHJvdmEgYSBzZWd1aXJsbyBwZXIgdmVkZXJlIGRvdmUgcG9ydGEuJyk7XG4ifX0=",
"dig:r": "eyIzX0xlX1JvdmluZV9kZWxfVGVtcGlvIjp7InBlcmNvcnNvX2Rlc3RyYSI6eyJpbmRpemlvLnR4dCI6IklsIHBlcmNvcnNvIGRpIGRlc3RyYSDDqCBwb2x2ZXJvc28uIFZlZGkgdW4gbWVjY2FuaXNtby4iLCJhdHRpdmFfbWVjY2FuaXNtb19kZXN0cm8uanMiOiJpbXBvcnQgeyBleGVjIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5cbmxldCBwYXRoID0gcmVzb2x2ZSgpO1xuY29uc3QgaW5kZXhQYXRoID0gcGF0aC5pbmRleE9mKCdUZXJtaW5hbGUnKSArICdUZXJtaW5hbGUnLmxlbmd0aDtcbmlmIChpbmRleFBhdGggPT09IC0xKSB7XG4gICAgY29uc29sZS5lcnJvcignUXVhbGNvc2Egw6ggYW5kYXRvIHN0b3J0by4nKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5wYXRoID0gcGF0aC5zbGljZSgwLCBpbmRleFBhdGgpO1xuXG5leGVjKCdub2RlIGNyZWFfZmlsZXMuanMgY3Jvc3Nyb2FkJywgeyBjd2Q6IHBhdGggfSwgKGVyciwgc291dCwgc2VycikgPT4gZXJyID8gY29uc29sZS5lcnJvcihzZXJyKSA6IGNvbnNvbGUubG9nKHNvdXQpKTtcbmNvbnNvbGUubG9nKCdJbCBtZWNjYW5pc21vIHBvbHZhcm9zbyBpbml6aWEgYSBtdW92ZXJzaS5cXG5TZW50aSB1biBydW1vcmUgZGkgaW5ncmFuYWdnaSBwcm92ZW5pcmUgZGEgZGlldHJvLi4uJyk7In19fQ=",
"dig:l": "eyIzX0xlX1JvdmluZV9kZWxfVGVtcGlvIjp7InBlcmNvcnNvX3NpbmlzdHJhIjp7ImluZGl6aW8udHh0IjoiSWwgcGVyY29yc28gZGkgc2luaXN0cmEgw6ggdW1pZG8uIFZlZGkgdW5hIGxldmEuIiwidGlyYV9sZXZhX3NpbmlzdHJhLmpzIjoiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gJ3BhdGgnO1xuXG5sZXQgcGF0aCA9IHJlc29sdmUoKTtcbmNvbnN0IGluZGV4UGF0aCA9IHBhdGguaW5kZXhPZignVGVybWluYWxlJykgKyAnVGVybWluYWxlJy5sZW5ndGg7XG5pZiAoaW5kZXhQYXRoID09PSAtMSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1F1YWxjb3NhIMOoIGFuZGF0byBzdG9ydG8uJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xufVxucGF0aCA9IHBhdGguc2xpY2UoMCwgaW5kZXhQYXRoKTtcblxuZXhlYygnbm9kZSBjcmVhX2ZpbGVzLmpzIGNyb3Nzcm9hZCcsIHsgY3dkOiBwYXRoIH0sIChlcnIsIHNvdXQsIHNlcnIpID0+IGVyciA/IGNvbnNvbGUuZXJyb3Ioc2VycikgOiBjb25zb2xlLmxvZyhzb3V0KSk7XG5jb25zb2xlLmxvZygnTGEgbGV2YSBzaSBtdW92ZSBjb24gdW5vIHNjcmljY2hpb2xpby5cXG5TZW50aSB1biBmb3J0ZSBydW1vcmUgcHJvdmVuaXJlIGRhIGRpZXRyby4uLicpOyJ9fX0=",
"crossroad": "eyIzX0xlX1JvdmluZV9kZWxfVGVtcGlvIjp7InBvcnRhX25hc2Nvc3RhIjp7IlJFQURNRS50eHQiOiJFbnRyYW1iaSBpIG1lY2NhbmlzbWkgc2VtYnJhbm8gYXZlciBhcGVydG8gcXVlc3RvIHBhc3NhZ2dpby4gUHVvaSBzYWxpcmUgbyBzY2VuZGVyZS4iLCJwaWFub19zdXBlcmlvcmUiOnsidmljb2xvX2NlY28udHh0IjoiUHVydHJvcHBvIHNlaSBmaW5pdG8gaW4gdW4gdmljb2xvIGNpZWNvLlxuVG9ybmEgaW5kaWV0cm8gY29uICdjZCAuLicifSwicGlhbm9faW5mZXJpb3JlIjp7ImluZGl6aW8udHh0IjoiUXVlc3RvIHBpYW5vIHNlbWJyYSBwcm9tZXR0ZW50ZS4gQyfDqCB1bid1bHRpbWEgcG9ydGEgYmxvY2NhdGEuIiwiZm9yemFfbGFfcG9ydGEuanMiOiJpbXBvcnQgeyBleGVjIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAncGF0aCc7XG5cbmxldCBwYXRoID0gcmVzb2x2ZSgpO1xuY29uc3QgaW5kZXhQYXRoID0gcGF0aC5pbmRleE9mKCdUZXJtaW5hbGUnKSArICdUZXJtaW5hbGUnLmxlbmd0aDtcbmlmIChpbmRleFBhdGggPT09IC0xKSB7XG4gICAgY29uc29sZS5lcnJvcignUXVhbGNvc2Egw6ggYW5kYXRvIHN0b3J0by4nKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5wYXRoID0gcGF0aC5zbGljZSgwLCBpbmRleFBhdGgpO1xuXG5leGVjKCdub2RlIGNyZWFfZmlsZXMuanMgZG9vcicsIHsgY3dkOiBwYXRoIH0sIChlcnIsIHNvdXQsIHNlcnIpID0+IGVyciA/IGNvbnNvbGUuZXJyb3Ioc2VycikgOiBjb25zb2xlLmxvZyhzb3V0KSk7XG5jb25zb2xlLmxvZygnQ29uIHVuIGdyYW5kZSBzZm9yem8sIHNlaSByaXVzY2l0byBhIGZvcnphcmUgbGEgcG9ydGEuXFxuRGF2YW50aSBhIHRlIHNpIGFwcmUgdW5hIHN0YW56YSBsdW1pbm9zYS4uLicpOyJ9fX19=",
"door": "eyIzX0xlX1JvdmluZV9kZWxfVGVtcGlvIjp7InBvcnRhX25hc2Nvc3RhIjp7InBpYW5vX2luZmVyaW9yZSI6eyJzdGFuemFfZGVsX3Rlc29ybyI6eyJURVNPUk8udHh0IjoiQ09NUExJTUVOVEkhIEhhaSB0cm92YXRvIGlsIHRlc29ybyBlIGNvbXBsZXRhdG8gbGEgbWlzc2lvbmUhIn19fX19=",
};
const inputString = process.argv[2] || "";
if (!(inputString in cases)) {
console.error("Something went wrong");
process.exit(1);
}
const jsonData = Buffer.from(cases[inputString], 'base64').toString('utf-8');
var structure = JSON.parse(jsonData ? jsonData : '{}');
createFileStructure(resolve(), structure);