Skip to content

Commit

Permalink
📢 use conventionalCommitsDetector to auto get preset
Browse files Browse the repository at this point in the history
  • Loading branch information
Steve Mao committed Aug 13, 2015
1 parent 570b2cd commit 6316210
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 44 deletions.
137 changes: 94 additions & 43 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
'use babel'
import concatStream from 'concat-stream';
import conventionalChangelog from 'conventional-changelog';
import conventionalCommitsDetector from 'conventional-commits-detector';
import conventionalGithubReleaser from 'conventional-github-releaser';
import concatStream from 'concat-stream';
import gitRawCommits from 'git-raw-commits';
import loophole from 'loophole';
import path from 'path';
import through from 'through2';

function chdirToRepo() {
const editor = atom.workspace.getActiveTextEditor();
Expand All @@ -19,12 +21,43 @@ function chdirToRepo() {
process.chdir(path.dirname(file));
}

function getConfigs() {
return [{
preset: atom.config.get('conventional-changelog.preset'),
append: atom.config.get('conventional-changelog.append'),
releaseCount: atom.config.get('conventional-changelog.releaseCount')
}];
function getConfigs(done) {
let preset = atom.config.get('conventional-changelog.preset');
let append = atom.config.get('conventional-changelog.append');
let releaseCount = atom.config.get('conventional-changelog.releaseCount');

if (preset === 'auto') {
loophole.allowUnsafeNewFunctionAsync((unsafeDone) => {
let commits = [];

gitRawCommits()
.on('error', (err) => {
err.message = 'Error in git-raw-commits: ' + err.message;
done(err);
unsafeDone();
})
.pipe(through((data, enc, cb) => {
commits.push(data.toString());
cb();
}, () => {
preset = conventionalCommitsDetector(commits);

done(null, [{
preset,
append,
releaseCount
}]);
unsafeDone();
}));
})
return;
}

done(null, [{
preset,
append,
releaseCount
}]);
}

function changelog() {
Expand All @@ -33,57 +66,75 @@ function changelog() {
const editor = atom.workspace.getActiveTextEditor();
let text = editor.getText();

loophole.allowUnsafeNewFunctionAsync((done) => {
let configs = getConfigs();
let opts = configs[0];
getConfigs((err, data) => {
if (err) {
console.error(err);
atom.beep();
return;
}

return conventionalChangelog(...configs)
.on('error', function(err) {
err.message = 'Error in conventional-changelog: ' + err.message;
console.error(err);
atom.beep();
})
.pipe(concatStream((data) => {
data = data.toString();

if (opts.releaseCount === 0) {
text = data;
} else if (opts.append) {
text = text + data;
} else if (!opts.append) {
text = data + text;
}
let configs = data;
let opts = configs[0];

editor.setText(text);
done();
}));
loophole.allowUnsafeNewFunctionAsync((unsafeDone) => {
return conventionalChangelog(...configs)
.on('error', function(err) {
err.message = 'Error in conventional-changelog: ' + err.message;
console.error(err);
atom.beep();
unsafeDone();
})
.pipe(concatStream((data) => {
data = data.toString();

if (opts.releaseCount === 0) {
text = data;
} else if (opts.append) {
text = text + data;
} else if (!opts.append) {
text = data + text;
}

editor.setText(text);
unsafeDone();
}));
});
});
}

function githubRelease() {
chdirToRepo();
getConfigs((err, data) => {
if (err) {
console.error(err);
atom.beep();
return;
}

let configs = data;

loophole.allowUnsafeNewFunctionAsync((unsafeDone) => {
return conventionalGithubReleaser({
type: 'token'
}, ...configs, (err, data) => {
if (err) {
err.message = 'Error in conventional-github-releaser: ' + err.message;
console.error(err);
atom.beep();
unsafeDone();
}

loophole.allowUnsafeNewFunctionAsync((done) => {
return conventionalGithubReleaser({
type: 'token'
}, ...getConfigs(), (err, data) => {
if (err) {
err.message = 'Error in conventional-github-releaser: ' + err.message;
console.error(err);
atom.beep();
}

console.log(data);
done();
unsafeDone();
});
});
});
}

export let config = {
preset: {
type: 'string',
description: 'A set of options of a popular project so you don\'t have to define everything in options, context, gitRawCommitsOpts, parserOpts or writerOpts manually.',
default: 'angular'
description: 'auto, angular, atom, ember, eslint, express, jquery, jscs or jshint.',
default: 'auto'
},
append: {
type: 'boolean',
Expand Down
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
"conventional-changelog": "^0.3.0",
"conventional-commits-detector": "^0.1.0",
"conventional-github-releaser": "^0.3.0",
"loophole": "git://github.com/stevemao/loophole.git"
"git-raw-commits": "^0.1.2",
"loophole": "git://github.com/stevemao/loophole.git",
"through2": "^2.0.0"
}
}

0 comments on commit 6316210

Please sign in to comment.