unified-engine icon indicating copy to clipboard operation
unified-engine copied to clipboard

Option to report only changed files

Open StarpTech opened this issue 7 years ago • 10 comments

As titled. The quiet options will print also untouched files.

StarpTech avatar Aug 28 '18 08:08 StarpTech

Closest to this is the --watch argument on the CLI (unified-args)

This is pretty interesting, but not doable easily. E.g., what is a “change”?

  • Is that a change in the contents of a file?
  • Or a different file path (file.path !== file.history[0])
  • Should we start supporting stats, and track changes to mode, mtime, and the like?

I think this would be roughly related to GH-22 too.

wooorm avatar Aug 28 '18 08:08 wooorm

Yes, it's a change in the original file when I use output: true

StarpTech avatar Aug 28 '18 09:08 StarpTech

Why it should be related to a cache?

StarpTech avatar Aug 28 '18 17:08 StarpTech

It doesn’t have to be, but my above three points are also what’s needed for caching. Albeit that “changed” files, as described above, relate to comparing a file before processing to after processing, whereas caching compares them between processes.

wooorm avatar Aug 28 '18 17:08 wooorm

OK I got but for clarification my issue is only about to list which files are touched. Touch means as soon as I change the original content of the file (option: output).

StarpTech avatar Aug 28 '18 17:08 StarpTech

Wait, are you talking about written files, instead of “changed” files?

wooorm avatar Aug 28 '18 17:08 wooorm

No, I'm talking about updated files. List all written files is already supported but it doesn't help because it shows all found files based on the pattern.

StarpTech avatar Aug 28 '18 17:08 StarpTech

Well, that’s hard. And then we need a definition of changed, and my proposal in my first comment is that I believe?

wooorm avatar Aug 28 '18 17:08 wooorm

Yes. My proposal: changed means when source content != content (after processing). It doesn't matter if the content is saved to a different location when the content was changed.

StarpTech avatar Aug 28 '18 17:08 StarpTech

First what we need to figure out is how to check if file.contents (string or buffer) equals a file on disk. I’m thinking node-stream-equal could work, if file.contents was made into a stream. Any other thoughts?

Next steps would be to wrap that in a vfile-matches-file-on-disk utility (which obviously needs a better name). And then to filter the files here using that utility if a flag is set.

wooorm avatar Apr 23 '19 13:04 wooorm