diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..30bcfa4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+.build/
diff --git a/README.md b/README.md
index 6c334a9..3a9f699 100644
--- a/README.md
+++ b/README.md
@@ -6,24 +6,100 @@ Collection of Dockerfiles created to build & pack various tools.
-- [1. Tools](#1-tools)
- - [1.1. Bandwhich](#11-bandwhich)
+- [1. How to use](#1-how-to-use)
+ - [1.1. CLI](#11-cli)
+- [2. Tools](#2-tools)
+ - [2.1. Bandwhich](#21-bandwhich)
+ - [2.2. auto-editor](#22-auto-editor)
+ - [2.3. synapse-compress-state](#23-synapse-compress-state)
-# 1. Tools
+# 1. How to use
-## 1.1. Bandwhich
+Run the build-script `scripts/build.sh` with the path to the tool you want to build.
-### 1.1.1. Source
+
+
+The docker-image will be tagged with `default` and the detected version/commit-hash.
+
+You can add more tags or change the existing tag-naming-scheme using the environment-variable `TAG`.
+
+
+
+## 1.1. CLI
+
+`scripts/build.sh [extra-args for docker build ..]`
+
+
+
+### 1.1.1. Example
+`scripts/build.sh tools/bandwhich/`
+
+
+
+### 1.1.2. Environment-Variables
+
+Variable | Description | Default
+-|-|-
+`TAG` | Tag for Docker-building | `TAGPREFIX` + `NAME`
+`TAGPREFIX` | Set a prefix to the default-tag | -
+`NAME` | Change the name used in the tag | *FolderName*
+
+
+
+# 2. Tools
+
+## 2.1. Bandwhich
+
+### 2.1.1. Source
>This is a CLI utility for displaying current network utilization by process, connection and remote IP/hostname
https://github.com/imsnif/bandwhich
-### 1.1.2. Example
+### 2.1.2. Example
```
docker run -it --net host bandwhich -i eth0
```
+
+
+
+## 2.2. auto-editor
+
+### 2.2.1. Source
+>Auto-Editor is a command line application for automatically editing video and audio by analyzing a variety of methods, most notably audio loudness.
+
+https://github.com/WyattBlue/auto-editor
+
+
+
+### 2.2.2. Example
+Speed-up silent part of videos:
+```
+docker run -v /home/ruakij/Videos:/video auto-build --no-open --silent-speed 8 --margin 0.2sec "input.webm" -o edited.mp4
+```
+
+
+
+### 2.2.3. Comment
+TODO: Unfortunately the tool requires ffmpeg which is a huge tool and blows up the size of the image. I have to find a way to use a minimized version of it.
+
+
+
+## 2.3. synapse-compress-state
+Includes synapse_auto_compressor
+
+### 2.3.1. Source
+>This workspace contains experimental tools that attempt to reduce the number of rows in the state_groups_state table inside of a Synapse Postgresql database.
+
+https://github.com/matrix-org/rust-synapse-compress-state
+
+
+
+### 2.3.2. Example
+```
+docker run --net container:synapse ghcr.io/ruakij/dockerbuilds/synapse-compress-state:latest synapse_auto_compressor -p postgresql://synapse:synapse@127.0.0.1/synapse -c 500 -n 100
+```
diff --git a/scripts/build.sh b/scripts/build.sh
index 5eb74c5..dc55d30 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -1,9 +1,21 @@
-#!/bin/sh
+#!/bin/bash
scriptPath_file=$(dirname "${BASH_SOURCE[0]}")
scriptPath_folder=$(realpath "${scriptPath_file}")
utils_path="${scriptPath_folder}/utils"
+WORKDIR=${1:-$PWD}
+WORKDIR=$(realpath "$WORKDIR")
+
+# -- VARIABLES --
+# Store original path
+ORIGINALDIR=$PWD
+
+# Get args without path
+EXTRA_ARGS="${@:2}"
+
+
+
# Call prepare
printf "# PREPARE\n"
source ${utils_path}/prepare.sh
@@ -12,3 +24,7 @@ source ${utils_path}/prepare.sh
printf "# BUILD\n"
build_type=${BUILD:-"ownarch"}
source ${utils_path}/build-${build_type}.sh
+
+
+# Switch back to original path
+cd $ORIGINALDIR
diff --git a/scripts/utils/build-multiarch.sh b/scripts/utils/build-multiarch.sh
index 62520b5..56794c4 100755
--- a/scripts/utils/build-multiarch.sh
+++ b/scripts/utils/build-multiarch.sh
@@ -1,10 +1,9 @@
#!/bin/bash
-TAG=${TAG:-"${TAG_PREFIX}${NAME}"}
PLATFORM=${PLATFORM:-"linux/amd64,linux/arm64/v8,linux/arm/v7"}
-EXTRA_ARGS=${EXTRA_ARGS:-"$@"}
docker buildx build \
--platform $PLATFORM \
+--tag $TAG:latest \
--tag "${TAG}:${VERSION}" \
$EXTRA_ARGS \
-.
+$WORKDIR
diff --git a/scripts/utils/build-ownarch.sh b/scripts/utils/build-ownarch.sh
index f45d297..1f43303 100755
--- a/scripts/utils/build-ownarch.sh
+++ b/scripts/utils/build-ownarch.sh
@@ -1,8 +1,7 @@
#!/bin/bash
-TAG=${TAG:-"${TAG_PREFIX}${NAME}"}
-EXTRA_ARGS=${EXTRA_ARGS:-"$@"}
docker build \
+--tag $TAG:latest \
--tag $TAG:$VERSION \
$EXTRA_ARGS \
-.
+"$WORKDIR"
diff --git a/scripts/utils/prepare.sh b/scripts/utils/prepare.sh
index 16668ca..8159b74 100755
--- a/scripts/utils/prepare.sh
+++ b/scripts/utils/prepare.sh
@@ -1,24 +1,33 @@
-#!/bin/sh
+#!/bin/bash
# --- VARIABLES ---
# Load variables
-source $PWD/info.env
+source $WORKDIR/info.env
# Check if certain vars are overwritten, set them if missing
if [ "${NAME}" = "" ]; then
- NAME="$(basename $PWD)"
+ NAME="$(basename $WORKDIR)"
fi
export NAME
printf "Name: ${NAME}\n"
+repositoryFolder="$WORKDIR/.build/repository"
# --- SOURCES ---
-alias git="git -C .build/repository"
# Get sources locally
-if ! [ -d .build/repository ]; then
- git clone "${GIT_REPOSITORY}" .build/repository
-else
- git checkout - # Checkout previous branch in case GIT_CHECKOUT was different
+if ! [ -d "$repositoryFolder" ]; then
+ git clone "${GIT_REPOSITORY}" "$repositoryFolder"
+ cloned=True
+fi
+
+# Change into repository
+cd "$repositoryFolder"
+
+if [ "$cloned" != True ]; then
+ # Checkout default-branch in case GIT_CHECKOUT was different
+ defaultBranch=$(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')
+ git checkout "${defaultBranch}"
+
git pull # Get changes
fi
@@ -42,5 +51,5 @@ fi
export VERSION
printf "Version: ${VERSION}\n"
-TAG=${TAG:-"${TAG_PREFIX}${NAME}"}
+TAG=${TAG:-"${TAGPREFIX}${NAME}"}
printf "> ${TAG}\n"
diff --git a/tools/auto-editor/Dockerfile b/tools/auto-editor/Dockerfile
new file mode 100644
index 0000000..d1efce1
--- /dev/null
+++ b/tools/auto-editor/Dockerfile
@@ -0,0 +1,24 @@
+# ---- Base ----
+FROM python:slim AS base
+#ENV PYTHONDONTWRITEBYTECODE=1
+WORKDIR /app
+# Install packages
+RUN apt update && apt install -y ffmpeg && rm -rf /var/lib/apt/lists/*
+#RUN pip install --no-compile --no-cache-dir ae-ffmpeg
+#COPY .build/repository/ae-ffmpeg/ae_ffmpeg/Darwin-x86_64/* /usr/bin/
+
+# ---- Build ----
+FROM base AS build
+ENV PYTHONDONTWRITEBYTECODE=1
+# Copy sources
+ADD .build/repository/auto_editor auto_editor
+ADD .build/repository/setup.py .
+ADD .build/repository/README.md .
+# Run install
+RUN pip install --no-compile --no-cache-dir -e .
+
+# ---- Release ----
+FROM build AS release
+WORKDIR /videos
+
+ENTRYPOINT ["auto-editor"]
diff --git a/tools/auto-editor/info.env b/tools/auto-editor/info.env
new file mode 100644
index 0000000..fab8c9d
--- /dev/null
+++ b/tools/auto-editor/info.env
@@ -0,0 +1,2 @@
+GIT_REPOSITORY=https://github.com/WyattBlue/auto-editor
+TAG=latest-tag
diff --git a/tools/synapse-compress-state/Dockerfile b/tools/synapse-compress-state/Dockerfile
new file mode 100644
index 0000000..765a6b4
--- /dev/null
+++ b/tools/synapse-compress-state/Dockerfile
@@ -0,0 +1,32 @@
+# ---- Base ----
+FROM alpine AS base
+WORKDIR /app
+# Install dependencies
+RUN apk add --no-cache libgcc libssl1.1 libc6-compat
+
+# ---- Build ----
+FROM rust:alpine3.16 AS build
+WORKDIR /build
+# Install packages
+RUN apk add python3 musl-dev pkgconfig openssl-dev make
+# Set build-flags
+ENV RUSTFLAGS="-C target-feature=-crt-static"
+# Copy sources
+ADD .build/repository/ .
+
+FROM build AS build-synapse_compress-state
+# Update dependencies and Compile
+RUN cargo update && cargo build --release
+
+FROM build AS build-synapse_auto_compressor
+# Update dependencies and Compile
+RUN cd synapse_auto_compressor/ && cargo update && cargo build --release
+
+
+# ---- Release ----
+FROM base AS release
+## Copy build-target
+COPY --from=build-synapse_compress-state /build/target/release/synapse_compress_state .
+COPY --from=build-synapse_auto_compressor /build/target/release/synapse_auto_compressor .
+
+ENTRYPOINT ["./synapse_compress_state"]
diff --git a/tools/synapse-compress-state/info.env b/tools/synapse-compress-state/info.env
new file mode 100644
index 0000000..e15b00c
--- /dev/null
+++ b/tools/synapse-compress-state/info.env
@@ -0,0 +1 @@
+GIT_REPOSITORY=https://github.com/matrix-org/rust-synapse-compress-state