@@ -40,16 +40,12 @@ const fixupProposal = (proposal: ProposalInfo) => {
40
40
}
41
41
} ;
42
42
43
- export const runDoctor = ( proposals : ProposalInfo [ ] ) => {
44
- console . log ( 'Running doctor...' ) ;
45
-
46
- console . log ( 'enabling corepack' ) ;
47
- execSync ( 'corepack enable' , { stdio : 'inherit' } ) ;
48
-
49
- // path to yarn
43
+ const checkYarn = ( ) => {
50
44
const yarnpath = execSync ( 'which yarn' , {
51
45
encoding : 'utf-8' ,
52
46
} ) ;
47
+ console . log ( yarnpath ) ;
48
+
53
49
if ( yarnpath . includes ( 'homebrew' ) ) {
54
50
// Homebrew's yarn install overrides Node's corepack install
55
51
console . error (
@@ -58,7 +54,32 @@ export const runDoctor = (proposals: ProposalInfo[]) => {
58
54
console . error ( ' brew uninstall yarn' ) ;
59
55
process . exit ( 1 ) ;
60
56
}
61
- console . log ( yarnpath ) ;
57
+
58
+ const packageJson = JSON . parse (
59
+ fs . readFileSync ( path . join ( 'package.json' ) , 'utf-8' ) ,
60
+ ) ;
61
+ const expectedYarnVersion =
62
+ packageJson . packageManager . match ( / y a r n @ ( \d + \. \d + \. \d + ) / ) [ 1 ] ;
63
+ const actualYarnVersion = execSync ( 'yarn --version' , {
64
+ encoding : 'utf-8' ,
65
+ } ) . trim ( ) ;
66
+ if ( actualYarnVersion !== expectedYarnVersion ) {
67
+ console . log ( { actualYarnVersion, expectedYarnVersion } ) ;
68
+ console . error (
69
+ `Corepack specifies yarn version ${ expectedYarnVersion } but the path has ${ actualYarnVersion } ` ,
70
+ ) ;
71
+ console . error ( 'Find a way to remove the global yarn before proceeding.' ) ;
72
+ process . exit ( 1 ) ;
73
+ }
74
+ } ;
75
+
76
+ export const runDoctor = ( proposals : ProposalInfo [ ] ) => {
77
+ console . log ( 'Running doctor...' ) ;
78
+
79
+ console . log ( 'enabling corepack' ) ;
80
+ execSync ( 'corepack enable' , { stdio : 'inherit' } ) ;
81
+
82
+ checkYarn ( ) ;
62
83
63
84
console . log ( 'Verifying the CLI runs and create the Dockerfiles' ) ;
64
85
execSync ( 'yarn synthetic-chain prepare-build' , { stdio : 'inherit' } ) ;
0 commit comments