fix: npx workaround for PebbleHost

This commit is contained in:
Isaac 2023-08-24 23:36:03 +01:00
parent b2790fca40
commit 4a2f85e9eb
No known key found for this signature in database
GPG Key ID: 0DE40AE37BBA5C33

View File

@ -5,16 +5,26 @@ const util = require('util');
const exec = util.promisify(require('child_process').exec); const exec = util.promisify(require('child_process').exec);
const { short } = require('leeks.js'); const { short } = require('leeks.js');
const fallback = { prisma: './node_modules/prisma/build/index.js' };
function log(...strings) { function log(...strings) {
console.log(short('&9[postinstall]&r'), ...strings); console.log(short('&9[postinstall]&r'), ...strings);
} }
async function npx(cmd) { async function npx(cmd) {
const parts = cmd.split(' ');
// fallback for environments with no symlink/npx support (PebbleHost)
if (!fs.existsSync(`./node_modules/.bin/${parts[0]}`)) {
const x = parts.shift();
cmd = 'node ' + fallback[x] + ' ' + parts.join(' ');
} else {
cmd = 'npx ' + cmd;
}
log(`> ${cmd}`); log(`> ${cmd}`);
const { const {
stderr, stderr,
stdout, stdout,
} = await exec('npx ' + cmd); } = await exec(cmd);
if (stdout) console.log(stdout.toString()); if (stdout) console.log(stdout.toString());
if (stderr) console.log(stderr.toString()); if (stderr) console.log(stderr.toString());
} }
@ -32,11 +42,17 @@ if (!providers.includes(provider)) throw new Error(`DB_PROVIDER must be one of:
log(`provider=${provider}`); log(`provider=${provider}`);
log(`copying ${provider} schema & migrations`); log(`copying ${provider} schema & migrations`);
if (!fs.existsSync('./prisma')) fs.mkdirSync('./prisma'); if (fs.existsSync('./prisma')) {
fs.rmSync('./prisma', {
force: true,
recursive: true,
});
} else {
fs.mkdirSync('./prisma');
}
fs.copySync(`./db/${provider}`, './prisma'); // copy schema & migrations fs.copySync(`./db/${provider}`, './prisma'); // copy schema & migrations
(async () => { (async () => {
await npx('prisma generate'); await npx('prisma generate');
await npx('prisma migrate deploy'); await npx('prisma migrate deploy');
})(); })();