From 10e9ca5dbca69d90abb891cd8d7ea90fc9428a0c Mon Sep 17 00:00:00 2001 From: howardroark Date: Mon, 27 Feb 2017 08:43:32 -0500 Subject: [PATCH 01/11] Create link.js --- lib/link.js | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 lib/link.js diff --git a/lib/link.js b/lib/link.js new file mode 100644 index 0000000..5df69da --- /dev/null +++ b/lib/link.js @@ -0,0 +1,3 @@ +module.exports = function (state, callback) { + callback(null, state); +}; From 539fc4652362092b337a806cf9be2e2517c87fdd Mon Sep 17 00:00:00 2001 From: howardroark Date: Mon, 27 Feb 2017 08:44:16 -0500 Subject: [PATCH 02/11] Update index.js --- lib/index.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/index.js b/lib/index.js index ef8936b..05b16de 100644 --- a/lib/index.js +++ b/lib/index.js @@ -34,6 +34,9 @@ function runPollinate(input, callback) { function (state, next) { require('./move.js')(state, next); }, + function (state, next) { + require('./link.js')(state, next); + }, function (state, next) { require('./complete.js')(state, next); } From d426f324e9b5b58ae0a39936dd0d398dd0ba1d10 Mon Sep 17 00:00:00 2001 From: howardroark Date: Mon, 27 Feb 2017 08:51:08 -0500 Subject: [PATCH 03/11] Update schema.json --- schema.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/schema.json b/schema.json index 943e583..3bf51ee 100644 --- a/schema.json +++ b/schema.json @@ -12,5 +12,8 @@ "move":[ { "origin-file": "new-name" } ], + "link": [ + { "origin-path": "linked/path" } + ], "complete":"some shell command" } From 4328fea464e62509dfd2c6cd35598292246dc344 Mon Sep 17 00:00:00 2001 From: Andy Edwards Date: Mon, 27 Feb 2017 21:04:27 -0600 Subject: [PATCH 04/11] style(link.js): add 'use strict' --- lib/link.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/link.js b/lib/link.js index 5df69da..12f0bc5 100644 --- a/lib/link.js +++ b/lib/link.js @@ -1,3 +1,5 @@ +'use strict' + module.exports = function (state, callback) { callback(null, state); }; From 0049b4e8a07d6982ae3645e8a3f4b6abf923f39d Mon Sep 17 00:00:00 2001 From: Andy Edwards Date: Mon, 27 Feb 2017 21:14:05 -0600 Subject: [PATCH 05/11] style(link.js): fix jslint error and add make changes banner --- lib/link.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/link.js b/lib/link.js index 12f0bc5..73ae779 100644 --- a/lib/link.js +++ b/lib/link.js @@ -1,4 +1,12 @@ -'use strict' +/* __ __ _ _ _______ ____ _ _ _ _ _ ____ _____ ____ _ + | \/ | / \ | |/ / ____| / ___| | | | / \ | \ | |/ ___| ____/ ___|| | + | |\/| | / _ \ | ' /| _| | | | |_| | / _ \ | \| | | _| _| \___ \| | + | | | |/ ___ \| . \| |___ | |___| _ |/ ___ \| |\ | |_| | |___ ___) |_| + |_| |_/_/ \_\_|\_\_____| \____|_| |_/_/ \_\_| \_|\____|_____|____/(_) + There is a 100% chance that this project can use improvements. + Pull requests are ALWAYS welcome, even if just amounts to a conversation. */ + +'use strict'; module.exports = function (state, callback) { callback(null, state); From ad9016f6cf08ee001f5c45effe8fe2869f4ecf58 Mon Sep 17 00:00:00 2001 From: howardroark Date: Tue, 28 Feb 2017 09:54:38 -0500 Subject: [PATCH 06/11] Update link.js --- lib/link.js | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/lib/link.js b/lib/link.js index 73ae779..dc59e29 100644 --- a/lib/link.js +++ b/lib/link.js @@ -8,6 +8,31 @@ 'use strict'; +var async = require('async'); + module.exports = function (state, callback) { - callback(null, state); + var link = state.data.link; + + if (link === undefined) { + callback(null, state); + return; + } + + async.parallel( + link.map( + function (item) { + return function (done) { + done(null); + } + } + ), + function (err) { + if (err) { + callback(err); + return; + } + callback(null, state); + } + ) + }; From 485e0199082fa6a8a9f90423b54a089631a53384 Mon Sep 17 00:00:00 2001 From: howardroark Date: Tue, 28 Feb 2017 09:55:31 -0500 Subject: [PATCH 07/11] Update link.js --- lib/link.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/link.js b/lib/link.js index dc59e29..90128c7 100644 --- a/lib/link.js +++ b/lib/link.js @@ -23,7 +23,7 @@ module.exports = function (state, callback) { function (item) { return function (done) { done(null); - } + }; } ), function (err) { @@ -33,6 +33,5 @@ module.exports = function (state, callback) { } callback(null, state); } - ) - + ); }; From efb30acd1acd1b9cd3dec2ba14f4da33a00f41c6 Mon Sep 17 00:00:00 2001 From: howardroark Date: Tue, 28 Feb 2017 09:58:03 -0500 Subject: [PATCH 08/11] Update template.json --- tests/mocks/template/template.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/mocks/template/template.json b/tests/mocks/template/template.json index 9f1621d..815e85d 100644 --- a/tests/mocks/template/template.json +++ b/tests/mocks/template/template.json @@ -15,5 +15,8 @@ { "project-name-dir": "{{ name }}" }, { "project-name-nested": "{{ name }}/{{ name }}/{{ name }}.txt" } ], + "link": [ + { "{{ name }}.txt": "{{ name }}/{{ name }}/{{ name }}-link.txt" } + ], "complete": "git init {{ name }}" } From 549c81ddd7e5af2c57e6bbc540fea90464634400 Mon Sep 17 00:00:00 2001 From: howardroark Date: Tue, 28 Feb 2017 10:05:57 -0500 Subject: [PATCH 09/11] Update link.js --- lib/link.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/link.js b/lib/link.js index 90128c7..6773d47 100644 --- a/lib/link.js +++ b/lib/link.js @@ -9,6 +9,7 @@ 'use strict'; var async = require('async'); +var fsExtra = require('fs-extra'); module.exports = function (state, callback) { var link = state.data.link; @@ -21,8 +22,21 @@ module.exports = function (state, callback) { async.parallel( link.map( function (item) { + var orig = state.template.tmp + '/' + Object.keys(item)[0], + dest = state.template.tmp + '/' + item[Object.keys(item)[0]]; + return function (done) { - done(null); + fsExtra.ensureSymlink( + orig, + dest, + function (err) { + if (err) { + done(err); + return; + } + done(null); + } + ); }; } ), From 4cf95666c6346f55ca9cf2d0b063dffd3a4813b3 Mon Sep 17 00:00:00 2001 From: howardroark Date: Tue, 28 Feb 2017 10:09:25 -0500 Subject: [PATCH 10/11] Update link.js --- lib/link.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/link.js b/lib/link.js index 6773d47..03fc590 100644 --- a/lib/link.js +++ b/lib/link.js @@ -9,7 +9,7 @@ 'use strict'; var async = require('async'); -var fsExtra = require('fs-extra'); +var fs = require('fs'); module.exports = function (state, callback) { var link = state.data.link; @@ -26,7 +26,7 @@ module.exports = function (state, callback) { dest = state.template.tmp + '/' + item[Object.keys(item)[0]]; return function (done) { - fsExtra.ensureSymlink( + fs.symlink( orig, dest, function (err) { From 19819902145d97227acd8fb09d334291f0663d48 Mon Sep 17 00:00:00 2001 From: howardroark Date: Sun, 5 Mar 2017 17:44:26 -0500 Subject: [PATCH 11/11] Update link.js --- lib/link.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/link.js b/lib/link.js index 03fc590..ea66558 100644 --- a/lib/link.js +++ b/lib/link.js @@ -10,6 +10,8 @@ var async = require('async'); var fs = require('fs'); +var path = require('path'); +var cwd = process.cwd(); module.exports = function (state, callback) { var link = state.data.link; @@ -19,16 +21,18 @@ module.exports = function (state, callback) { return; } + process.chdir(state.template.tmp); + async.parallel( link.map( function (item) { - var orig = state.template.tmp + '/' + Object.keys(item)[0], - dest = state.template.tmp + '/' + item[Object.keys(item)[0]]; + var symlinkPath = item[Object.keys(item)[0]], + relativeTarget = path.relative(Object.keys(item)[0], symlinkPath); return function (done) { fs.symlink( - orig, - dest, + relativeTarget, + symlinkPath, function (err) { if (err) { done(err); @@ -41,6 +45,7 @@ module.exports = function (state, callback) { } ), function (err) { + process.chdir(cwd); if (err) { callback(err); return;