aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2023-01-15 23:27:29 +0100
committerRobin Jarry <robin@jarry.cc>2023-01-26 00:20:48 +0100
commit98e32d2ff22cba1e60caf6a252eee0d38f26f736 (patch)
tree249564b1942d0a42225243a8a598ec48bc896c6b /Makefile
parent3191ee171c435a43912264b131340af66fea8112 (diff)
downloadaerc-98e32d2ff22cba1e60caf6a252eee0d38f26f736.tar.gz
filters: rewrite colorize in c
Since its introduction, we had multiple issues with the colorize awk script with regard to non-GNU awk compatibility. Also, this script is standalone and the color theme must be hard coded into it. Reading from an external configuration file (aerc's styleset) from a non-GNU awk is close to impossible (and even far from trivial with GNU awk). Rewrite the builtin colorize filter in C to allow getting the color theme from aerc's active styleset. The theme is configured using the existing styleset syntax and attributes under a separate [viewer] section (see examples and man page). Export the active styleset file path to AERC_STYLESET env var when invoking the filter command so that colorize can access it and use it. I have tested compilation (with clang-analyzer and gcc -fanalyzer) and basic operation on FreeBSD, Fedora (glibc) and Alpine (muslibc). More tests would probably be required on MacOSX and older Linux distros. I also added test vectors to give some confidence that this works as expected. The execution with these vectors passed valgrind --leak-check=full without errors. NB: the default theme has changed to be more minimal. Sample stylesets have more colorful examples. The awk -v theme=xxx option is no longer supported. usage: colorize [-h] [-s FILE] [-f FILE] options: -h show this help message -s FILE use styleset file (default $AERC_STYLESET) -f FILE read from filename (default stdin) Signed-off-by: Robin Jarry <robin@jarry.cc> Tested-by: Bence Ferdinandy <bence@ferdinandy.com> Acked-by: Moritz Poldrack <moritz@poldrack.dev>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile13
1 files changed, 8 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index fcb80a46..3ac53e0a 100644
--- a/Makefile
+++ b/Makefile
@@ -39,7 +39,7 @@ DOCS := \
aerc-templates.7 \
aerc-stylesets.7
-all: aerc wrap $(DOCS)
+all: aerc wrap colorize $(DOCS)
build_cmd:=$(GO) build $(BUILD_OPTS) $(GOFLAGS) -ldflags "$(GO_LDFLAGS)" -o aerc
@@ -60,6 +60,9 @@ CFLAGS?=-O2 -g
wrap: filters/wrap.c
$(CC) $(CFLAGS) $(LDFLAGS) -o wrap filters/wrap.c
+colorize: filters/colorize.c
+ $(CC) $(CFLAGS) $(LDFLAGS) -o colorize filters/colorize.c
+
.PHONY: dev
dev:
$(MAKE) aerc BUILD_OPTS="-trimpath -race"
@@ -86,7 +89,7 @@ vulncheck:
$(GO) run golang.org/x/vuln/cmd/govulncheck@latest ./...
.PHONY: tests
-tests: wrap
+tests: wrap colorize
$(GO) test $(GOFLAGS) ./...
filters/test.sh
@@ -113,9 +116,9 @@ doc: $(DOCS)
RM?=rm -f
clean:
- $(RM) $(DOCS) aerc wrap
+ $(RM) $(DOCS) aerc wrap colorize
-install: $(DOCS) aerc wrap
+install: $(DOCS) aerc wrap colorize
mkdir -m755 -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man1 $(DESTDIR)$(MANDIR)/man5 $(DESTDIR)$(MANDIR)/man7 \
$(DESTDIR)$(SHAREDIR) $(DESTDIR)$(SHAREDIR)/filters $(DESTDIR)$(SHAREDIR)/templates $(DESTDIR)$(SHAREDIR)/stylesets \
$(DESTDIR)$(PREFIX)/share/applications $(DESTDIR)$(LIBEXECDIR)/filters
@@ -137,12 +140,12 @@ install: $(DOCS) aerc wrap
install -m644 config/aerc.conf $(DESTDIR)$(SHAREDIR)/aerc.conf
install -m644 config/binds.conf $(DESTDIR)$(SHAREDIR)/binds.conf
install -m755 filters/calendar $(DESTDIR)$(LIBEXECDIR)/filters/calendar
- install -m755 filters/colorize $(DESTDIR)$(LIBEXECDIR)/filters/colorize
install -m755 filters/hldiff $(DESTDIR)$(LIBEXECDIR)/filters/hldiff
install -m755 filters/html $(DESTDIR)$(LIBEXECDIR)/filters/html
install -m755 filters/html-unsafe $(DESTDIR)$(LIBEXECDIR)/filters/html-unsafe
install -m755 filters/plaintext $(DESTDIR)$(LIBEXECDIR)/filters/plaintext
install -m755 filters/show-ics-details.py $(DESTDIR)$(LIBEXECDIR)/filters/show-ics-details.py
+ install -m755 colorize $(DESTDIR)$(LIBEXECDIR)/filters/colorize
install -m755 wrap $(DESTDIR)$(LIBEXECDIR)/filters/wrap
install -m644 templates/new_message $(DESTDIR)$(SHAREDIR)/templates/new_message
install -m644 templates/quoted_reply $(DESTDIR)$(SHAREDIR)/templates/quoted_reply