Skip to content

Commit

Permalink
chore(build): Ensure experimental builds exists on windows (#20933)
Browse files Browse the repository at this point in the history
* chore(build): Throw if `rsync` fails

* did not get cwrsync to work
  • Loading branch information
eps1lon committed Mar 8, 2021
1 parent e7d2a55 commit ca15606
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion scripts/rollup/build-all-release-channels.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ if (process.env.CIRCLE_NODE_TOTAL) {
// will have already removed conflicting files.
//
// In CI, merging is handled automatically by CircleCI's workspace feature.
spawnSync('rsync', ['-ar', experimentalDir + '/', stableDir + '/']);
mergeDirsSync(experimentalDir + '/', stableDir + '/');

// Now restore the combined directory back to its original name
// TODO: Currently storing artifacts as `./build2` so that it doesn't conflict
Expand Down Expand Up @@ -186,3 +186,23 @@ function updateTheReactVersionThatDevToolsReads(version) {
`export default '${version}';\n`
);
}

/**
* cross-platform alternative to `rsync -ar`
* @param {string} source
* @param {string} destination
*/
function mergeDirsSync(source, destination) {
for (const sourceFileBaseName of fs.readdirSync(source)) {
const sourceFileName = path.join(source, sourceFileBaseName);
const targetFileName = path.join(destination, sourceFileBaseName);

const sourceFile = fs.statSync(sourceFileName);
if (sourceFile.isDirectory()) {
fse.ensureDirSync(targetFileName);
mergeDirsSync(sourceFileName, targetFileName);
} else {
fs.copyFileSync(sourceFileName, targetFileName);
}
}
}

0 comments on commit ca15606

Please sign in to comment.