1 | 'use strict';
|
2 |
|
3 | var Promise = require('../ember-cli/lib/ext/promise');
|
4 | var exec = Promise.denodeify(require('child_process').exec);
|
5 | var path = require('path');
|
6 | var pkg = require('../package.json');
|
7 | var fs = require('fs');
|
8 | var template = require('lodash/template');
|
9 | var Task = require('../ember-cli/lib/models/task');
|
10 |
|
11 | var 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 |
|
22 | module.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 |
|
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 |
|
65 |
|
66 | });
|
67 | }
|
68 | });
|
69 |
|
70 | module.exports.overrideCore = true;
|