accelerator-tool
Version:
The Accelerator devtool. Generally invoked with accelerator-tool, npx accelerator-tool, or xlr8r.
66 lines (59 loc) • 1.66 kB
JavaScript
import chalk from 'chalk';
import {
log,
} from 'colorful-logging';
import {
installCore,
} from './installCore';
import {
installNonNodeDependencies,
} from './installNonNodeDependencies';
import {
installProject,
} from './installProject';
import {
makeStoryDirectory,
} from './makeStoryDirectory';
import {
modifyCoreForRedistribution,
} from './modifyCoreForRedistribution';
import {
moveCore,
} from './moveCore';
import {
nameIsValid,
} from '../functions/nameIsValid';
import * as path from 'path';
import {
removeOldCore,
} from './removeOldCore';
import {
writeTempPackageJson,
} from './writeTempPackageJson';
export async function create(name, directory) {
log(
`Creating story "${chalk.bold(name)}" at "${chalk.bold(directory)}".`,
);
const validState = nameIsValid(name);
if (validState instanceof Error) {
throw validState;
}
await makeStoryDirectory(directory);
await writeTempPackageJson(directory);
await installCore(directory);
await moveCore(directory);
const coreVersion = require(path.join(directory, 'package.json')).version;
await Promise.all([
removeOldCore(directory),
modifyCoreForRedistribution(directory, name, coreVersion),
]);
await installProject(directory);
await installNonNodeDependencies();
log(
`Finished creating story "${chalk.bold(name)}" at ` +
`"${chalk.bold(directory)}".\n`
);
log('Happy developing! Accelerator is made with ' +
`${chalk.red('❤')}️ (love) by Furkle Industries. Remember: fiction ` +
'can and should make the world a better place!');
}