fingerprint method

  1. @override
Future<NativeStepFingerprint> fingerprint(
  1. NativeStepContext context
)
override

Compute a fingerprint for this step based on its inputs.

Used for build caching to determine if a step needs to be re-executed.

Implementation

@override
Future<NativeStepFingerprint> fingerprint(NativeStepContext context) async {
  final buffer = StringBuffer();
  buffer.write(id);
  buffer.write(
    expandRecipeValue(buildDirectory, context.buildContext, context.source),
  );
  buffer.write(
    expandRecipeValues(
      targets,
      context.buildContext,
      context.source,
    ).join(','),
  );
  if (environment != null) {
    final envEntries = expandRecipeStringMap(
      environment!,
      context.buildContext,
      context.source,
    ).entries.toList()..sort((a, b) => a.key.compareTo(b.key));
    buffer.write(envEntries.map((e) => '${e.key}=${e.value}').join('|'));
  }
  return NativeStepFingerprint(
    id: id,
    hash: fingerprintHash(buffer.toString()),
  );
}