Fixing broken Yarn lifecycle hooks

This commit is contained in:
Marco Lipparini
2023-07-16 05:05:27 +02:00
parent aefd888de3
commit 508b3e0006
4 changed files with 20 additions and 17 deletions

9
.gitignore vendored
View File

@@ -1,16 +1,11 @@
bin
bin/*
!bin/ldd
build
ldd
# misc
*.log
.DS_Store
node_modules
.cache
dist
# dependencies
/node_modules
# debug
npm-debug.log*

6
bin/ldd Executable file
View File

@@ -0,0 +1,6 @@
#!/bin/bash
# Inspired by https://github.com/yarnpkg/yarn/issues/3421#issuecomment-1399393547
echo "This file is just a stub; it is not meant to be executed.
It will be replaced by the postinstall script with the binary for the target platform."

View File

@@ -5,10 +5,12 @@
const fs = require('fs');
const path = require('path');
const BIN_BASE_DIR = `${__dirname}/bin/@mep-agency`;
const BIN_BASE_NAME = `${BIN_BASE_DIR}/local-dev-db`;
const BIN_BASE_DIR = `${__dirname}/bin`;
const BIN_OUTPUT_PATH = `${BIN_BASE_DIR}/ldd`;
const BIN_OPTIONS_DIR = `${BIN_BASE_DIR}/@mep-agency`;
const BIN_OPTIONS_BASE_NAME = `${BIN_OPTIONS_DIR}/local-dev-db`;
if (!fs.existsSync(path.dirname(BIN_BASE_DIR)) || !fs.statSync(path.dirname(BIN_BASE_DIR)).isDirectory()) {
if (!fs.existsSync(BIN_OPTIONS_DIR) || !fs.statSync(BIN_OPTIONS_DIR).isDirectory()) {
console.info('Binaries are not available, this probably means we are in a development environment... skipping!');
process.exit(0);
@@ -24,7 +26,7 @@ const PLATFORM_MAPPING = {
win32: 'win.exe',
};
async function install(callback) {
async function postinstall(callback) {
if (PLATFORM_MAPPING[process.platform] === undefined) {
callback(`Unsupported platform: "${process.platform}"`);
}
@@ -33,20 +35,20 @@ async function install(callback) {
callback(`Unsupported architecture: "${process.arch}"`);
}
const binaryNameTokens = [BIN_BASE_NAME, PLATFORM_MAPPING[process.platform], ARCH_MAPPING[process.arch]].filter(
const binaryNameTokens = [BIN_OPTIONS_BASE_NAME, PLATFORM_MAPPING[process.platform], ARCH_MAPPING[process.arch]].filter(
(token) => token.length > 0,
);
console.info(`Copying the relevant binary for your platform ${process.platform} (${process.arch})`);
fs.copyFileSync(binaryNameTokens.join('-'), './ldd');
fs.copyFileSync(binaryNameTokens.join('-'), BIN_OUTPUT_PATH);
callback(null);
}
// Parse command line arguments and call the right method
var actions = {
install: install,
postinstall: postinstall,
};
const argv = process.argv;

View File

@@ -1,6 +1,6 @@
{
"name": "@mep-agency/local-dev-db",
"version": "1.0.0-alpha4",
"version": "1.0.0-alpha5",
"private": false,
"description": "A zero-config local MariaDB instance for local development (using Docker)",
"author": "Marco Lipparini <developer@liarco.net>",
@@ -25,10 +25,10 @@
"watch": "tsc --watch",
"format": "prettier --write \"**/*.{ts,md,scss,css,js}\"",
"lint": "prettier --check \"**/*.{ts,md,scss,css,js}\"",
"install": "node lifecycle.js install"
"postinstall": "node lifecycle.js postinstall"
},
"bin": {
"ldd": "./ldd"
"ldd": "./bin/ldd"
},
"files": [
"bin",