fingerprint static method

String fingerprint(
  1. File config,
  2. String operation
)

Implementation

static String fingerprint(File config, String operation) {
  final bytes = <int>[
    ...config.readAsBytesSync(),
    ...utf8.encode('\noperation=$operation'),
  ];
  try {
    final result = Process.runSync(
      'git',
      ['rev-parse', 'HEAD'],
      workingDirectory: config.absolute.parent.path,
    );
    if (result.exitCode == 0) {
      final revision = result.stdout.toString().trim();
      if (revision.isNotEmpty) bytes.addAll(utf8.encode('\ngit=$revision'));
    }
  } on ProcessException {
    // A config outside a Git checkout remains resumable using its content.
  }
  return sha256.convert(bytes).toString();
}