function getLockFileHashes()

in packages/just-task/src/cache.ts [90:121]


function getLockFileHashes(): { [file: string]: string } {
  const results: { [file: string]: string } = {};

  const lockFiles = ['shrinkwrap.yml', 'package-lock.json', 'yarn.lock', 'pnpmfile.js'];
  const gitRoot = findGitRoot();
  const lsFileResults = spawnSync('git', ['ls-files', ...lockFiles], { cwd: gitRoot });
  if (lsFileResults.status !== 0) {
    return {};
  }

  const foundLockFiles = lsFileResults.stdout
    .toString()
    .split(/\n/)
    .map(l => l.trim());

  const hashResults = spawnSync('git', ['hash-object', ...foundLockFiles], { cwd: gitRoot });

  if (hashResults.status !== 0) {
    return {};
  }

  const hashes = hashResults.stdout
    .toString()
    .split(/\n/)
    .map(l => l.trim());

  foundLockFiles.forEach((foundLockFile, index) => {
    results[foundLockFile] = hashes[index];
  });

  return results;
}