Script to lint for copypasta'd file paths that should be generic #123
I think the requirements for this are:
- This should be a script that can be run on a directory of .md files
- If the script sees a line containing
file://, it should check for the text following that to be/projects/ - If the text following
file://is anything BUT/projects/, print to stderr the filename, line number, and line content (but continue processing the rest of that file and other following files) - If any lines containing
file://not followed by/projects/have been found, the whole script should exit with a nonzero exit status so that we can hook this into travis and have travis fail if we forget this
Is that what you had in mind, @steveklabnik? I'm thinking about tweeting/getting this in TWiR for some help :)
Here's an example (source):
If there's a directory src that contains a file modules.md that contains this text:
$ cargo build
Compiling modules v0.1.0 (file:///home/steve/tmp/modules)
src/foo.rs:1:1: 2:2 warning: function is never used: `it_works`,
#[warn(dead_code)] on by default
src/foo.rs:1 fn it_works() {
And I ran whatever-this-script-is src, I would expect to see:
Found lines that need fixed:
modules.md:2 Compiling modules v0.1.0 (file:///home/steve/tmp/modules)
and have the command exit with a nonzero status.
Also, do we care if this is implemented in bash, rust, ruby, perl, etc etc? I don't really, it should be easy enough to read/modify in whatever.
It would be nice if it was in Rust so that we don't introduce Yet Another Dependency.
Should it only scan .md files regardless if other files are present?
Do you want the program in a new repo or part of this repo?
Should it only scan .md files regardless if other files are present?
Yep!
Do you want the program in a new repo or part of this repo?
In this repo please :)
Yinz are watching the TWiR repo like hawks! :)
Hey @ereichert @bronzdoc !
Should it only scan .md files regardless if other files are present?
Yes, because they're the source text, other things are generated from them.
Do you want the program in a new repo or part of this repo?
In this one would be cool!
I'm not going to "reserve" this for anyone-- please don't worry about duplicating work, especially if you're doing this for learning!
We also might have more little things like this in the future!
We also might have more little things like this in the future!
Agreed. There's probably a lot of little things that would be cool to lint.
One thing we do when showing errors is show
file:///projects/bindingsin Cargo's output. It'd be nice to somehow catch that this is always the text we use, as it's really easy to copy/paste something and forget to change it.