updates
This commit is contained in:
70
client/uikit/build/prefix.js
Normal file
70
client/uikit/build/prefix.js
Normal file
@@ -0,0 +1,70 @@
|
||||
import inquirer from 'inquirer';
|
||||
import {args, glob, read, replaceInFile, validClassName} from './util.js';
|
||||
|
||||
if (args.h || args.help) {
|
||||
console.log(`
|
||||
usage:
|
||||
|
||||
prefix.js [-p{refix}=your_great_new_prefix]
|
||||
|
||||
example:
|
||||
|
||||
prefix.js // will prompt for a prefix to replace the current one with
|
||||
prefix.js -p=xyz // will replace any existing prefix with xyz
|
||||
|
||||
`);
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const currentPrefix = await findExistingPrefix();
|
||||
const prefix = await getPrefix();
|
||||
|
||||
if (currentPrefix === prefix) {
|
||||
throw new Error(`already prefixed with: ${prefix}`);
|
||||
}
|
||||
|
||||
await replacePrefix(currentPrefix, prefix);
|
||||
|
||||
async function findExistingPrefix() {
|
||||
const data = await read('dist/css/uikit.css');
|
||||
const res = data.match(new RegExp(`(${validClassName.source})(-[a-z]+)?-grid`));
|
||||
return res && res[1];
|
||||
}
|
||||
|
||||
async function getPrefix() {
|
||||
|
||||
const prefixFromInput = args.p || args.prefix;
|
||||
|
||||
if (!prefixFromInput) {
|
||||
|
||||
const prompt = inquirer.createPromptModule();
|
||||
|
||||
return (await prompt({
|
||||
name: 'prefix',
|
||||
message: 'enter a prefix',
|
||||
validate: (val, res) => val.length && val.match(validClassName) ? !!(res.prefix = val) : 'invalid prefix'
|
||||
})).prefix;
|
||||
}
|
||||
|
||||
if (validClassName.test(prefixFromInput)) {
|
||||
return prefixFromInput;
|
||||
} else {
|
||||
throw `illegal prefix: ${prefixFromInput}`;
|
||||
}
|
||||
}
|
||||
|
||||
async function replacePrefix(from, to) {
|
||||
for (const file of await glob('dist/**/*.css')) {
|
||||
await replaceInFile(file, data => data.replace(
|
||||
new RegExp(`${from}-${/([a-z\d-]+)/.source}`, 'g'),
|
||||
`${to}-$1`
|
||||
));
|
||||
}
|
||||
|
||||
for (const file of await glob('dist/**/*.js')) {
|
||||
await replaceInFile(file, data => data
|
||||
.replace(new RegExp(`${from}-`, 'g'), `${to}-`)
|
||||
.replace(new RegExp(`(${from})?UIkit`, 'g'), `${to === 'uk' ? '' : to}UIkit`)
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user