Skip to content

Commit be5d204

Browse files
authored
Merge pull request #14 from geeklearningio/develop
release/0.5.0
2 parents 895dd98 + a84a7fc commit be5d204

31 files changed

+3030
-219
lines changed

clean.js

Lines changed: 0 additions & 28 deletions
This file was deleted.

dist/clean.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var fs = require("fs-extra");
4+
var path = require("path");
5+
var tasks = require("./tasks");
6+
var lodash_1 = require("lodash");
7+
var minimist = require("minimist");
8+
var options = minimist(process.argv.slice(2), {});
9+
fs.emptyDirSync('.BuildOutput');
10+
lodash_1.forEach(tasks.getTasks(options.taskroot), function (task) {
11+
var targetNodeCommonDir = path.join(task.directory, "common");
12+
var taskNodeModules = path.join(task.directory, "node_modules");
13+
var targetPowershellCommonDir = path.join(task.directory, "ps_modules");
14+
fs.removeSync(targetNodeCommonDir);
15+
fs.removeSync(targetPowershellCommonDir);
16+
if (options.modules == "true") {
17+
fs.removeSync(taskNodeModules);
18+
}
19+
;
20+
});

dist/configuration.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var path = require("path");
4+
;
5+
function getConfiguration() {
6+
var currentDirectory = process.cwd();
7+
return require(path.join(currentDirectory, 'configuration.json'));
8+
}
9+
exports.getConfiguration = getConfiguration;

dist/endpoints.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var path = require("path");
4+
var fs = require("fs-extra");
5+
function getEndpoints(endpointsRoot) {
6+
if (!endpointsRoot) {
7+
var currentDirectory = process.cwd();
8+
endpointsRoot = path.join(currentDirectory, 'Endpoints');
9+
}
10+
if (!fs.existsSync(endpointsRoot)) {
11+
return [];
12+
}
13+
return fs.readdirSync(endpointsRoot).map(function (file) {
14+
var endpointPath = path.join(endpointsRoot, file);
15+
var manifest = JSON.parse(fs.readFileSync(endpointPath, { encoding: 'utf8' }));
16+
return {
17+
path: endpointPath,
18+
name: manifest.properties.name,
19+
manifest: manifest,
20+
};
21+
});
22+
}
23+
exports.getEndpoints = getEndpoints;

dist/extension-version.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var minimist = require("minimist");
4+
var semver = require("semver");
5+
function getSemanticVersion() {
6+
var options = minimist(process.argv.slice(2), {});
7+
var version = options.version;
8+
if (!version) {
9+
version = "0.0.0";
10+
console.log('No version argument provided, fallback to default version: ' + version);
11+
}
12+
else {
13+
console.log('Found version: ' + version);
14+
}
15+
if (!semver.valid(version)) {
16+
throw new Error('Package: invalid semver version: ' + version);
17+
}
18+
var patch = semver.patch(version);
19+
if (!options.noversiontransform) {
20+
patch *= 1000;
21+
var prerelease = semver.prerelease(version);
22+
if (prerelease) {
23+
;
24+
patch += parseInt(prerelease[1]);
25+
}
26+
else {
27+
patch += 999;
28+
}
29+
}
30+
var result = {
31+
major: semver.major(version),
32+
minor: semver.minor(version),
33+
patch: patch,
34+
getVersionString: function () {
35+
return this.major.toString() + '.' + this.minor.toString() + '.' + this.patch.toString();
36+
}
37+
};
38+
console.log('Extension Version: ' + result.getVersionString());
39+
return result;
40+
}
41+
exports.getSemanticVersion = getSemanticVersion;
42+
;

dist/install.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var async_1 = require("async");
4+
var path = require("path");
5+
var child_process_1 = require("child_process");
6+
var tasks_1 = require("./tasks");
7+
var npmInstall = function (project) {
8+
return function (done) {
9+
var isYarn = path.basename(process.env.npm_execpath || "npm").startsWith("yarn");
10+
var installer = isYarn ? 'yarn' : 'npm';
11+
var child = child_process_1.exec(isYarn ? 'yarn' : 'npm install', {
12+
cwd: project.directory
13+
}, function (error, stdout, stderr) {
14+
if (error) {
15+
console.error('execution error:', error);
16+
done(error);
17+
return;
18+
}
19+
console.log(installer + " install done for " + project.name);
20+
if (stdout) {
21+
console.log(stdout);
22+
}
23+
if (stderr) {
24+
console.error(stderr);
25+
}
26+
var nodeModulesPath = path.join(project.directory, 'node_modules');
27+
var powerShellModules = require("glob").sync(path.join(project.directory, "node_modules", "**", "*.psm1"));
28+
if (powerShellModules.length > 0) {
29+
var fs = require("fs-extra");
30+
var taskFilePath = path.join(project.directory, 'task.json');
31+
var task = fs.existsSync(taskFilePath) ? fs.readJsonSync(taskFilePath) : {};
32+
if (task.execution.PowerShell3) {
33+
var psModulesPath = path.join(project.directory, 'ps_modules');
34+
fs.ensureDirSync(psModulesPath);
35+
for (var i = 0; i < powerShellModules.length; i++) {
36+
var powerShellModulePath = powerShellModules[i];
37+
var powerShellModuleDirName = path.dirname(powerShellModulePath);
38+
var powerShellModuleFolderName = path.basename(powerShellModuleDirName);
39+
fs.copySync(powerShellModuleDirName, path.join(psModulesPath, powerShellModuleFolderName), { clobber: true, dereference: true });
40+
console.log(powerShellModuleFolderName + " copied in ps_modules for " + project.name);
41+
}
42+
}
43+
}
44+
done();
45+
});
46+
};
47+
};
48+
var installTasks = tasks_1.getTasks().map(npmInstall);
49+
async_1.series(installTasks, function (err) {
50+
if (err) {
51+
console.error("Failed to install child dependencies");
52+
throw err;
53+
}
54+
});

dist/node-modclean.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var minimist = require("minimist");
4+
var tasks = require("./tasks");
5+
var async_1 = require("async");
6+
var path = require("path");
7+
var fs = require("fs");
8+
var modclean = require('modclean');
9+
var runModclean = function (project) {
10+
return function (done) {
11+
if (fs.existsSync(path.join(project.directory, "node_modules"))) {
12+
var modcleanOptions = {
13+
cwd: project.directory
14+
};
15+
var options = minimist(process.argv.slice(2), {});
16+
if (options.patterns) {
17+
modcleanOptions.patterns = options.patterns.split(',');
18+
}
19+
if (options.additionalpatterns) {
20+
modcleanOptions.additionalPatterns = options.additionalpatterns.split(',');
21+
}
22+
if (options.ignorepatterns) {
23+
modcleanOptions.ignorePatterns = options.ignorepatterns.split(',');
24+
}
25+
modclean(modcleanOptions, function (err, results) {
26+
// called once cleaning is complete.
27+
if (err) {
28+
console.error("exec error: " + err);
29+
done(err);
30+
return;
31+
}
32+
console.log(results.length + " files removed!");
33+
done();
34+
});
35+
}
36+
else {
37+
console.log("modclean skipped for " + project.name);
38+
done();
39+
}
40+
};
41+
};
42+
var cleanTasks = tasks.getTasks().map(runModclean);
43+
async_1.series(cleanTasks, function (err) {
44+
if (err) {
45+
console.error("Failed to run modclean");
46+
throw err;
47+
}
48+
});

dist/package.js

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
var path = require("path");
4+
var child_process_1 = require("child_process");
5+
var fs = require("fs-extra");
6+
var async_1 = require("async");
7+
var extension_version_1 = require("./extension-version");
8+
var tasks_1 = require("./tasks");
9+
var configuration_1 = require("./configuration");
10+
var endpoints_1 = require("./endpoints");
11+
var currentDirectory = process.cwd();
12+
var buildOutputDirectory = path.join(currentDirectory, '.BuildOutput');
13+
var extensionDirectory = path.join(currentDirectory, 'Extension');
14+
var tasksDirectory = path.join(currentDirectory, 'Tasks');
15+
fs.ensureDirSync(buildOutputDirectory);
16+
var version = extension_version_1.getSemanticVersion();
17+
var configuration = configuration_1.getConfiguration();
18+
var createExtensionTasks = configuration.environments.map(function (env) {
19+
var environmentDirectory = path.join(buildOutputDirectory, env.Name);
20+
var environmentTasksDirectory = path.join(environmentDirectory, 'Tasks');
21+
fs.ensureDirSync(environmentDirectory);
22+
fs.copySync(extensionDirectory, environmentDirectory, { overwrite: true, dereference: true });
23+
fs.copySync(tasksDirectory, environmentTasksDirectory, { overwrite: true, dereference: true });
24+
var extensionFilePath = path.join(environmentDirectory, 'vss-extension.json');
25+
var extension = fs.readJsonSync(extensionFilePath);
26+
extension.id += env.VssExtensionIdSuffix;
27+
extension.name += env.DisplayNamesSuffix;
28+
extension.version = version.getVersionString();
29+
extension.galleryFlags = env.VssExtensionGalleryFlags;
30+
if (extension.contributions === undefined) {
31+
extension.contributions = [];
32+
}
33+
var endpointMap = {};
34+
endpoints_1.getEndpoints().forEach(function (endpoint) {
35+
endpointMap["connectedService:" + endpoint.name] = "connectedService:" + endpoint.name + env.VssExtensionIdSuffix;
36+
var config = endpoint.manifest;
37+
config.id = config.id + env.VssExtensionIdSuffix;
38+
config.properties.name = endpoint.name + env.VssExtensionIdSuffix;
39+
config.properties.displayName = config.properties.displayName + env.DisplayNamesSuffix;
40+
extension.contributions.push(config);
41+
});
42+
tasks_1.getTasks(environmentTasksDirectory).map(function (taskDirectory) {
43+
var taskFilePath = path.join(taskDirectory.directory, 'task.json');
44+
var task = fs.readJsonSync(taskFilePath);
45+
task.id = env.TaskIds[taskDirectory.name];
46+
if (task.id) {
47+
task.friendlyName += env.DisplayNamesSuffix;
48+
task.version = {
49+
Major: version.major,
50+
Minor: version.minor,
51+
Patch: version.patch,
52+
};
53+
if (task.helpMarkDown) {
54+
task.helpMarkDown = task.helpMarkDown.replace('#{Version}#', version.getVersionString());
55+
}
56+
if (task.inputs) {
57+
task.inputs.forEach(function (input) {
58+
var mappedType = endpointMap[input.type];
59+
if (mappedType) {
60+
input.type = mappedType;
61+
}
62+
});
63+
}
64+
fs.writeJsonSync(taskFilePath, task);
65+
var taskLocFilePath = path.join(taskDirectory.directory, 'task.loc.json');
66+
if (fs.existsSync(taskLocFilePath)) {
67+
var taskLoc = fs.readJsonSync(taskLocFilePath);
68+
taskLoc.id = env.TaskIds[taskDirectory.name];
69+
taskLoc.friendlyName += env.DisplayNamesSuffix;
70+
taskLoc.version.Major = version.major;
71+
taskLoc.version.Minor = version.minor;
72+
taskLoc.version.Patch = version.patch;
73+
if (taskLoc.helpMarkDown) {
74+
taskLoc.helpMarkDown = taskLoc.helpMarkDown.replace('#{Version}#', version.getVersionString());
75+
}
76+
fs.writeJsonSync(taskLocFilePath, taskLoc);
77+
var locfilesDirectory = path.join(taskDirectory.directory, 'Strings/resources.resjson');
78+
if (fs.existsSync(locfilesDirectory)) {
79+
var langs = fs.readdirSync(locfilesDirectory);
80+
for (var index = 0; index < langs.length; index++) {
81+
var element = langs[index];
82+
var resourceFile = path.join(locfilesDirectory, element, "resources.resjson");
83+
if (fs.existsSync(resourceFile)) {
84+
var resource = fs.readJsonSync(resourceFile);
85+
resource["loc.helpMarkDown"] = resource["loc.helpMarkDown"].replace('#{Version}#', version.getVersionString());
86+
fs.writeJsonSync(resourceFile, resource);
87+
}
88+
}
89+
}
90+
}
91+
var taskId = taskDirectory.name.replace(/([A-Z])/g, '-$1').toLowerCase().replace(/^[-]+/, "");
92+
extension.contributions.push({
93+
id: taskId + "-task",
94+
type: "ms.vss-distributed-task.task",
95+
description: task.description,
96+
targets: [
97+
"ms.vss-distributed-task.tasks"
98+
],
99+
properties: {
100+
"name": "Tasks/" + taskDirectory.name
101+
}
102+
});
103+
}
104+
else {
105+
fs.removeSync(taskDirectory.directory);
106+
}
107+
});
108+
fs.writeJsonSync(extensionFilePath, extension);
109+
var cmdline = 'tfx extension create --root "' + environmentDirectory
110+
+ '" --manifest-globs "' + extensionFilePath
111+
+ '" --output-path "' + environmentDirectory + '"';
112+
return function (done) {
113+
var child = child_process_1.exec(cmdline, {}, function (error, stdout, stderr) {
114+
if (error) {
115+
console.error("exec error: " + error);
116+
done(error);
117+
return;
118+
}
119+
console.log("tfx extension create done for " + env.Name);
120+
if (stdout) {
121+
console.log(stdout);
122+
}
123+
if (stderr) {
124+
console.error(stderr);
125+
}
126+
done();
127+
});
128+
};
129+
});
130+
async_1.series(createExtensionTasks, function (err) {
131+
if (err) {
132+
console.error("Failed to create extensions.");
133+
throw err;
134+
}
135+
});

0 commit comments

Comments
 (0)