cespare / reflex

Run a command when files change
MIT License
3.35k stars 135 forks source link

Addition of path substitution #61

Open Khabi opened 5 years ago

Khabi commented 5 years ago

In some cases when using reflex it makes sense to allow the path to the file changed to be used in the command.

A real life example is something like this: -g 'pkg/auth/auth.proto' -- /go/bin/protoc -I pkg/ -I pkg/auth/ -I /go/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/ -I /go/include/ --grpc-gateway_out=logtostderr=true:pkg/auth/ {}

In order for that command to run I need that path to the file pkg/auth/auth.proto and the path pkg/auth/. Since not all the .proto files live in the same path, I'd have to duplicate that command for every glob that isn't in /pkg/auth/

This allows you to use || by default as a placeholder for the path to the changed file. This lets you replace the above with the following and eliminate any duplication.

-g '*/*/*.proto' -- /go/bin/protoc -I pkg/ -I ||-I /go/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/ -I /go/include/ --grpc-gateway_out=logtostderr=true:|| {}