@nomadmystic/wordpress-scaffold-cli
Version:
This project is created to speed up WordPress development
145 lines (123 loc) • 4.89 kB
text/typescript
// Package Modules
// Utils
import MessagingUtils from '../../utils/messaging-utils.js';
// Interfaces
import PluginAnswerValues from '../../interfaces/plugin/interface-plugin-answer-values.js';
import ScaffoldJsonUpdates from '../../interfaces/common/interface-scaffold-json-updates.js';
/**
* @classdesc
* @class CreateObjectArrays
* @author Keith Murphy | nomadmystics@gmail.com
*/
export default class CreateObjectArrays {
/**
* @description
* @public
* @author Keith Murphy | nomadmystics@gmail.com
*
* @return {Promise<Array<ScaffoldJsonUpdates> | any>}
*/
public static readComposerObjects = async (values: PluginAnswerValues, composerAlreadyExists: boolean = false): Promise<Array<ScaffoldJsonUpdates> | any> => {
try {
if (composerAlreadyExists) {
await MessagingUtils.displayColoredMessage('Looks like you already have a composer.json file, so this will not be scaffolded', 'red');
await MessagingUtils.displayColoredMessage('See documentation on how to autoload classes with psr-4', 'yellow');
console.log("\n");
return [];
}
const updateObjectsArray: Array<ScaffoldJsonUpdates> = await this.createComposerObjects(values);
return updateObjectsArray;
} catch (err: any) {
console.log('CreateObjectArrays.readComposerObjects()');
console.error(err);
}
};
/**
* @description
* @private
* @author Keith Murphy | nomadmystics@gmail.com
*
* @param {PluginAnswerValues} values
* @return {Promise<Array<ScaffoldJsonUpdates> | any>}
*/
private static createComposerObjects = async (values: PluginAnswerValues): Promise<Array<ScaffoldJsonUpdates> | any> => {
try {
const updateObjectsArray: Array<ScaffoldJsonUpdates> = [
{
fileName: 'composer.json',
stringToUpdate: 'SCAFFOLD_NAME',
updateString: values.safeName,
},
{
fileName: 'composer.json',
stringToUpdate: 'SCAFFOLD_DESCRIPTION',
updateString: values.description,
},
{
fileName: 'composer.json',
stringToUpdate: 'PASCAL_NAME',
updateString: values.namespace,
},
{
fileName: 'composer.json',
stringToUpdate: 'PATH_TO_COMPOSER',
updateString: '', // @todo this will need to change on Theme refactor
},
];
return updateObjectsArray;
} catch (err: any) {
console.log('createComposerObjects()');
console.error(err);
}
};
/**
* @description
* @public
* @author Keith Murphy | nomadmystics@gmail.com
*
* @return {Promise<Array<ScaffoldJsonUpdates> | any>}
*/
public static readPackageObjects = async (values: PluginAnswerValues, packageAlreadyExists: boolean = false): Promise<Array<ScaffoldJsonUpdates> | any> => {
try {
if (packageAlreadyExists) {
await MessagingUtils.displayColoredMessage('Looks like you already have a package.json file, so this will not be scaffolded', 'red');
await MessagingUtils.displayColoredMessage('See documentation on Node.js', 'yellow');
console.log("\n");
return [];
}
const updateObjectsArray: Array<ScaffoldJsonUpdates> = await this.createPackageObjects(values);
return updateObjectsArray;
} catch (err: any) {
console.log('CreateObjectArrays.readPackageObjects()');
console.error(err);
}
};
/**
* @description
* @private
* @author Keith Murphy | nomadmystics@gmail.com
*
* @param {PluginAnswerValues} values
* @return {Promise<Array<ScaffoldJsonUpdates> | any>}
*/
private static createPackageObjects = async (values: PluginAnswerValues): Promise<Array<ScaffoldJsonUpdates> | any> => {
try {
const updateObjectsArray: Array<ScaffoldJsonUpdates> = [
{
fileName: 'package.json',
stringToUpdate: 'SCAFFOLD_NAME',
updateString: values.safeName,
},
{
fileName: 'package.json',
stringToUpdate: 'SCAFFOLD_DESCRIPTION',
updateString: values.description,
},
];
return updateObjectsArray;
} catch (err: any) {
console.log('readPackageObjects()');
console.error(err);
}
};
}