Skip to content

Commit 8ada490

Browse files
committed
more edge case fixes
1 parent 776f154 commit 8ada490

File tree

4 files changed

+22
-14
lines changed

4 files changed

+22
-14
lines changed

bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ import 'dart:io';
22
import 'package:mason/mason.dart';
33
import 'package:path/path.dart' as path;
44
import 'package:yaml/yaml.dart';
5+
import 'package:yaml_edit/yaml_edit.dart';
56

67
/// A void callback function (e.g. `void Function()`).
78
typedef VoidCallback = void Function();
89

10+
void _noop() {}
11+
912
/// Opts out of dart workspaces until we can generate per package lockfiles.
1013
/// https://github.com/dart-lang/pub/issues/4594
1114
VoidCallback disableWorkspaceResolution(
@@ -18,7 +21,7 @@ VoidCallback disableWorkspaceResolution(
1821
} on Exception catch (e) {
1922
context.logger.err('$e');
2023
exit(1);
21-
return () {};
24+
return _noop;
2225
}
2326
}
2427

@@ -35,12 +38,15 @@ void Function() overrideResolutionInPubspecOverrides(String projectDirectory) {
3538
final contents = pubspecOverridesFile.readAsStringSync();
3639
final pubspecOverrides = loadYaml(contents) as YamlMap?;
3740

38-
if (pubspecOverrides?['resolution'] == 'null') return () {};
39-
pubspecOverridesFile.writeAsStringSync(
40-
'''
41-
resolution: null
42-
$contents''',
43-
);
41+
if (pubspecOverrides == null) {
42+
pubspecOverridesFile.writeAsStringSync('resolution: null');
43+
return () => pubspecOverridesFile.writeAsStringSync(contents);
44+
}
45+
46+
if (pubspecOverrides['resolution'] == 'null') return _noop;
47+
48+
final editor = YamlEditor(contents)..update(['resolution'], null);
49+
pubspecOverridesFile.writeAsStringSync(editor.toString());
4450

4551
return () => pubspecOverridesFile.writeAsStringSync(contents);
4652
}

bricks/dart_frog_prod_server/hooks/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ dependencies:
1111
mason: ^0.1.0
1212
path: ^1.8.1
1313
yaml: ^3.1.2
14+
yaml_edit: ^2.2.2
1415

1516
dev_dependencies:
1617
mocktail: ^1.0.0

bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,9 @@ dependency_overrides:
7070
pubspecOverrides.readAsStringSync(),
7171
equals(
7272
'''
73+
$originalPubspecOverridesContent
7374
resolution: null
74-
$originalPubspecOverridesContent''',
75+
''',
7576
),
7677
);
7778
});

0 commit comments

Comments
 (0)