Coder1
Coder1

Reputation: 13321

Set and check for empty var inside a target

I created a make target which fetches a list of files from git ls-files and passes them to phpcs, a coding standards utility.

The problem is that I don't want to run it if no files are returned. (because it then tries to analyze the entire codebase)

phpcs:
    FS=$$(git ls-files -om --exclude-standard '*.php'); \
    vendor/bin/phpcs --encoding=utf-8 --extensions=php $$FS

How would I exit if $FS (which is set in the first line) is empty?

I'm running the default gnu-make which comes with OSX. (3.8.1)

Upvotes: 0

Views: 32

Answers (1)

MadScientist
MadScientist

Reputation: 100836

This isn't really a makefile question. You are using shell commands to perform these operations so you have to come up with a shell solution for your problem: make doesn't enter into it.

You can do something like this:

phpcs:
        FS=$$(git ls-files -om --exclude-standard '*.php'); \
        test -z "$$FS" || vendor/bin/phpcs --encoding=utf-8 --extensions=php $$FS

PS. There's no such release as GNU make 3.8.1. You mean, I assume, GNU make 3.81.

Upvotes: 2

Related Questions