Eliminate dependency on ‘paste’ and ‘parallel’

This commit is contained in:
Caleb Maclennan 2020-12-16 11:19:06 +03:00 committed by Vladimir Zhelezov
parent bb8118c771
commit 4a32ebf8b5
2 changed files with 19 additions and 13 deletions

View File

@ -1,30 +1,34 @@
# Setting the number of job runners like this in the makefile only works in
.PHONY: command-options clean # GNU Make 4.3 or later. Older versions will require that either an env
# variable be set before running or command line flag be passed at runtime to
# get parallel jobs.
MAKEFLAGS += --jobs=$(shell nproc 2>/dev/null || printf 8)
all: hledger-completion.bash all: hledger-completion.bash
hledger-completion.bash: hledger-completion.bash.m4 commands-list.txt query-filters.txt generic-options.txt command-options COMMANDS := $(sort $(shell hledger | ./output-commands.sh | grep -v ^hledger | sort -u) ui web api)
CMDOPTFILES := $(foreach CMD,$(COMMANDS),options-$(CMD).txt)
hledger-completion.bash: hledger-completion.bash.m4 commands.txt commands-list.txt query-filters.txt generic-options.txt $(CMDOPTFILES)
m4 hledger-completion.bash.m4 > $@ m4 hledger-completion.bash.m4 > $@
generic-options.txt: generic-options.txt:
hledger -h | ./output-options.sh | sort -u > $@ hledger -h | ./output-options.sh | sort -u > $@
commands.txt: commands.txt:
hledger | ./output-commands.sh | grep -v ^hledger | sort -u > $@ printf "%s\n" $(COMMANDS) > $@
echo ui >> $@
echo web >> $@
echo api >> $@
commands-list.txt: commands.txt commands-list.txt:
paste -sd, $^ | tr -d '\n' > $@ printf "%s," $(COMMANDS) | sed 's/,$$//' > $@
#query-filters.txt: #query-filters.txt:
# The query filters are hard to extract! # The query filters are hard to extract!
# hledger help --cat hledger | sed -n '/^QUERIES/,/^[A-Z]/p' # hledger help --cat hledger | sed -n '/^QUERIES/,/^[A-Z]/p'
command-options: commands.txt options-%.txt:
parallel -j8 'hledger {} -h | ./output-options.sh {} | sort -u > options-{}.txt' < commands.txt hledger $* -h | ./output-options.sh $* | sort -u > $@
.PHONY: clean
clean: clean:
rm -f commands*.txt generic-options.txt options-*.txt rm -f commands*.txt generic-options.txt options-*.txt
rm -f hledger-completion.bash rm -f hledger-completion.bash

View File

@ -69,8 +69,10 @@ cd shell-completion/
make make
``` ```
Hint: GNU make, GNU m4, and GNU parallel must be installed to call `make`. Hint: GNU make and GNU m4 must be installed to call `make`.
The first two usually are. These are present on most systems anyway.
Additionally the build will run a lot faster with parallell jobs.
Use `make -j$(nproc)` for best effect.
The generated completion script must be installed. The package maintainer for The generated completion script must be installed. The package maintainer for
your distribution should be responsible for this. your distribution should be responsible for this.