file-diffy

1.0.2 • Public • Published

file-diffy

The need

We were using a mono-repo on our clientside app (using lerna.js).
While we had an affective way of running only packages that have been changed, each package had in it some files that were mobile only, and some files that were web only, that were in the relevant directories i.e package-a/web/file.js and package-a/mobile/file.js.

Our CI (Teamcity) was triggering all the mobile and web tests on every change in a package. We thought this is wasteful since if I only touched files that were affecting web/mobile.

The solution

Initially we created a bash script, that got a bit dirty and complicated with grep's and sed's. So I decided to create a simple node CLI tool that will accept a bunch of file names from the incoming Pull Request (these file names should be available either in your CI or using a simple git command), and output only the "types" that were changed, based on whatever types you have.
For example ['web', 'mobile] or ['common', 'docs'] etc.

How we use it

In Teamcity, we added a step before running the mobile/web tests, which runs the CLI tool, and then skips the next steps depending on the output. Check out the example in example.sh.

Quick Usage

input:

npm i -g file-diffy

file-diffy run --tokens web mobile docs --files="packages/package/web/index.js packages/src/mobile.index.ts packages/common/stuff.js"

output:

web mobile other # Notice that 'other' is also there, because a file not belonging to any token was found

How it works

file-diffy is based around the Regex command [^ ]*[\/|\.| ]<token>[\/|\.][^ ]*
Meaning it will generally search for directory paths and file names containing your token. Its also designed not to catch paths like package/shweb/file.js when searching for web for example.
It will also create a category called other incase you're interested to know that some files didn't belong to any token.

Options

--tokens space separated tokens which you want to run file-diffy on
--files space separated list of file names
--outputType will let you choose between json, txt, log, if json/text is chosen, a output.txt or output.json will be created

Readme

Keywords

none

Package Sidebar

Install

npm i file-diffy

Weekly Downloads

3

Version

1.0.2

License

ISC

Unpacked Size

15.9 kB

Total Files

6

Last publish

Collaborators

  • oreporan