LORD-5: add init command
This commit is contained in:
parent
42bf947128
commit
2f7e2e33e2
27
CHANGELOG.yml
Normal file
27
CHANGELOG.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
project:
|
||||||
|
name: null
|
||||||
|
homepage: null
|
||||||
|
with_stats: true
|
||||||
|
ticket_url: null
|
||||||
|
releases:
|
||||||
|
- version: NEXT
|
||||||
|
changes: []
|
||||||
|
change_types:
|
||||||
|
- title: Features
|
||||||
|
level: minor
|
||||||
|
keywords:
|
||||||
|
- feat
|
||||||
|
- title: Bug fixes
|
||||||
|
level: patch
|
||||||
|
keywords:
|
||||||
|
- fix
|
||||||
|
- title: Package maintenance
|
||||||
|
level: patch
|
||||||
|
keywords:
|
||||||
|
- chore
|
||||||
|
- maint
|
||||||
|
- refactor
|
||||||
|
- title: Statistics
|
||||||
|
level: patch
|
||||||
|
keywords:
|
||||||
|
- stats
|
12
package.json
12
package.json
@ -2,7 +2,11 @@
|
|||||||
"name": "changelord",
|
"name": "changelord",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"description": "cli-based changelog manager",
|
"description": "cli-based changelog manager",
|
||||||
"main": "dist/index.js",
|
"type": "module",
|
||||||
|
"main": "src/index.js",
|
||||||
|
"bin": {
|
||||||
|
"changelord": "./src/changelord.js"
|
||||||
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
@ -12,6 +16,12 @@
|
|||||||
"author": "Yanick Champoux <yanick@babyl.ca> (http://techblog.babyl.ca/)",
|
"author": "Yanick Champoux <yanick@babyl.ca> (http://techblog.babyl.ca/)",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"consola": "^3.1.0",
|
||||||
|
"fs-extra": "^11.1.1",
|
||||||
|
"yaml": "^2.2.2",
|
||||||
"yargs": "^17.7.2"
|
"yargs": "^17.7.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"prettier": "^2.8.8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
18
src/changelord.js
Executable file
18
src/changelord.js
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import { hideBin } from 'yargs/helpers';
|
||||||
|
import yargs from 'yargs';
|
||||||
|
import { join } from 'path';
|
||||||
|
|
||||||
|
import print from './command/print.js'
|
||||||
|
import init from './command/init.js'
|
||||||
|
|
||||||
|
yargs(hideBin(process.argv))
|
||||||
|
.default('source', join( process.cwd(), 'CHANGELOG.yml' ))
|
||||||
|
.describe('source', 'changelog source')
|
||||||
|
.command({
|
||||||
|
...print,
|
||||||
|
command: '$0',
|
||||||
|
})
|
||||||
|
.command(init)
|
||||||
|
.command(print).help().parse();
|
50
src/command/init.js
Normal file
50
src/command/init.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import fs from 'fs-extra';
|
||||||
|
import { consola } from 'consola';
|
||||||
|
import { stringify } from 'yaml';
|
||||||
|
|
||||||
|
const change_types = [
|
||||||
|
{ title: 'Features' , level: 'minor', keywords: [ 'feat' ] } ,
|
||||||
|
{ title : 'Bug fixes' , level : 'patch', keywords : [ 'fix' ] },
|
||||||
|
{ title : 'Package maintenance' , level : 'patch', keywords : [ 'chore', 'maint', 'refactor' ] },
|
||||||
|
{ title : 'Statistics' , level : 'patch', keywords : [ 'stats' ] },
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
const base_changelog = {
|
||||||
|
project: {
|
||||||
|
name: null,
|
||||||
|
homepage: null,
|
||||||
|
with_stats: true,
|
||||||
|
ticket_url: null,
|
||||||
|
},
|
||||||
|
releases: [
|
||||||
|
{ version: 'NEXT', changes: [] }
|
||||||
|
],
|
||||||
|
change_types,
|
||||||
|
};
|
||||||
|
|
||||||
|
const handler = async (config) => {
|
||||||
|
if( await fs.pathExists(config.source) ) {
|
||||||
|
consola.error(`${config.source} already exist, aborting.`);
|
||||||
|
process.exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
consola.start(`creating ${config.source}...`);
|
||||||
|
|
||||||
|
await fs.writeFile( config.source, stringify(base_changelog) );
|
||||||
|
|
||||||
|
consola.success('done!');
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
command: 'init',
|
||||||
|
desc : 'initialize new changelog source file',
|
||||||
|
builder: (yargs) => {
|
||||||
|
yargs.boolean('json')
|
||||||
|
.boolean('next')
|
||||||
|
.default('json',false)
|
||||||
|
.default('next',true);
|
||||||
|
},
|
||||||
|
handler,
|
||||||
|
}
|
16
src/command/print.js
Normal file
16
src/command/print.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
const handler = (...args) => {
|
||||||
|
console.log('hi!',args);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
command: 'print',
|
||||||
|
desc : 'render the changelog',
|
||||||
|
builder: (yargs) => {
|
||||||
|
yargs.boolean('json')
|
||||||
|
.boolean('next')
|
||||||
|
.default('json',false)
|
||||||
|
.default('next',true);
|
||||||
|
},
|
||||||
|
handler,
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user