Skip to content

Commit f0e9b31

Browse files
clydinfilipesilva
authored andcommitted
build: update build scripts to support Node.js v16
Node.js v16's `fs.rmdirSync` will now throw an `ENOENT` error if the path does not exist. `fs.rmSync` is now the preferred option when using Node.js v16 but since this function is not available on Node.js v12 both are tried with `fs.rmSync` given preference.
1 parent 9fe5575 commit f0e9b31

File tree

2 files changed

+43
-4
lines changed

2 files changed

+43
-4
lines changed

scripts/build-schema.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,25 @@ export default async function (argv: {}, logger: logging.Logger) {
1919

2020
const quicktypeRunner = require('../tools/quicktype_runner');
2121
logger.info('Removing dist-schema/...');
22-
fs.rmdirSync(dist, { recursive: true, maxRetries: 3 });
22+
23+
// The below should be removed and replace with just `rmSync` when support for Node.Js 12 is removed.
24+
const { rmSync, rmdirSync } = fs as typeof fs & {
25+
rmSync?: (
26+
path: fs.PathLike,
27+
options?: {
28+
force?: boolean;
29+
maxRetries?: number;
30+
recursive?: boolean;
31+
retryDelay?: number;
32+
},
33+
) => void;
34+
};
35+
36+
if (rmSync) {
37+
rmSync(dist, { force: true, recursive: true, maxRetries: 3 });
38+
} else {
39+
rmdirSync(dist, { recursive: true, maxRetries: 3 });
40+
}
2341

2442
logger.info('Generating JSON Schema....');
2543

scripts/build.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,31 @@ function _rm(p: string) {
121121
fs.unlinkSync(p);
122122
}
123123

124+
function rimraf(location: string) {
125+
// The below should be removed and replace with just `rmSync` when support for Node.Js 12 is removed.
126+
const { rmSync, rmdirSync } = fs as typeof fs & {
127+
rmSync?: (
128+
path: fs.PathLike,
129+
options?: {
130+
force?: boolean;
131+
maxRetries?: number;
132+
recursive?: boolean;
133+
retryDelay?: number;
134+
},
135+
) => void;
136+
};
137+
138+
if (rmSync) {
139+
rmSync(location, { force: true, recursive: true, maxRetries: 3 });
140+
} else {
141+
rmdirSync(location, { recursive: true, maxRetries: 3 });
142+
}
143+
}
144+
124145
function _clean(logger: logging.Logger) {
125146
logger.info('Cleaning...');
126147
logger.info(' Removing dist/...');
127-
fs.rmdirSync(path.join(__dirname, '../dist'), { recursive: true, maxRetries: 3 });
148+
rimraf(path.join(__dirname, '../dist'));
128149
}
129150

130151
function _sortPackages() {
@@ -192,7 +213,7 @@ export default async function (
192213
packageLogger.info(packageName);
193214
const pkg = packages[packageName];
194215
_recursiveCopy(pkg.build, pkg.dist, logger);
195-
fs.rmdirSync(pkg.build, { recursive: true, maxRetries: 3 });
216+
rimraf(pkg.build);
196217
}
197218

198219
logger.info('Merging bazel-bin/ with dist/');
@@ -204,7 +225,7 @@ export default async function (
204225
if (fs.existsSync(bazelBinPath)) {
205226
packageLogger.info(packageName);
206227
_recursiveCopy(bazelBinPath, pkg.dist, logger);
207-
fs.rmdirSync(bazelBinPath, { recursive: true, maxRetries: 3 });
228+
rimraf(bazelBinPath);
208229
}
209230
}
210231

0 commit comments

Comments
 (0)