saveProjectId static method

Future<void> saveProjectId(
  1. String projectPath,
  2. String projectId, {
  3. String? projectName,
})

Save project ID to directory config

Implementation

static Future<void> saveProjectId(String projectPath, String projectId,
    {String? projectName}) async {
  try {
    final configDir = Directory(_getConfigDir(projectPath));
    if (!configDir.existsSync()) {
      configDir.createSync(recursive: true);
    }

    final configFile = File(_getConfigPath(projectPath));
    final config = <String, dynamic>{
      'projectId': projectId,
      if (projectName != null) 'projectName': projectName,
      'updatedAt': DateTime.now().toIso8601String(),
    };

    await configFile.writeAsString(
      const JsonEncoder.withIndent('  ').convert(config),
    );

    // Set restrictive permissions (600) for security
    if (Platform.isLinux || Platform.isMacOS) {
      final process = await Process.run(
        'chmod',
        ['600', configFile.path],
      );
      if (process.exitCode != 0) {
        // Silently fail - permissions are best effort
      }
    }
  } catch (e) {
    throw Exception('Failed to save project configuration: $e');
  }
}