packageHasChanges function

Future<bool> packageHasChanges(
  1. String packagePath,
  2. String baseRef,
  3. String newRef,
  4. Directory gitRoot,
)

Checks if a package directory has changes between two git refs

Implementation

Future<bool> packageHasChanges(
  String packagePath,
  String baseRef,
  String newRef,
  Directory gitRoot,
) async {
  try {
    // Use git diff to check if any files in the package directory changed
    final result = await Process.run(
      'git',
      [
        'diff',
        '--name-only',
        '$baseRef..$newRef',
        '--',
        packagePath,
      ],
      workingDirectory: gitRoot.path,
    );

    if (result.exitCode != 0) {
      logger.warn('Git diff failed for package $packagePath: ${result.stderr}');
      // If diff fails, assume package has changes to be safe
      return true;
    }

    final changedFiles = result.stdout.toString().trim();
    return changedFiles.isNotEmpty;
  } catch (e) {
    logger.warn('Error checking changes for package $packagePath: $e');
    // If check fails, assume package has changes to be safe
    return true;
  }
}