azure-pipelines-task-lib 4.8.1 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/internal.js CHANGED
@@ -33,7 +33,7 @@ var IssueSource;
33
33
  //-----------------------------------------------------
34
34
  // async await needs generators in node 4.x+
35
35
  if (semver.lt(process.versions.node, '4.2.0')) {
36
- _warning('Tasks require a new agent. Upgrade your agent or node to 4.2.0 or later');
36
+ _warning('Tasks require a new agent. Upgrade your agent or node to 4.2.0 or later', IssueSource.TaskInternal);
37
37
  }
38
38
  //-----------------------------------------------------
39
39
  // String convenience
@@ -124,7 +124,7 @@ function _loadLocStrings(resourceFile, culture) {
124
124
  }
125
125
  }
126
126
  else {
127
- _warning('LIB_ResourceFile does not exist');
127
+ _warning('LIB_ResourceFile does not exist', IssueSource.TaskInternal);
128
128
  }
129
129
  return locStrings;
130
130
  }
@@ -159,7 +159,7 @@ function _setResourcePath(path, ignoreWarnings) {
159
159
  _debug(_loc('LIB_ResourceFileAlreadySet', path));
160
160
  }
161
161
  else {
162
- _warning(_loc('LIB_ResourceFileAlreadySet', path));
162
+ _warning(_loc('LIB_ResourceFileAlreadySet', path), IssueSource.TaskInternal);
163
163
  }
164
164
  }
165
165
  }
@@ -193,7 +193,7 @@ function _loc(key) {
193
193
  }
194
194
  else {
195
195
  if (Object.keys(_resourceFiles).length <= 0) {
196
- _warning("Resource file haven't been set, can't find loc string for key: " + key);
196
+ _warning("Resource file haven't been set, can't find loc string for key: " + key, IssueSource.TaskInternal);
197
197
  }
198
198
  else {
199
199
  _warning("Can't find loc string for key: " + key);
package/mock-task.js CHANGED
@@ -60,6 +60,7 @@ module.exports.getInput = task.getInput;
60
60
  module.exports.getInputRequired = task.getInputRequired;
61
61
  module.exports.getBoolInput = task.getBoolInput;
62
62
  module.exports.getBoolFeatureFlag = task.getBoolFeatureFlag;
63
+ module.exports.getPipelineFeature = task.getPipelineFeature;
63
64
  module.exports.getDelimitedInput = task.getDelimitedInput;
64
65
  module.exports.filePathSupplied = task.filePathSupplied;
65
66
  function getPathInput(name, required, check) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "azure-pipelines-task-lib",
3
- "version": "4.8.1",
3
+ "version": "4.9.0",
4
4
  "description": "Azure Pipelines Task SDK",
5
5
  "main": "./task.js",
6
6
  "typings": "./task.d.ts",
package/task.d.ts CHANGED
@@ -135,12 +135,20 @@ export declare function getInputRequired(name: string): string;
135
135
  export declare function getBoolInput(name: string, required?: boolean): boolean;
136
136
  /**
137
137
  * Gets the value of an feature flag and converts to a bool.
138
- *
138
+ * @IMPORTANT This method is only for internal Microsoft development. Do not use it for external tasks.
139
139
  * @param name name of the feature flag to get.
140
140
  * @param defaultValue default value of the feature flag in case it's not found in env. (optional. Default value = false)
141
141
  * @returns boolean
142
+ * @deprecated Don't use this for new development. Use getPipelineFeature instead.
142
143
  */
143
144
  export declare function getBoolFeatureFlag(ffName: string, defaultValue?: boolean): boolean;
145
+ /**
146
+ * Gets the value of an task feature and converts to a bool.
147
+ * @IMPORTANT This method is only for internal Microsoft development. Do not use it for external tasks.
148
+ * @param name name of the feature to get.
149
+ * @returns boolean
150
+ */
151
+ export declare function getPipelineFeature(featureName: string): boolean;
144
152
  /**
145
153
  * Gets the value of an input and splits the value using a delimiter (space, comma, etc).
146
154
  * Empty values are removed. This function is useful for splitting an input containing a simple
package/task.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateReleaseName = exports.addBuildTag = exports.updateBuildNumber = exports.uploadBuildLog = exports.associateArtifact = exports.uploadArtifact = exports.logIssue = exports.logDetail = exports.setProgress = exports.setEndpoint = exports.addAttachment = exports.uploadSummary = exports.prependPath = exports.uploadFile = exports.CodeCoverageEnabler = exports.CodeCoveragePublisher = exports.TestPublisher = exports.getHttpCertConfiguration = exports.getHttpProxyConfiguration = exports.findMatch = exports.filter = exports.match = exports.tool = exports.execSync = exports.exec = exports.execAsync = exports.rmRF = exports.legacyFindFiles = exports.find = exports.retry = exports.mv = exports.cp = exports.ls = exports.which = exports.resolve = exports.mkdirP = exports.popd = exports.pushd = exports.cd = exports.checkPath = exports.cwd = exports.getAgentMode = exports.getNodeMajorVersion = exports.getPlatform = exports.osType = exports.writeFile = exports.exist = exports.stats = exports.debug = exports.error = exports.warning = exports.command = exports.setTaskVariable = exports.getTaskVariable = exports.getSecureFileTicket = exports.getSecureFileName = exports.getEndpointAuthorization = exports.getEndpointAuthorizationParameterRequired = exports.getEndpointAuthorizationParameter = exports.getEndpointAuthorizationSchemeRequired = exports.getEndpointAuthorizationScheme = exports.getEndpointDataParameterRequired = exports.getEndpointDataParameter = exports.getEndpointUrlRequired = exports.getEndpointUrl = exports.getPathInputRequired = exports.getPathInput = exports.filePathSupplied = exports.getDelimitedInput = exports.getBoolFeatureFlag = exports.getBoolInput = exports.getInputRequired = exports.getInput = exports.setSecret = exports.setVariable = exports.getVariables = exports.assertAgent = exports.getVariable = exports.loc = exports.setResourcePath = exports.setResult = exports.setErrStream = exports.setStdStream = exports.AgentHostedMode = exports.Platform = exports.IssueSource = exports.FieldType = exports.ArtifactType = exports.IssueType = exports.TaskState = exports.TaskResult = void 0;
3
+ exports.updateReleaseName = exports.addBuildTag = exports.updateBuildNumber = exports.uploadBuildLog = exports.associateArtifact = exports.uploadArtifact = exports.logIssue = exports.logDetail = exports.setProgress = exports.setEndpoint = exports.addAttachment = exports.uploadSummary = exports.prependPath = exports.uploadFile = exports.CodeCoverageEnabler = exports.CodeCoveragePublisher = exports.TestPublisher = exports.getHttpCertConfiguration = exports.getHttpProxyConfiguration = exports.findMatch = exports.filter = exports.match = exports.tool = exports.execSync = exports.exec = exports.execAsync = exports.rmRF = exports.legacyFindFiles = exports.find = exports.retry = exports.mv = exports.cp = exports.ls = exports.which = exports.resolve = exports.mkdirP = exports.popd = exports.pushd = exports.cd = exports.checkPath = exports.cwd = exports.getAgentMode = exports.getNodeMajorVersion = exports.getPlatform = exports.osType = exports.writeFile = exports.exist = exports.stats = exports.debug = exports.error = exports.warning = exports.command = exports.setTaskVariable = exports.getTaskVariable = exports.getSecureFileTicket = exports.getSecureFileName = exports.getEndpointAuthorization = exports.getEndpointAuthorizationParameterRequired = exports.getEndpointAuthorizationParameter = exports.getEndpointAuthorizationSchemeRequired = exports.getEndpointAuthorizationScheme = exports.getEndpointDataParameterRequired = exports.getEndpointDataParameter = exports.getEndpointUrlRequired = exports.getEndpointUrl = exports.getPathInputRequired = exports.getPathInput = exports.filePathSupplied = exports.getDelimitedInput = exports.getPipelineFeature = exports.getBoolFeatureFlag = exports.getBoolInput = exports.getInputRequired = exports.getInput = exports.setSecret = exports.setVariable = exports.getVariables = exports.assertAgent = exports.getVariable = exports.loc = exports.setResourcePath = exports.setResult = exports.setErrStream = exports.setStdStream = exports.AgentHostedMode = exports.Platform = exports.IssueSource = exports.FieldType = exports.ArtifactType = exports.IssueType = exports.TaskState = exports.TaskResult = void 0;
4
4
  var shell = require("shelljs");
5
5
  var childProcess = require("child_process");
6
6
  var fs = require("fs");
@@ -68,10 +68,10 @@ function setResult(result, message, done) {
68
68
  exports.debug('task result: ' + TaskResult[result]);
69
69
  // add an error issue
70
70
  if (result == TaskResult.Failed && message) {
71
- exports.error(message);
71
+ exports.error(message, exports.IssueSource.TaskInternal);
72
72
  }
73
73
  else if (result == TaskResult.SucceededWithIssues && message) {
74
- exports.warning(message);
74
+ exports.warning(message, exports.IssueSource.TaskInternal);
75
75
  }
76
76
  // task.complete
77
77
  var properties = { 'result': TaskResult[result] };
@@ -240,10 +240,11 @@ function getBoolInput(name, required) {
240
240
  exports.getBoolInput = getBoolInput;
241
241
  /**
242
242
  * Gets the value of an feature flag and converts to a bool.
243
- *
243
+ * @IMPORTANT This method is only for internal Microsoft development. Do not use it for external tasks.
244
244
  * @param name name of the feature flag to get.
245
245
  * @param defaultValue default value of the feature flag in case it's not found in env. (optional. Default value = false)
246
246
  * @returns boolean
247
+ * @deprecated Don't use this for new development. Use getPipelineFeature instead.
247
248
  */
248
249
  function getBoolFeatureFlag(ffName, defaultValue) {
249
250
  if (defaultValue === void 0) { defaultValue = false; }
@@ -256,6 +257,24 @@ function getBoolFeatureFlag(ffName, defaultValue) {
256
257
  return ffValue.toLowerCase() === "true";
257
258
  }
258
259
  exports.getBoolFeatureFlag = getBoolFeatureFlag;
260
+ /**
261
+ * Gets the value of an task feature and converts to a bool.
262
+ * @IMPORTANT This method is only for internal Microsoft development. Do not use it for external tasks.
263
+ * @param name name of the feature to get.
264
+ * @returns boolean
265
+ */
266
+ function getPipelineFeature(featureName) {
267
+ var variableName = im._getVariableKey("DistributedTask.Tasks." + featureName);
268
+ var featureValue = process.env[variableName];
269
+ if (!featureValue) {
270
+ exports.debug("Feature '" + featureName + "' not found. Returning false as default.");
271
+ return false;
272
+ }
273
+ var boolValue = featureValue.toLowerCase() === "true";
274
+ exports.debug("Feature '" + featureName + "' = '" + featureValue + "'. Processed as '" + boolValue + "'.");
275
+ return boolValue;
276
+ }
277
+ exports.getPipelineFeature = getPipelineFeature;
259
278
  /**
260
279
  * Gets the value of an input and splits the value using a delimiter (space, comma, etc).
261
280
  * Empty values are removed. This function is useful for splitting an input containing a simple
@@ -708,7 +727,7 @@ function mkdirP(p) {
708
727
  var testDir = p;
709
728
  while (true) {
710
729
  // validate the loop is not out of control
711
- if (stack.length >= (process.env['TASKLIB_TEST_MKDIRP_FAILSAFE'] || 1000)) {
730
+ if (stack.length >= Number(process.env['TASKLIB_TEST_MKDIRP_FAILSAFE'] || 1000)) {
712
731
  // let the framework throw
713
732
  exports.debug('loop is out of control');
714
733
  fs.mkdirSync(p);
@@ -815,7 +834,7 @@ function cp(source, dest, options, continueOnError, retryCount) {
815
834
  catch (e) {
816
835
  if (retryCount <= 0) {
817
836
  if (continueOnError) {
818
- exports.warning(e);
837
+ exports.warning(e, exports.IssueSource.TaskInternal);
819
838
  break;
820
839
  }
821
840
  else {
@@ -865,7 +884,7 @@ function retry(func, args, retryOptions) {
865
884
  catch (e) {
866
885
  if (retryOptions.retryCount <= 0) {
867
886
  if (retryOptions.continueOnError) {
868
- exports.warning(e);
887
+ exports.warning(e, exports.IssueSource.TaskInternal);
869
888
  break;
870
889
  }
871
890
  else {
@@ -965,7 +984,7 @@ function find(findPath, options) {
965
984
  }
966
985
  catch (err) {
967
986
  if (err.code == 'ENOENT' && options.skipMissingFiles) {
968
- exports.warning("No such file or directory: \"" + item.path + "\" - skipping.");
987
+ exports.warning("No such file or directory: \"" + item.path + "\" - skipping.", exports.IssueSource.TaskInternal);
969
988
  return "continue";
970
989
  }
971
990
  throw err;
@@ -2071,7 +2090,7 @@ exports.ToolRunner = trm.ToolRunner;
2071
2090
  //-----------------------------------------------------
2072
2091
  // async await needs generators in node 4.x+
2073
2092
  if (semver.lt(process.versions.node, '4.2.0')) {
2074
- exports.warning('Tasks require a new agent. Upgrade your agent or node to 4.2.0 or later');
2093
+ exports.warning('Tasks require a new agent. Upgrade your agent or node to 4.2.0 or later', exports.IssueSource.TaskInternal);
2075
2094
  }
2076
2095
  //-------------------------------------------------------------------
2077
2096
  // Populate the vault with sensitive data. Inputs and Endpoints