aboutsummaryrefslogtreecommitdiff
path: root/build/scripts
diff options
context:
space:
mode:
authorKegsay <kegan@matrix.org>2020-05-21 14:40:13 +0100
committerGitHub <noreply@github.com>2020-05-21 14:40:13 +0100
commit24d8df664c21fa8bd68d80b5585a496e264c410a (patch)
tree0a176d6dfd7f81522c5739b53313366b552b0ce1 /build/scripts
parent3fdb045116c9cd2f2a3badfebec0645d0381bacb (diff)
Fix #897 and shuffle directory around (#1054)
* Fix #897 and shuffle directory around * Update find-lint * goimports Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Diffstat (limited to 'build/scripts')
-rw-r--r--build/scripts/README.md7
-rwxr-xr-xbuild/scripts/build-test-lint.sh16
-rwxr-xr-xbuild/scripts/find-lint.sh43
-rwxr-xr-xbuild/scripts/install-local-kafka.sh25
4 files changed, 91 insertions, 0 deletions
diff --git a/build/scripts/README.md b/build/scripts/README.md
new file mode 100644
index 00000000..4d855ba4
--- /dev/null
+++ b/build/scripts/README.md
@@ -0,0 +1,7 @@
+# Dev Scripts
+
+These are a collection of scripts that should be helpful for those developing
+on dendrite.
+
+See `find-lint.sh` for environment variables that control linter resource
+usage.
diff --git a/build/scripts/build-test-lint.sh b/build/scripts/build-test-lint.sh
new file mode 100755
index 00000000..d2b2b4b1
--- /dev/null
+++ b/build/scripts/build-test-lint.sh
@@ -0,0 +1,16 @@
+#! /bin/bash
+
+# Builds, tests and lints dendrite, and should be run before pushing commits
+
+set -eu
+
+# Check that all the packages can build.
+# When `go build` is given multiple packages it won't output anything, and just
+# checks that everything builds.
+echo "Checking that it builds..."
+go build ./cmd/...
+
+./scripts/find-lint.sh
+
+echo "Testing..."
+go test ./...
diff --git a/build/scripts/find-lint.sh b/build/scripts/find-lint.sh
new file mode 100755
index 00000000..7e37e154
--- /dev/null
+++ b/build/scripts/find-lint.sh
@@ -0,0 +1,43 @@
+#! /bin/bash
+
+# Runs the linters against dendrite
+
+# The linters can take a lot of resources and are slow, so they can be
+# configured using the following environment variables:
+#
+# - `DENDRITE_LINT_CONCURRENCY` - number of concurrent linters to run,
+# golangci-lint defaults this to NumCPU
+# - `GOGC` - how often to perform garbage collection during golangci-lint runs.
+# Essentially a ratio of memory/speed. See https://github.com/golangci/golangci-lint#memory-usage-of-golangci-lint
+# for more info.
+
+
+set -eux
+
+cd `dirname $0`/../..
+
+args=""
+if [ ${1:-""} = "fast" ]
+then args="--fast"
+fi
+
+echo "Installing golangci-lint..."
+
+# Make a backup of go.{mod,sum} first
+# TODO: Once go 1.13 is out, use go get's -mod=readonly option
+# https://github.com/golang/go/issues/30667
+cp go.mod go.mod.bak && cp go.sum go.sum.bak
+go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.19.1
+
+# Run linting
+echo "Looking for lint..."
+
+# Capture exit code to ensure go.{mod,sum} is restored before exiting
+exit_code=0
+
+golangci-lint run $args || exit_code=1
+
+# Restore go.{mod,sum}
+mv go.mod.bak go.mod && mv go.sum.bak go.sum
+
+exit $exit_code
diff --git a/build/scripts/install-local-kafka.sh b/build/scripts/install-local-kafka.sh
new file mode 100755
index 00000000..2282e4dc
--- /dev/null
+++ b/build/scripts/install-local-kafka.sh
@@ -0,0 +1,25 @@
+#! /bin/bash
+
+# Downloads, installs and runs a kafka instance
+
+set -eu
+
+cd `dirname $0`/..
+
+mkdir -p .downloads
+
+KAFKA_URL=http://archive.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz
+
+# Only download the kafka if it isn't already downloaded.
+test -f .downloads/kafka.tgz || wget $KAFKA_URL -O .downloads/kafka.tgz
+# Unpack the kafka over the top of any existing installation
+mkdir -p kafka && tar xzf .downloads/kafka.tgz -C kafka --strip-components 1
+# Start the zookeeper running in the background.
+# By default the zookeeper listens on localhost:2181
+kafka/bin/zookeeper-server-start.sh -daemon kafka/config/zookeeper.properties
+# Enable topic deletion so that the integration tests can create a fresh topic
+# for each test run.
+echo -e "\n\ndelete.topic.enable=true" >> kafka/config/server.properties
+# Start the kafka server running in the background.
+# By default the kafka listens on localhost:9092
+kafka/bin/kafka-server-start.sh -daemon kafka/config/server.properties