• Vihang Mehta's avatar
    Make sure eslint yarn installs don't run in parallel · ea93ab57
    Vihang Mehta authored
    Summary:
    Previously, we were running the `eslint_ui.sh` helper script as part of the version check even if we didn't have any files to lint with `eslint`.
    To speed it up, I removed the version check.
    
    However arcanist runs linters in parallel, which now meant that we had multiple `yarn install`s running concurrently.
    These would stomp on the contents of `node_modules` and the `eslint` binary causing some lint runs to emit no output which in turn cause `arc` to fatal.
    
    Instead we hook into `willLintPaths` and run a setup script once if there are any paths before calling the parent class's `willLintPaths` which will actually create the futures to run the linter.
    
    Test Plan:
    Before this change
    - edit multiple `ts` files
    - `rm -rf src/ui/node_modules; arc lint --trace`
    - notice failure
    
    After this change
    - edit multiple `ts` files
    - `rm -rf src/ui/node_modules; arc lint --trace`
    - notice `eslint_setup.sh` being run first
    - notice `eslint_ui.sh` being run in...
    ea93ab57