$ cmake ..
$ make
$ sudo make install
+
+## Contributing
+
+### Code Style
+
+You would want to setup your editor to make use of uncrustify.cfg and .jsbeautifyrc configuration files located in the root of this repository.
+
+If for some reason you are unwilling or unable to do so, there is a shell script which you could run either directly or via docker-compose:
+
+ $ ./code_style.sh
+ or
+ $ docker-compose build --pull
+ $ docker-compose run --rm code_style
--- /dev/null
+#!/bin/sh
+
+set -euo pipefail
+
+[ -z "${1:-}" ] || cd "$1"
+
+echo '=================='
+echo '=== uncrustify ==='
+echo '=================='
+echo ''
+
+find \
+ cli \
+ daemon \
+ gtk \
+ libtransmission \
+ utils \
+ \( -name '*.c' -o -name '*.h' \) \
+ ! \( -name 'ConvertUTF.*' -o -name 'jsonsl.*' -o -name 'wildmat.c' \) \
+ -print0 |
+xargs \
+ -0 \
+ uncrustify \
+ --replace \
+ --no-backup \
+ -c uncrustify.cfg
+
+find \
+ qt \
+ \( -name '*.cc' -o -name '*.h' \) \
+ -print0 |
+xargs \
+ -0 \
+ uncrustify \
+ --replace \
+ --no-backup \
+ -l CPP \
+ -c uncrustify.cfg
+
+echo ''
+echo '================================================================='
+echo '=== const placement (until uncrustify supports it, hopefully) ==='
+echo '================================================================='
+echo ''
+
+find \
+ cli \
+ daemon \
+ gtk \
+ libtransmission \
+ qt \
+ utils \
+ \( -name '*.c' -o -name '*.cc' -o -name '*.h' \) \
+ ! \( -name 'ConvertUTF.*' -o -name 'jsonsl.*' -o -name 'wildmat.c' \) \
+ -print0 |
+xargs \
+ -0 \
+ -n1 \
+ perl \
+ -pi \
+ -e 'BEGIN { print STDOUT "Processing: ${ARGV[0]}\n" } s/((?:^|[(,;]|\bstatic\s+)\s*)\b(const)\b(?!\s+\w+\s*\[)/\1>\2</g'
+
+echo ''
+echo '==================='
+echo '=== js-beautify ==='
+echo '==================='
+echo ''
+
+find \
+ web \
+ ! -path '*/jquery/*' \
+ -name '*.js' \
+ -print0 |
+xargs \
+ -0 \
+ js-beautify \
+ --config .jsbeautifyrc \
+ --replace
--- /dev/null
+version: '3'
+
+services:
+ code_style:
+ build: docker/code_style
+ volumes:
+ - .:/src
+ - ./code_style.sh:/code_style.sh:ro
+ command: ["/bin/sh", "/code_style.sh", "/src"]