nav tabs on admin dashboard

This commit is contained in:
2019-03-07 00:20:34 -06:00
parent f73d6ae228
commit e4f473f376
11661 changed files with 216240 additions and 1544253 deletions

View File

@@ -1,12 +1,25 @@
let process = require('child_process');
let File = require('../src/File');
let childProcess = require('child_process');
let File = require('./File');
let Log = require('./Log');
let argv = require('yargs').argv;
class Dependencies {
/**
* Create a new Dependencies instance.
*
* @param {Object} dependencies
*/
constructor(dependencies) {
this.dependencies = dependencies;
}
install(abortOnComplete = false) {
/**
* Install all dependencies that aren't available.
*
* @param {Boolean} abortOnComplete
* @param {Boolean} forceNpm
*/
install(abortOnComplete = false, forceNpm = false) {
this.dependencies
.reject(dependency => {
try {
@@ -17,40 +30,74 @@ class Dependencies {
})
.tap(dependencies => {
this.execute(
this.buildInstallCommand(dependencies),
this.buildInstallCommand(dependencies, forceNpm),
dependencies,
abortOnComplete
);
});
}
execute(command, abortOnComplete) {
console.log(
'Additional dependencies must be installed. ' +
'This will only take a moment.'
/**
* Execute the provided console command.
*
* @param {string} command
* @param {Boolean} abortOnComplete
*/
execute(command, dependencies, abortOnComplete) {
Log.feedback(
'Additional dependencies must be installed. This will only take a moment.'
);
process.execSync(command);
Log.feedback(`Running: ${command}`);
childProcess.execSync(command);
Log.feedback(
'Okay, done. The following packages have been installed and saved to your package.json dependencies list:'
);
dependencies.forEach(d => Log.feedback('- ' + d));
this.respond(abortOnComplete);
}
/**
* Build the dependency install command.
*
* @param {Object} dependencies
* @param {Boolean} forceNpm
*/
buildInstallCommand(dependencies, forceNpm = false) {
dependencies = [].concat(dependencies).join(' ');
if (!forceNpm) {
try {
childProcess.execSync('command -v yarn >/dev/null');
return `yarn add ${dependencies} --dev --production=false`;
} catch (e) {}
}
return `npm install ${dependencies} --save-dev --production=false`;
}
/**
* Complete the install process.
*
* @param {Boolean} abortOnComplete
*/
respond(abortOnComplete) {
if (abortOnComplete) {
console.log(
Log.feedback(
typeof abortOnComplete === 'string'
? abortOnComplete
: 'Finished. Please run Mix again.'
);
process.exit();
if (!argv['$0'].includes('ava')) {
process.exit();
}
}
}
buildInstallCommand(dependencies) {
dependencies = [].concat(dependencies).join(' ');
if (File.exists('yarn.lock')) {
return `yarn add ${dependencies} --dev`;
}
return `npm install ${dependencies} --save-dev`;
}
}
module.exports = Dependencies;