var hashAndCache = function()

in src/vsts/buildAndReleaseTask/task.js [43:78]


var hashAndCache = function (options) {
  options.sourcePath = userOptions.sourcePath || process.cwd();
  options.sourceFiles = userOptions.sourceFiles || ["**"];
  options.sourceFiles = typeof userOptions.sourceFiles === 'string' ? [userOptions.sourceFiles] : userOptions.sourceFiles;
  options.sourceIgnore = userOptions.sourceIgnore || "";
  options.hashSuffix = userOptions.hashSuffix || "";
  options.execWorkingDirectory = userOptions.execWorkingDirectory || process.cwd();
  options.execCommand = userOptions.execCommand || null;
  options.storageAccount = userOptions.storageAccount || null;
  options.storageContainer = userOptions.storageContainer || null;
  options.storageKey = userOptions.storageKey || null;
  options.outputPath = userOptions.outputPath || process.cwd();
  options.outputFiles = userOptions.outputFiles || ["**"];
  options.outputIgnore = userOptions.outputIgnore || "";
  options.outputFiles = typeof userOptions.outputFiles === 'string' ? [userOptions.outputFiles] : userOptions.outputFiles;
  options.downloadCacheOnHit = userOptions.downloadCacheOnHit === false ? false : true;
  options.uploadCacheOnMiss = userOptions.uploadCacheOnMiss === true;

  var hash = generateHash(options.sourcePath, options.sourceFiles, options.sourceIgnore, options.hashSuffix, options.execCommand);

  doesCacheExist(hash, options.storageAccount, options.storageContainer, options.storageKey).then(function (result) {
    if (result) {
      console.log(result, "CACHE HIT!");

      if (options.downloadCacheOnHit) {
        downloadCache(hash, options.storageAccount, options.storageContainer, options.storageKey, options.outputPath).then(function () {
          extractCache(options.outputPath, hash);
          deleteCache(options.outputPath, hash);
        }).catch(function () { return runExecCommand(options) });
      }
    } else {
      console.log("CACHE MISS!");
      return onCacheMiss(hash, options);
    }
  });
}