.gitignore includes files flagged as ignored.
If a file is ignored in the project builder, it is now persisted into the .gitignore file in the project. Change-Id: Ic8e5d08b82da5809b1dc2a8427f6563dc9acf00b
This commit is contained in:
parent
1ee651fd0e
commit
57c560e7d5
|
@ -12,8 +12,8 @@ dist
|
||||||
lib-cov
|
lib-cov
|
||||||
logs
|
logs
|
||||||
node_modules
|
node_modules
|
||||||
npm-debug.log*
|
npm-debug.log
|
||||||
package
|
package
|
||||||
pids
|
pids
|
||||||
reports
|
reports
|
||||||
www
|
www
|
||||||
|
|
|
@ -53,17 +53,34 @@
|
||||||
* @returns {generator} The passed generator, for promise chaining.
|
* @returns {generator} The passed generator, for promise chaining.
|
||||||
*/
|
*/
|
||||||
function configureGitIgnore (generator) {
|
function configureGitIgnore (generator) {
|
||||||
var ignoreContent = Object.keys(excludedPaths).sort().join('\n');
|
var ignoreContent = buildGitignore();
|
||||||
if (ignoreContent.length === 0) {
|
if (ignoreContent.length === 0) {
|
||||||
// Delete the file if there's nothing to ignore.
|
// Delete the file if there's nothing to ignore.
|
||||||
projectBuilder.removeFile(filePath);
|
projectBuilder.removeFile(filePath);
|
||||||
} else {
|
} else {
|
||||||
projectBuilder.writeFile(filePath, ignoreContent);
|
projectBuilder.writeFile(filePath, buildGitignore);
|
||||||
}
|
}
|
||||||
|
|
||||||
return generator;
|
return generator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate the content of our .gitignore file from the configured list of excluded paths,
|
||||||
|
* as well as any project-level configured ignoreFiles.
|
||||||
|
*
|
||||||
|
* @returns {string} The content of the .eslintignore file.
|
||||||
|
*/
|
||||||
|
function buildGitignore () {
|
||||||
|
var ignoredFiles = projectBuilder.getIgnoredFiles();
|
||||||
|
for (var i = 0; i < ignoredFiles.length; i++) {
|
||||||
|
if (!excludedPaths.hasOwnProperty(ignoredFiles[i])) {
|
||||||
|
excludedPaths[ignoredFiles[i]] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Object.keys(excludedPaths).sort().join('\n');
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
init: initGitignore,
|
init: initGitignore,
|
||||||
prompt: noop,
|
prompt: noop,
|
||||||
|
|
|
@ -84,13 +84,48 @@
|
||||||
|
|
||||||
var files = projectBuilder.getIncludedFiles();
|
var files = projectBuilder.getIncludedFiles();
|
||||||
var ignoreRef = files[0];
|
var ignoreRef = files[0];
|
||||||
var ignoreContent = ignoreRef.content.split('\n');
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
expect(ignoreContent.length).toBe(2);
|
expect(ignoreContent.length).toBe(2);
|
||||||
|
|
||||||
expect(ignoreContent[0]).toEqual('one');
|
expect(ignoreContent[0]).toEqual('one');
|
||||||
expect(ignoreContent[1]).toEqual('two');
|
expect(ignoreContent[1]).toEqual('two');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should include any files flagged as ignored in the project builder.',
|
||||||
|
function () {
|
||||||
|
mockGenerator.fs.write('.gitignore', '');
|
||||||
|
projectBuilder.ignoreFile('foo/bar.json');
|
||||||
|
|
||||||
|
gitignore.init(mockGenerator);
|
||||||
|
gitignore.prompt(mockGenerator);
|
||||||
|
gitignore.configure(mockGenerator);
|
||||||
|
|
||||||
|
var files = projectBuilder.getIncludedFiles();
|
||||||
|
var ignoreRef = files[0]; // There should only be one file.
|
||||||
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
|
expect(ignoreContent.length).toBe(1);
|
||||||
|
|
||||||
|
expect(ignoreContent[0]).toBe('foo/bar.json');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should de-duplicate file paths from multiple locations.',
|
||||||
|
function () {
|
||||||
|
// include 'node_modules' from both an existing file and from the project builder.
|
||||||
|
mockGenerator.fs.write('.gitignore', ['node_modules'].join('\n'));
|
||||||
|
projectBuilder.ignoreFile('node_modules');
|
||||||
|
|
||||||
|
gitignore.init(mockGenerator);
|
||||||
|
gitignore.prompt(mockGenerator);
|
||||||
|
gitignore.configure(mockGenerator);
|
||||||
|
|
||||||
|
var files = projectBuilder.getIncludedFiles();
|
||||||
|
var ignoreRef = files[0]; // There should only be one file.
|
||||||
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
|
expect(ignoreContent.length).toBe(1);
|
||||||
|
|
||||||
|
expect(ignoreContent[0]).toBe('node_modules');
|
||||||
|
});
|
||||||
|
|
||||||
it('should sort the ignored files.',
|
it('should sort the ignored files.',
|
||||||
function () {
|
function () {
|
||||||
mockGenerator.fs.write('.gitignore', ['b_line', 'a_line'].join('\n'));
|
mockGenerator.fs.write('.gitignore', ['b_line', 'a_line'].join('\n'));
|
||||||
|
@ -101,7 +136,7 @@
|
||||||
|
|
||||||
var files = projectBuilder.getIncludedFiles();
|
var files = projectBuilder.getIncludedFiles();
|
||||||
var ignoreRef = files[0];
|
var ignoreRef = files[0];
|
||||||
var ignoreContent = ignoreRef.content.split('\n');
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
expect(ignoreContent.length).toBe(2);
|
expect(ignoreContent.length).toBe(2);
|
||||||
expect(ignoreContent[0]).toBe('a_line');
|
expect(ignoreContent[0]).toBe('a_line');
|
||||||
expect(ignoreContent[1]).toBe('b_line');
|
expect(ignoreContent[1]).toBe('b_line');
|
||||||
|
@ -117,7 +152,7 @@
|
||||||
|
|
||||||
var files = projectBuilder.getIncludedFiles();
|
var files = projectBuilder.getIncludedFiles();
|
||||||
var ignoreRef = files[0];
|
var ignoreRef = files[0];
|
||||||
var ignoreContent = ignoreRef.content.split('\n');
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
expect(ignoreContent.length).toBe(2);
|
expect(ignoreContent.length).toBe(2);
|
||||||
expect(ignoreContent[0]).toBe('1_one');
|
expect(ignoreContent[0]).toBe('1_one');
|
||||||
expect(ignoreContent[1]).toBe('2_two');
|
expect(ignoreContent[1]).toBe('2_two');
|
||||||
|
@ -133,7 +168,7 @@
|
||||||
|
|
||||||
var files = projectBuilder.getIncludedFiles();
|
var files = projectBuilder.getIncludedFiles();
|
||||||
var ignoreRef = files[0];
|
var ignoreRef = files[0];
|
||||||
var ignoreContent = ignoreRef.content.split('\n');
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
expect(ignoreContent.length).toBe(1);
|
expect(ignoreContent.length).toBe(1);
|
||||||
expect(ignoreContent[0]).toBe('1_one');
|
expect(ignoreContent[0]).toBe('1_one');
|
||||||
});
|
});
|
||||||
|
@ -148,7 +183,7 @@
|
||||||
|
|
||||||
var files = projectBuilder.getIncludedFiles();
|
var files = projectBuilder.getIncludedFiles();
|
||||||
var ignoreRef = files[0];
|
var ignoreRef = files[0];
|
||||||
var ignoreContent = ignoreRef.content.split('\n');
|
var ignoreContent = ignoreRef.content().split('\n');
|
||||||
expect(ignoreContent.length).toBe(1);
|
expect(ignoreContent.length).toBe(1);
|
||||||
expect(ignoreContent[0]).toBe('1_one');
|
expect(ignoreContent[0]).toBe('1_one');
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue