Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pnpm_move update #1023

Merged
merged 5 commits into from
Nov 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 27 additions & 19 deletions components/bin/makeAll
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const optionActions = new Map([
/**
* Check for options
*/
while (dirs[0].substring(0, 2) === '--') {
while (dirs[0] && dirs[0].substring(0, 2) === '--') {
const option = dirs.shift().substring(2);
if (option === '') {
break;
Expand All @@ -101,9 +101,9 @@ while (dirs[0].substring(0, 2) === '--') {
action();
}

//
// Make sure there is at least one directory
//
/**
* Make sure there is at least one directory
*/
if (dirs.length === 0) {
dirs.push('.');
}
Expand All @@ -114,6 +114,7 @@ if (dirs.length === 0) {
*/
const build = `node '${path.join(__dirname, 'build')}' '${options.target}'`;
const copy = `node '${path.join(__dirname, 'copy')}' '${options.target}' '${options.bundle}'`;
const pack = `node '${path.join(__dirname, 'pack')}' '${options.target}' '${options.bundle}'`;

/**
* @param {string} name The file name to turn into a Regular expression
Expand All @@ -123,12 +124,22 @@ function fileRegExp(name) {
return new RegExp(name.replace(/([\\.{}[\]()?*^$])/g, '\\$1'), 'g');
}

/**
* Get and change the current working directory
*/
const root = process.cwd();
process.chdir(path.dirname(path.dirname(__dirname)));

/**
* Regular expression for the components directory
*/
const compRE = fileRegExp(path.dirname(__dirname));
const dirRE = fileRegExp(process.cwd());
const dirRE = fileRegExp(root);


/**
* Read and process a configuration file
*/
function getConfig(dir) {
const file = path.join(dir, 'config.json');
return fs.existsSync(file) ? JSON.parse(String(fs.readFileSync(file))) : null;
Expand All @@ -141,7 +152,7 @@ function getConfig(dir) {
*/
function processList(dirs) {
for (const dir of dirs) {
const fulldir = path.resolve(dir);
const fulldir = path.resolve(root, dir);
const config = getConfig(fulldir);
processDir(fulldir, buildLib, config);
processDir(fulldir, copyLib, config);
Expand Down Expand Up @@ -182,6 +193,13 @@ function processSubdirs(dir, action, config) {
}
}

/**
* Run a command on a given directory
*/
function run(cmd, dir) {
return execSync(cmd + ` '${path.relative('.', dir).replace(/'/g, '\\\'')}'`);
}

/**
* Run bin/build if there is a configuration file for it
*
Expand All @@ -191,17 +209,14 @@ function processSubdirs(dir, action, config) {
function buildLib(dir, config) {
if (!config.build || !options.build) return;
console.info('Building ' + dir.replace(compRE, '').replace(dirRE, '.'));
const wd = process.cwd();
try {
process.chdir(dir);
const result = execSync(build);
const result = run(build, dir);
if (options.verbose) {
console.info(' ' + String(result).replace(/\n/g, '\n '));
}
} catch (err) {
console.info(' ' + err.message);
}
process.chdir(wd);
}

/**
Expand All @@ -213,18 +228,14 @@ function buildLib(dir, config) {
function webpackLib(dir, config) {
if (!config.webpack || !options.pack) return;
console.info('Webpacking ' + dir.replace(compRE, '').replace(dirRE, '.'));
const wd = process.cwd();
const pack = `node '${path.join(__dirname, 'pack')}' '${options.target}' '${options.bundle}' '${dir}'`;
try {
process.chdir(__dirname);
const result = execSync(pack);
const result = run(pack, dir);
if (options.verbose) {
console.info(' ' + String(result).replace(/\n/g, '\n '));
}
} catch (err) {
console.info(' ' + err.message);
}
process.chdir(wd);
}

/**
Expand All @@ -236,17 +247,14 @@ function webpackLib(dir, config) {
function copyLib(dir, config) {
if (!config.copy || !options.copy) return;
console.info('Copying ' + dir.replace(compRE, '').replace(dirRE, '.'));
const wd = process.cwd();
try {
process.chdir(dir);
const result = execSync(copy);
const result = run(copy, dir);
if (options.verbose) {
console.info(' ' + String(result).replace(/\n/g, '\n '));
}
} catch (err) {
console.info(' ' + err.message);
}
process.chdir(wd);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions components/bin/pack
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,8 @@ async function readJSON(dir) {
return new Promise((ok, fail) => {
const buffer = [];
const child = spawn('pnpm', [
'webpack', '--env', `dir=${path.relative('.', dir)}`, '--env', `bundle=${path.resolve(mjPath, bundle)}`, '--json',
'-c', path.join(compPath, 'webpack.config.' + target)
'webpack', '--env', `dir=${dir}`, '--env', `bundle=${bundle}`, '--json',
'-c', path.relative('.', path.join(compPath, 'webpack.config.' + target))
]);
child.stdout.on('data', (data) => buffer.push(String(data)));
child.stdout.on('close', (code) => {
Expand Down
2 changes: 1 addition & 1 deletion components/webpack.common.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ const PACKAGE = function (options) {
let {name, js, target = 'mjs', bundle = 'bundle', libs = [], dir, dist = '', font = true, jax = ''} = options;
dir = dir.replace(/\/$/, '');
if (!js) {
js = path.relative(dir, path.resolve(DIRNAME, '..', target));
js = path.relative(process.cwd(), path.resolve(DIRNAME, '..', target));
}
const distDir = dist ? path.resolve(dir, dist) :
path.resolve(js, '..', bundle, path.dirname(name));
Expand Down
72 changes: 36 additions & 36 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,47 +74,47 @@
"copy:mml3": "copy() { pnpm -s log:single 'Copying legacy code MathML3'; pnpm copyfiles -u 1 ts/input/mathml/mml3/mml3.sef.json $1; }; copy",
"copy:assets": "pnpm -s log:comp 'Copying assets'; copy() { pnpm -s copy:mj2 $1 && pnpm -s copy:mml3 $1; }; copy",
"copy:pkg": "copy() { pnpm -s log:single \"Copying package.json to $1\"; pnpm copyfiles -u 2 components/bin/package.json $1; }; copy",
"=============================================================================== Aux": "",
"log:single": "log() { echo \\\\e[33m$1\\\\e[0m; }; log",
"=============================================================================== log": "",
"log:single": "log() { echo \\\\x1B[34m--$1\\\\x1B[0m; }; log",
"log:header": "log() { echo '============='; echo $1; echo '============='; }; log",
"log:comp": "log() { echo \\\\e[32m$1\\\\e[0m; }; log",
"=============================================================================== CJS": "",
"copy:cjs:components": "pnpm copyfiles -u 2 -e 'components/mjs/**/*.js' 'components/mjs/**/*' components/cjs",
"clean:cjs:bundle": "pnpm clean:dir bundle-cjs",
"clean:cjs:components": "pnpm -s log:single \"Cleaning cjs components\" pnpm rimraf components/cjs",
"compile:cjs:components": "pnpm -s log:single 'Compiling component files'; pnpm tsc --project tsconfig/components.json",
"finalize:cjs:components": "pnpm -s log:comp 'Finalize cjs components'; pnpm -s copy:cjs:components && pnpm -s copy:pkg components/cjs && pnpm -s clean:lib cjs",
"compile:cjs": "pnpm -s log:single 'Compiling cjs typescript files' && pnpm tsc --project tsconfig/cjs.json",
"finalize:cjs:bundle": "pnpm -s log:single 'Finalize cjs bundle'; echo '{\n \"type\": \"commonjs\"\n}' > bundle-cjs/package.json;",
"make:cjs:components": "make() { pnpm -s log:single 'Making cjs components'; components/bin/makeAll --cjs --terse --bundle-cjs $1 components/cjs; }; make",
"build:cjs:components:src": "pnpm -s log:comp 'Building cjs components sources'; pnpm clean:cjs:components && pnpm compile:cjs:components && pnpm finalize:cjs:components",
"build:cjs:components": "pnpm -s log:comp 'Building cjs components'; pnpm -s build:cjs:components:src && pnpm clean:dir bundle-cjs && pnpm -s make:cjs:components --build",
"build:cjs:src": "pnpm -s log:comp 'Building cjs sources'; pnpm -s link:full && pnpm clean:dir cjs && pnpm -s compile:cjs && pnpm -s copy:assets cjs && pnpm -s copy:pkg cjs",
"build:cjs": "pnpm -s log:header 'Building cjs'; pnpm -s build:cjs:src && pnpm -s build:cjs:components",
"=============================================================================== MJS": "",
"make:mjs:components": "pnpm -s log:single 'Making mjs components'; components/bin/makeAll --mjs --terse components/mjs",
"finalize:mjs:bundle": "pnpm -s log:single 'Finalize mjs bundle'; echo '{\n \"type\": \"commonjs\"\n}' > bundle/package.json;",
"compile:mjs": "pnpm -s log:single 'Compiling mjs typescript files'; pnpm tsc --project tsconfig/mjs.json",
"build:mjs:components": "pnpm -s log:comp 'Compiling mjs component files'; pnpm clean:lib mjs && pnpm clean:dir bundle && pnpm make:mjs:components && pnpm finalize:mjs:bundle",
"build:mjs:src": "pnpm -s log:comp 'Building mjs sources'; pnpm -s link:full && pnpm -s clean:dir mjs && pnpm -s compile:mjs && pnpm -s copy:assets mjs",
"build:mjs": "pnpm -s log:header 'Building mjs'; pnpm -s build:mjs:src && pnpm -s build:mjs:components",
"log:comp": "log() { echo \\\\x1B[32m$1\\x1B[0m; }; log",
"=============================================================================== cjs": "",
"cjs:copy:components": "pnpm copyfiles -u 2 -e 'components/mjs/**/*.js' 'components/mjs/**/*' components/cjs",
"cjs:clean:bundle": "pnpm clean:dir bundle-cjs",
"cjs:clean:components": "pnpm -s log:single \"Cleaning cjs components\" pnpm rimraf components/cjs",
"cjs:compile:components": "pnpm -s log:single 'Compiling component files'; pnpm tsc --project tsconfig/components.json",
"cjs:finalize:components": "pnpm -s log:comp 'Finalize cjs components'; pnpm -s cjs:copy:components && pnpm -s copy:pkg components/cjs && pnpm -s clean:lib cjs",
"cjs:compile": "pnpm -s log:single 'Compiling cjs typescript files' && pnpm tsc --project tsconfig/cjs.json",
"cjs:finalize:bundle": "pnpm -s log:single 'Finalize cjs bundle'; echo '{\n \"type\": \"commonjs\"\n}' > bundle-cjs/package.json;",
"cjs:make:components": "make() { pnpm -s log:single 'Making cjs components'; components/bin/makeAll --cjs --terse --bundle-cjs $1 components/cjs; }; make",
"cjs:build:components:src": "pnpm -s log:comp 'Building cjs components sources'; pnpm cjs:clean:components && pnpm cjs:compile:components && pnpm cjs:finalize:components",
"cjs:build:components": "pnpm -s log:comp 'Building cjs components'; pnpm -s cjs:build:components:src && pnpm clean:dir bundle-cjs && pnpm -s cjs:make:components --build",
"cjs:build:src": "pnpm -s log:comp 'Building cjs sources'; pnpm -s link:full && pnpm clean:dir cjs && pnpm -s cjs:compile && pnpm -s copy:assets cjs && pnpm -s copy:pkg cjs",
"cjs:build": "pnpm -s log:header 'Building cjs'; pnpm -s cjs:build:src && pnpm -s cjs:build:components",
"=============================================================================== mjs": "",
"mjs:make:components": "pnpm -s log:single 'Making mjs components'; components/bin/makeAll --mjs --terse components/mjs",
"mjs:finalize:bundle": "pnpm -s log:single 'Finalize mjs bundle'; echo '{\n \"type\": \"commonjs\"\n}' > bundle/package.json;",
"mjs:compile": "pnpm -s log:single 'Compiling mjs typescript files'; pnpm tsc --project tsconfig/mjs.json",
"mjs:build:components": "pnpm -s log:comp 'Compiling mjs component files'; pnpm clean:lib mjs && pnpm clean:dir bundle && pnpm mjs:make:components && pnpm mjs:finalize:bundle",
"mjs:build:src": "pnpm -s log:comp 'Building mjs sources'; pnpm -s link:full && pnpm -s clean:dir mjs && pnpm -s mjs:compile && pnpm -s copy:assets mjs",
"mjs:build": "pnpm -s log:header 'Building mjs'; pnpm -s mjs:build:src && pnpm -s mjs:build:components",
"=============================================================================== mml3": "",
"premake-mml3-xslt": "grep '^\\s*\\(<\\|or\\|xmlns\\|excl\\|\">\\)' ts/input/mathml/mml3/mml3.ts > /tmp/mml3.xsl",
"make-mml3-xslt": "pnpm xslt3 -t -xsl:/tmp/mml3.xsl -export:ts/input/mathml/mml3/mml3.sef.json -nogo",
"postmake-mml3-xslt": "pnpm rimraf /tmp/mml3.xsl",
"mml3-xslt": "pnpm -s premake-mml3-xslt && pnpm -s make-mml3-xslt && pnpm -s postmake-mml3-xslt",
"=============================================================================== install": "",
"mml3:pre:xslt": "grep '^\\s*\\(<\\|or\\|xmlns\\|excl\\|\">\\)' ts/input/mathml/mml3/mml3.ts > /tmp/mml3.xsl",
"mml3:make:xslt": "pnpm xslt3 -t -xsl:/tmp/mml3.xsl -export:ts/input/mathml/mml3/mml3.sef.json -nogo",
"mml3:post:xslt": "pnpm rimraf /tmp/mml3.xsl",
"mml3-xslt": "pnpm -s mml3:pre:xslt && pnpm -s mml3:make:xslt && pnpm -s mml3:post:xslt",
"=============================================================================== misc": "",
"link:full": "pnpm -s log:single 'Setting symbolic link'; node components/bin/link-full",
"use-cjs": "echo '{\n \"extends\": \"./tsconfig/cjs.json\"\n}' > tsconfig.json",
"use-mjs": "echo '{\n \"extends\": \"./tsconfig/mjs.json\"\n}' > tsconfig.json",
"=============================================================================== Aliases": "",
"clean": "pnpm -s clean:mod cjs && pnpm -s clean:mod mjs && pnpm -s clean:dir bundle && pnpm -s clean:cjs:bundle",
"compile-cjs": "pnpm -s compile:cjs",
"compile-mjs": "pnpm -s compile:mjs",
"build-cjs": "pnpm -s build:cjs",
"build-mjs": "pnpm -s build:mjs",
"make-cjs-components": "pnpm -s make:cjs:components && pnpm -s finalize:cjs:bundle",
"make-mjs-components": "pnpm -s make:mjs:components",
"=============================================================================== aliases": "",
"clean": "pnpm -s clean:mod cjs && pnpm -s cjs:clean:bundle && pnpm -s clean:mod mjs && pnpm -s clean:dir bundle",
"compile-cjs": "pnpm -s cjs:compile",
"compile-mjs": "pnpm -s mjs:compile",
"build-cjs": "pnpm -s cjs:build",
"build-mjs": "pnpm -s mjs:build",
"make-cjs-components": "pnpm -s cjs:make:components && pnpm -s cjs:finalize:bundle",
"make-mjs-components": "pnpm -s mjs:make:components",
"make-one": "make() { components/bin/makeAll --no-subdirs $3 $4 --$2 components/$2/$1; }; make",
"make-components": "pnpm -s make-mjs-components",
"compile": "pnpm -s compile-mjs",
Expand Down