Replace Makefile with brewkit, replace .env file with config in docker-compose, add instructions in README

This commit is contained in:
2025-04-26 11:29:51 +03:00
parent 4c205b528f
commit c9b3cf9157
12 changed files with 185 additions and 15 deletions
-2
View File
@@ -1,2 +0,0 @@
TELEGRAM_BOT_TOKEN=test
OWNER_CHAT_ID=123
+3 -2
View File
@@ -1,2 +1,3 @@
.idea/
.env
.idea
vendor
docker-compose.override.yml
-9
View File
@@ -1,9 +0,0 @@
all: build
.PHONY: build
build: modules
CGO_ENABLED=0 go build -o ./bin/anon3anon ./cmd/anon3anon
.PHONY: modules
modules:
go mod tidy
+49
View File
@@ -1,3 +1,52 @@
# anon3anon
Telegram bot for anonymous messages 🎭✨
## Building for local development
Prerequisites:
1. git
2. docker
Firstly, clone the repository:
```shell
git clone git@github.com:nightnoryu/anon3anon.git
```
Then build the binary:
```shell
./bin/a3abrewkit build
```
This script will download a [brewkit](https://github.com/ispringtech/brewkit) binary and put it in the `bin` directory of the project.
After that, copy the `docker-compose.override.example.yml` to `docker-compose.override.yml` and set the environment variables:
```yaml
services:
anon3anon:
environment:
TELEGRAM_BOT_TOKEN: 123:ABC # The token for your bot, obtained from t.me/BotFather
OWNER_CHAT_ID: 123 # ID of your chat with your bot
```
And you're set! Lastly, run the app:
```shell
./bin/a3acompose up -d
```
While making changes to the app, don't forget to restart the container:
```shell
docker restart anon3anon
```
When you're finished working on the project, bring it down using this command:
```shell
./bin/a3acompose down
```
+2 -1
View File
@@ -1 +1,2 @@
anon3anon
/anon3anon
/brewkit
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -o errexit
WORK_DIR=$(dirname "$(dirname "$(readlink -f "$0")")")
BREWKIT_VERSION="v1.0.0"
BREWKIT_URL="https://github.com/ispringtech/brewkit/releases/download/$BREWKIT_VERSION/brewkit_amd64"
BREWKIT_BINARY="bin/brewkit"
pushd "$WORK_DIR" >/dev/null
if [[ ! -f "$BREWKIT_BINARY" ]]; then
echo "installing brewkit..."
wget -q -O "$BREWKIT_BINARY" "$BREWKIT_URL"
chmod +x "$BREWKIT_BINARY"
fi
"$WORK_DIR/$BREWKIT_BINARY" "$@"
popd >/dev/null
Executable
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env bash
set -o errexit
WORK_DIR=$(dirname "$(dirname "$(readlink -f "$0")")")
PROJECT_NAME=$(basename "$WORK_DIR")
pushd "$WORK_DIR" >/dev/null
docker-compose -p "$PROJECT_NAME" "$@"
popd >/dev/null
+7
View File
@@ -0,0 +1,7 @@
local project = import 'brewkit/project.libsonnet';
local appIDs = [
"anon3anon",
];
project.project(appIDs)
+3
View File
@@ -0,0 +1,3 @@
{
gobuilder: "golang:1.22.5"
}
+83
View File
@@ -0,0 +1,83 @@
local images = import 'images.libsonnet';
local cache = std.native('cache');
local copy = std.native('copy');
local copyFrom = std.native('copyFrom');
local gosources = [
"go.mod",
"go.sum",
"cmd",
"pkg",
];
local gocache = [
cache("go-build", "/app/cache"),
cache("go-mod", "/go/pkg/mod"),
];
{
project(appIDs):: {
apiVersion: "brewkit/v1",
targets: {
all: ["modules", "build"],
} + {
modules: ["gotidy", "modulesvendor"],
gotidy: {
from: "gobase",
workdir: "/app",
cache: gocache,
ssh: {},
command: "go mod tidy",
output: {
artifact: "/app/go.*",
"local": ".",
},
},
modulesvendor: {
from: "gotidy",
workdir: "/app",
cache: gocache,
command: "go mod vendor",
output: {
artifact: "/app/vendor",
"local": "vendor",
},
},
build: [appID for appID in appIDs],
} + {
[appID]: {
from: "gobase",
workdir: "/app",
cache: gocache,
dependsOn: ["modules"],
command: "go build -trimpath -v -o ./bin/" + appID + " ./cmd/" + appID,
output: {
artifact: "/app/bin/" + appID,
"local": "./bin"
}
}
for appID in appIDs
} + {
gobase: {
from: images.gobuilder,
workdir: "/app",
env: {
GOCACHE: "/app/cache/go-build",
CGO_ENABLED: "0"
},
copy: copyFrom('gosources', '/app', '/app')
},
gosources: {
from: "scratch",
workdir: "/app",
copy: [copy(source, source) for source in gosources]
},
}
}
}
+5
View File
@@ -0,0 +1,5 @@
services:
anon3anon:
environment:
TELEGRAM_BOT_TOKEN: 123:ABC
OWNER_CHAT_ID: 123
-1
View File
@@ -6,4 +6,3 @@ services:
dockerfile: docker/Dockerfile-local
volumes:
- "./bin:/app/bin"
env_file: .env