refactor: tidy
This commit is contained in:
parent
4cc203bd20
commit
b120824f84
|
@ -30,6 +30,7 @@ const {
|
|||
|
||||
const debug = D('@flecks/build/build/commands');
|
||||
|
||||
// Find `exports.dependencies = ...`.
|
||||
const dependenciesVisitor = (fn) => ({
|
||||
AssignmentExpression: (path) => {
|
||||
if (isMemberExpression(path.node.left)) {
|
||||
|
@ -77,26 +78,16 @@ exports.commands = (program, flecks) => {
|
|||
// If it seems like we're in a fleck path, update the bootstrap dependencies if possible.
|
||||
const bootstrapPath = join(FLECKS_CORE_ROOT, 'build', 'flecks.bootstrap.js');
|
||||
let code;
|
||||
let dependencies;
|
||||
let devDependencies;
|
||||
let packageDependencies;
|
||||
try {
|
||||
({
|
||||
dependencies,
|
||||
devDependencies,
|
||||
} = require(join(FLECKS_CORE_ROOT, 'package.json')));
|
||||
const {dependencies, devDependencies} = require(join(FLECKS_CORE_ROOT, 'package.json'));
|
||||
packageDependencies = [].concat(Object.keys(dependencies), Object.keys(devDependencies));
|
||||
}
|
||||
catch (error) {
|
||||
dependencies = {};
|
||||
devDependencies = {};
|
||||
packageDependencies = [];
|
||||
}
|
||||
if (
|
||||
[]
|
||||
.concat(
|
||||
Object.keys(dependencies),
|
||||
Object.keys(devDependencies),
|
||||
)
|
||||
.includes('@flecks/fleck')
|
||||
) {
|
||||
// Try loading the bootstrap script.
|
||||
if (packageDependencies.includes('@flecks/fleck')) {
|
||||
try {
|
||||
// eslint-disable-next-line no-bitwise
|
||||
await access(bootstrapPath, R_OK | W_OK);
|
||||
|
@ -105,6 +96,7 @@ exports.commands = (program, flecks) => {
|
|||
catch (error) { /* empty */ }
|
||||
}
|
||||
if ('undefined' !== typeof code) {
|
||||
// Parse the script and find `exports.dependencies`.
|
||||
const ast = await parseAsync(code, {ast: true, code: false});
|
||||
let dependencies;
|
||||
traverse(ast, dependenciesVisitor((node) => {
|
||||
|
@ -113,8 +105,10 @@ exports.commands = (program, flecks) => {
|
|||
if (dependencies) {
|
||||
const {elements, end, start} = dependencies;
|
||||
const seen = {};
|
||||
// Add the fleck to dependencies.
|
||||
dependencies.elements = elements
|
||||
.concat(stringLiteralSinglequote(fleck))
|
||||
// Filter duplicate literal strings.
|
||||
.filter((node) => {
|
||||
if (isStringLiteral(node)) {
|
||||
if (seen[node.value]) {
|
||||
|
@ -124,12 +118,14 @@ exports.commands = (program, flecks) => {
|
|||
}
|
||||
return true;
|
||||
});
|
||||
// Be surgical, don't generate the whole file. Splice the new dependencies in.
|
||||
code = [
|
||||
code.slice(0, start),
|
||||
generate(dependencies).code,
|
||||
code.slice(end),
|
||||
].join('');
|
||||
}
|
||||
// No dependencies, append some.
|
||||
else {
|
||||
code = [
|
||||
code,
|
||||
|
|
Loading…
Reference in New Issue
Block a user