fix(core): update

This commit is contained in:
Philipp Kunz 2024-06-23 13:26:51 +02:00
parent 6140b2b25b
commit 20d34b998e
8 changed files with 437 additions and 215 deletions

View File

@ -11,7 +11,7 @@
"gzone": "./cli.js" "gzone": "./cli.js"
}, },
"scripts": { "scripts": {
"test": "(npm run clean && npm run prepareTest && npm run testCli && npm run testCommit && npm run testDeprecate && npm run testVersion && npm run testReadme && npm run testFormat && npm run testUpdate && npm run testTemplateNpm && npm run testTemplateLit) && rm -rf test", "test": "(npm run clean && npm run prepareTest && npm run testCli && npm run testFormat && npm run testCommit && npm run testDeprecate && npm run testVersion && npm run testReadme && npm run testUpdate && npm run testTemplateNpm && npm run testTemplateLit) && rm -rf test",
"build": "(tsbuild --web --allowimplicitany)", "build": "(tsbuild --web --allowimplicitany)",
"clean": "(rm -rf test/)", "clean": "(rm -rf test/)",
"prepareTest": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)", "prepareTest": "(git clone https://gitlab.com/sandboxzone/sandbox-npmts.git test/)",
@ -48,17 +48,18 @@
"author": "Task Venture Capital GmbH", "author": "Task Venture Capital GmbH",
"license": "MIT", "license": "MIT",
"bugs": { "bugs": {
"url": "https://gitlab.com/gitzone/private/gitzone/issues" "url": "https://code.foss.global/git.zone/cli/issues"
}, },
"homepage": "https://pages.foss.global/git.zone/cli", "homepage": "https://pages.foss.global/git.zone/cli",
"devDependencies": { "devDependencies": {
"@git.zone/tsbuild": "^2.1.80", "@git.zone/tsbuild": "^2.1.80",
"@git.zone/tsrun": "^1.2.46", "@git.zone/tsrun": "^1.2.46",
"@git.zone/tstest": "^1.0.90", "@git.zone/tstest": "^1.0.90",
"@types/node": "^20.14.7" "@types/node": "^20.14.8"
}, },
"dependencies": { "dependencies": {
"@push.rocks/commitinfo": "^1.0.11", "@git.zone/tsdoc": "^1.1.40",
"@push.rocks/commitinfo": "^1.0.12",
"@push.rocks/early": "^4.0.4", "@push.rocks/early": "^4.0.4",
"@push.rocks/gulp-function": "^3.0.7", "@push.rocks/gulp-function": "^3.0.7",
"@push.rocks/lik": "^6.0.15", "@push.rocks/lik": "^6.0.15",

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/cli', name: '@git.zone/cli',
version: '1.9.98', version: '1.9.99',
description: 'A CLI toolbelt to streamline local development cycles by using various gitzone utilities.' description: 'A CLI toolbelt to streamline local development cycles by using various gitzone utilities.'
} }

View File

@ -5,6 +5,19 @@ import * as paths from '../paths.js';
import { logger } from '../gitzone.logging.js'; import { logger } from '../gitzone.logging.js';
export const run = async (argvArg: any) => { export const run = async (argvArg: any) => {
logger.log('info', `gathering facts...`);
const aidoc = new plugins.tsdoc.AiDoc();
await aidoc.start();
const nextCommitObject = await aidoc.buildNextCommitObject(paths.cwd);
logger.log('info', `---------
Next recommended commit would be:
===========
-> ${nextCommitObject.recommendedNextVersion}:
-> ${nextCommitObject.recommendedNextVersionLevel}(${nextCommitObject.recommendedNextVersionScope}): ${nextCommitObject.recommendedNextVersionMessage}
===========
`);
const commitInteract = new plugins.smartinteract.SmartInteract(); const commitInteract = new plugins.smartinteract.SmartInteract();
commitInteract.addQuestions([ commitInteract.addQuestions([
{ {
@ -12,19 +25,19 @@ export const run = async (argvArg: any) => {
name: `commitType`, name: `commitType`,
message: `Choose TYPE of the commit:`, message: `Choose TYPE of the commit:`,
choices: [`fix`, `feat`, `BREAKING CHANGE`], choices: [`fix`, `feat`, `BREAKING CHANGE`],
default: `fix`, default: nextCommitObject.recommendedNextVersionLevel,
}, },
{ {
type: 'input', type: 'input',
name: `commitScope`, name: `commitScope`,
message: `What is the SCOPE of the commit:`, message: `What is the SCOPE of the commit:`,
default: `core`, default: nextCommitObject.recommendedNextVersionScope,
}, },
{ {
type: `input`, type: `input`,
name: `commitDescription`, name: `commitDescription`,
message: `What is the DESCRIPTION of the commit?`, message: `What is the DESCRIPTION of the commit?`,
default: `update`, default: nextCommitObject.recommendedNextVersionMessage,
}, },
{ {
type: 'confirm', type: 'confirm',
@ -52,10 +65,17 @@ export const run = async (argvArg: any) => {
sourceFilePaths: [], sourceFilePaths: [],
}); });
logger.log('info', `Baking commitinfo into code`); logger.log('info', `Baking commitinfo into code ...`);
const commitInfo = new plugins.commitinfo.CommitInfo(paths.cwd, commitVersionType); const commitInfo = new plugins.commitinfo.CommitInfo(paths.cwd, commitVersionType);
await commitInfo.writeIntoPotentialDirs(); await commitInfo.writeIntoPotentialDirs();
logger.log('info', `Writing changelog.md ...`);
const changelog = nextCommitObject.changelog;
changelog.replaceAll('{{nextVersion}}', (await commitInfo.getNextPlannedVersion()).versionString);
changelog.replaceAll('{{nextVersionMessage}}', commitString);
await plugins.smartfile.memory.toFs(changelog, plugins.path.join(paths.cwd, `changelog.md`));
logger.log('info', `Staging files for commit:`); logger.log('info', `Staging files for commit:`);
await smartshellInstance.exec(`git add -A`); await smartshellInstance.exec(`git add -A`);
await smartshellInstance.exec(`git commit -m "${commitString}"`); await smartshellInstance.exec(`git commit -m "${commitString}"`);

View File

@ -1,7 +1,10 @@
export * from '../plugins.js'; export * from '../plugins.js';
import * as commitinfo from '@push.rocks/commitinfo'; import * as commitinfo from '@push.rocks/commitinfo';
import * as smartfile from '@push.rocks/smartfile';
import * as smartinteract from '@push.rocks/smartinteract'; import * as smartinteract from '@push.rocks/smartinteract';
import * as smartshell from '@push.rocks/smartshell'; import * as smartshell from '@push.rocks/smartshell';
export { commitinfo, smartinteract, smartshell }; import * as tsdoc from '@git.zone/tsdoc';
export { commitinfo, smartfile, smartinteract, smartshell, tsdoc };

View File

@ -11,6 +11,11 @@ const incompatibleLicenses: string[] = [
]; ];
export const run = async (projectArg: Project) => { export const run = async (projectArg: Project) => {
const nodeModulesInstalled = await plugins.smartfile.fs.isDirectory(plugins.path.join(paths.cwd, 'node_modules'));
if (!nodeModulesInstalled) {
logger.log('warn', 'No node_modules found. Skipping license check');
return;
}
const licenseChecker = await plugins.smartlegal.createLicenseChecker(); const licenseChecker = await plugins.smartlegal.createLicenseChecker();
const licenseCheckResult = await licenseChecker.excludeLicenseWithinPath(paths.cwd, incompatibleLicenses); const licenseCheckResult = await licenseChecker.excludeLicenseWithinPath(paths.cwd, incompatibleLicenses);
if (licenseCheckResult.failingModules.length === 0) { if (licenseCheckResult.failingModules.length === 0) {

View File

@ -1,47 +1,25 @@
import * as plugins from './mod.plugins.js'; import * as plugins from './mod.plugins.js';
import * as paths from '../paths.js'; import * as paths from '../paths.js';
import { GitzoneConfig } from '../classes.gitzoneconfig.js';
import { Project } from '../classes.project.js';
export const run = async (projectArg: Project) => { export const run = async () => {
const readmePath = plugins.path.join(paths.cwd, 'readme.md'); const readmePath = plugins.path.join(paths.cwd, 'readme.md');
const readmeFile = await plugins.smartfile.SmartFile.fromFilePath(readmePath); const readmeHintsPath = plugins.path.join(paths.cwd, 'readme.hints.md');
// lets do our transformation // Check and initialize readme.md if it doesn't exist
const readmeExists = await plugins.smartfile.fs.fileExists(readmePath);
let usageInfo: string = ''; if (!readmeExists) {
const gitzoneConfig = await GitzoneConfig.fromCwd(); await plugins.smartfile.fs.toFs('# Project Readme\n\nThis is the initial readme file.', readmePath);
console.log('Initialized readme.md');
if (readmeFile) { } else {
const readmeFileString = readmeFile.contentBuffer.toString(); console.log('readme.md already exists');
const stringArray1 = readmeFileString.split('## Usage\n');
if (stringArray1[1]) {
const stringArray2 = stringArray1[1].split(
'\nFor further information read the linked docs at the top of this readme.'
);
const stringArray3 = stringArray2[0].split('\n\n## Contribution');
usageInfo = stringArray3[0];
}
} }
if (gitzoneConfig.data.module && gitzoneConfig.data.module.license === 'MIT') { // Check and initialize readme.hints.md if it doesn't exist
usageInfo += const readmeHintsExists = await plugins.smartfile.fs.fileExists(readmeHintsPath);
'\n\n## Contribution\n\n' + if (!readmeHintsExists) {
'We are always happy for code contributions. If you are not the code contributing type that is ok. ' + await plugins.smartfile.fs.toFs('# Project Readme Hints\n\nThis is the initial readme hints file.', readmeHintsPath);
'Still, maintaining Open Source repositories takes considerable time and thought. ' + console.log('Initialized readme.hints.md');
'If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: ' + } else {
'You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)\n'; console.log('readme.hints.md already exists');
} }
};
const templateModule = await import('../mod_template/index.js');
const readmeTemplate = await templateModule.getTemplate('readme');
console.log(gitzoneConfig.data);
await readmeTemplate.supplyVariables({
module: {
...gitzoneConfig.data.module,
},
usageInfo,
});
await readmeTemplate.askCliForMissingVariables();
await readmeTemplate.writeToDisk(paths.cwd);
};

View File

@ -34,5 +34,5 @@ export let run = async (write: boolean = true): Promise<any> => {
// format readme.md // format readme.md
const formatReadme = await import('./format.readme.js'); const formatReadme = await import('./format.readme.js');
// await formatReadme.run(); await formatReadme.run();
}; };