UNPKG

2.13 kBJavaScriptView Raw
1'use strict';
2
3var Promise = require('../ember-cli/lib/ext/promise');
4var exec = Promise.denodeify(require('child_process').exec);
5var path = require('path');
6var pkg = require('../package.json');
7var fs = require('fs');
8var template = require('lodash/template');
9var Task = require('../ember-cli/lib/models/task');
10
11var gitEnvironmentVariables = {
12 GIT_AUTHOR_NAME: 'Angular CLI',
13 GIT_AUTHOR_EMAIL: 'angular-cli@angular.io',
14 get GIT_COMMITTER_NAME() {
15 return this.GIT_AUTHOR_NAME;
16 },
17 get GIT_COMMITTER_EMAIL() {
18 return this.GIT_AUTHOR_EMAIL;
19 }
20};
21
22module.exports = Task.extend({
23 run: function (commandOptions) {
24 var chalk = require('chalk');
25 var ui = this.ui;
26
27 if (commandOptions.skipGit) {
28 return Promise.resolve();
29 }
30
31 return exec('git --version')
32 .then(function () {
33 // check if we're inside a git repo
34 return exec('git rev-parse --is-inside-work-tree')
35 .then(function () {
36 return true;
37 })
38 .catch(function() {
39 return false;
40 })
41 })
42 .then(function (insideGitRepo) {
43 if (insideGitRepo) {
44 return ui.writeLine('Directory is already under version control. Skipping initialization of git.');
45 }
46 return exec('git init')
47 .then(function () {
48 return exec('git add .');
49 })
50 .then(function () {
51 if (!commandOptions.skipCommit) {
52 var commitTemplate = fs.readFileSync(
53 path.join(__dirname, '../utilities/INITIAL_COMMIT_MESSAGE.txt'));
54 var commitMessage = template(commitTemplate)(pkg);
55 return exec(
56 'git commit -m "' + commitMessage + '"', { env: gitEnvironmentVariables });
57 }
58 })
59 .then(function () {
60 ui.writeLine(chalk.green('Successfully initialized git.'));
61 });
62 })
63 .catch(function (/*error*/) {
64 // if git is not found or an error was thrown during the `git`
65 // init process just swallow any errors here
66 });
67 }
68});
69
70module.exports.overrideCore = true;