# Problem
The Wikimedia Portals repo is largely a Node application that produces static HTML/CSS/JS, so cross-OS compatibility shouldn't be an issue.
However, there are a few places where unix-centric shortcuts are used instead of employing the cross-OS Node functions
These include basically all usage of `exec()`:
- [[ https://gerrit.wikimedia.org/r/plugins/gitiles/wikimedia/portals/+/refs/heads/master/data/site-stats.js#113 | site-stats.js ]]
```
function garbageCollect() {
exec( 'find cache -mtime +' + ( DAYS + 2 ) + ' -delete', function ( error ) {
if ( error ) {
console.error( 'Error deleting old cached stats', error ); // eslint-disable-line no-console
}
} );
}
```
- [[ https://gerrit.wikimedia.org/r/plugins/gitiles/wikimedia/portals/+/refs/heads/master/dev/wikipedia.org/controller.js#117 | controller.js ]]
```
if ( fs.existsSync( translationPath ) ) {
exec( 'find ' + translationPath + ' -mindepth 1 -delete' );
} else {
fs.mkdirSync( translationPath );
}
```
- The double ampersands and backslashed paths in [[ https://gerrit.wikimedia.org/r/plugins/gitiles/wikimedia/portals/+/refs/heads/master/package.json#3 | package.json ]] may also be problematic.
```
"scripts": {
"start": "gulp update-stats && gulp watch --portal=wikipedia.org & npm run dev-server",
"dev-server": "es-dev-server --app-index ./dev/wikipedia.org/index.html --preserve-symlinks=true --watch --open",
"test": "gulp -- lint",
"build-all-portals": "gulp -- lint && gulp -- update-stats && gulp --portal=all -- fetch-meta && gulp --portal=wikipedia.org -- default"
},
```
- `/dev/wikipedia.org/portal` is a symlink, which is a UNIX specific construct.