diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 6f6cfd5..6e075a3 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -11,7 +11,7 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v1
- name: Set up Go
uses: actions/setup-go@v2
@@ -19,7 +19,9 @@ jobs:
go-version: 1.15
- name: Build
+ working-directory: docker/go
run: go build -v ./...
- name: Test
+ working-directory: docker/go
run: go test -v ./...
diff --git a/.gitignore b/.gitignore
index eda9dfe..3304b9c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,2 @@
.env
-docker/go/cmd
-docker/go/pkg
-docker/go/go.mod
-cmd/bot/bot
\ No newline at end of file
+cmd/bot/bot
diff --git a/README.md b/README.md
index e3281db..6d89a5d 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,13 @@
+# Workout reminder bot
+

-# How to use the bot
+## How to use the bot
+
-## Bot commands
+### Bot commands
+
... you can issue as a telegram user:
| Command | description |
|---|----|
@@ -19,13 +23,22 @@
|`/cancel []`| cancel all reminders or for all mentionned routines |
**🔴 IMPORTANT 🔴**: Set your `/timezone` so all other commands can work correctly for you!!!
-# Setup
-## BotFather
-### Register bot
+
+## Setup
+
+### Build
+
+### BotFather
+
+#### Register bot
+
Go on telegram, start a chat with BotFather and create a new bot via `/newBot`. Set up a bot name and the bot user name.
-### Command hints
+
+#### Command hints
+
With BotFather, set commands with `/setCommands` and paste:
-```
+
+```txt
help - instructions on bot usage
timezone - 🔴 set your timezone for all commands to work correctly (default is CET)
exercise - create exercise for activity and optionnaly indicate its reps, sets, length, duration and notes (e.g. /exercise )
@@ -37,11 +50,15 @@ routine - create a routine made of workouts (e.g. /routine gitStrong)
remindme - sends a reminder to maintain the routine (e.g. /remindme gitStrong 16 21 tu we th fr sa)
cancel - cancel all reminders or for all mentionned routines (e.g. /cancel OR /cancel gitStrong)
```
-## Environnement file
+
+### Environnement file
+
Create your own environnement file `.env` by following the example file `example.env`.
-## Start
+
+### Start
+
```bash
git clone git@github.com:nextuponstream/workoutReminderBot.git
-cd workoutReminderBot/scripts
-sh runBot.sh
-```
\ No newline at end of file
+cd workoutReminderBot
+docker-compose up -d
+```
diff --git a/docker-compose.yml b/docker-compose.yml
index 3ede325..5ae5480 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,37 +1,33 @@
-version: '3.9'
-networks:
- web:
+version: "3.9"
-services:
+services:
mdb:
- build: ./docker/mongo
- image: nextuponstream/wrb_mongo
+ image: mongo:3.6.22
container_name: ${CONTAINER_NAME_MONGO}
- env_file:
+ env_file:
- .env
- ports:
+ ports:
- 8444:27017
- networks:
- - web
+
ngdb:
- build: ./docker/neo4j
- image: nextuponstream/wrb_neo4j
+ image: neo4j:4.4.4
container_name: wrb_ngdb
- env_file:
+ env_file:
- .env
ports:
- - 7474:7474
+ - 7474:7474
- 7687:7687
- networks:
- - web
bot:
build: ./docker/go
image: nextuponstream/wrb_bot
container_name: wrb_go
- env_file:
+ restart: "on-failure"
+ environment:
+ - MDB=mdb:27017
+ - NGDB=ngdb:7687
+ - TIMEOUT=10
+ env_file:
- .env
- ports:
+ ports:
- 8443:3000
- networks:
- - web
diff --git a/docker/bash/Dockerfile b/docker/bash/Dockerfile
deleted file mode 100644
index cfa534e..0000000
--- a/docker/bash/Dockerfile
+++ /dev/null
@@ -1,3 +0,0 @@
-FROM bash:5.1.4
-COPY wait-for-it.sh wait-for-it.sh
-RUN chmod +x wait-for-it.sh
\ No newline at end of file
diff --git a/docker/go/Dockerfile b/docker/go/Dockerfile
index cdb0579..a3af04c 100644
--- a/docker/go/Dockerfile
+++ b/docker/go/Dockerfile
@@ -1,20 +1,19 @@
-FROM golang:1.15 as build
+FROM golang:1.15-alpine
WORKDIR /go/src/github.com/nextuponstream/workoutReminderBot
COPY pkg pkg
COPY cmd cmd
COPY go.mod go.mod
+copy wait-for-it.sh wait-for-it.sh
RUN go get -d -v ./...
-RUN go test -v ./...
WORKDIR /go/src/github.com/nextuponstream/workoutReminderBot/cmd/bot
RUN CGO_ENABLED=0 go build -v -o /bin/workoutReminderBot
-FROM scratch
# golang image already has certificates https://stackoverflow.com/a/52979541
-COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
-COPY --from=build /bin/workoutReminderBot /bin/workoutReminderBot
-COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo
+#COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
+#COPY --from=build /bin/workoutReminderBot /bin/workoutReminderBot
+#COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo
ENV TZ=Europe/Berlin
# Note: tested time difference with America/Los_Angeles
-ENTRYPOINT ["/bin/workoutReminderBot"]
\ No newline at end of file
+ENTRYPOINT ["/bin/workoutReminderBot"]
diff --git a/cmd/bot/main.go b/docker/go/cmd/bot/main.go
similarity index 100%
rename from cmd/bot/main.go
rename to docker/go/cmd/bot/main.go
diff --git a/go.mod b/docker/go/go.mod
similarity index 100%
rename from go.mod
rename to docker/go/go.mod
diff --git a/go.sum b/docker/go/go.sum
similarity index 100%
rename from go.sum
rename to docker/go/go.sum
diff --git a/pkg/domain/activity.go b/docker/go/pkg/domain/activity.go
similarity index 100%
rename from pkg/domain/activity.go
rename to docker/go/pkg/domain/activity.go
diff --git a/pkg/domain/exercise.go b/docker/go/pkg/domain/exercise.go
similarity index 100%
rename from pkg/domain/exercise.go
rename to docker/go/pkg/domain/exercise.go
diff --git a/pkg/domain/persistence.go b/docker/go/pkg/domain/persistence.go
similarity index 100%
rename from pkg/domain/persistence.go
rename to docker/go/pkg/domain/persistence.go
diff --git a/pkg/domain/reminder.go b/docker/go/pkg/domain/reminder.go
similarity index 100%
rename from pkg/domain/reminder.go
rename to docker/go/pkg/domain/reminder.go
diff --git a/pkg/domain/reminder_test.go b/docker/go/pkg/domain/reminder_test.go
similarity index 100%
rename from pkg/domain/reminder_test.go
rename to docker/go/pkg/domain/reminder_test.go
diff --git a/pkg/domain/user.go b/docker/go/pkg/domain/user.go
similarity index 100%
rename from pkg/domain/user.go
rename to docker/go/pkg/domain/user.go
diff --git a/pkg/domain/workout.go b/docker/go/pkg/domain/workout.go
similarity index 100%
rename from pkg/domain/workout.go
rename to docker/go/pkg/domain/workout.go
diff --git a/pkg/domain/workout_test.go b/docker/go/pkg/domain/workout_test.go
similarity index 100%
rename from pkg/domain/workout_test.go
rename to docker/go/pkg/domain/workout_test.go
diff --git a/pkg/handler/activity.go b/docker/go/pkg/handler/activity.go
similarity index 100%
rename from pkg/handler/activity.go
rename to docker/go/pkg/handler/activity.go
diff --git a/pkg/handler/cancel.go b/docker/go/pkg/handler/cancel.go
similarity index 100%
rename from pkg/handler/cancel.go
rename to docker/go/pkg/handler/cancel.go
diff --git a/pkg/handler/exercise.go b/docker/go/pkg/handler/exercise.go
similarity index 100%
rename from pkg/handler/exercise.go
rename to docker/go/pkg/handler/exercise.go
diff --git a/pkg/handler/exercise_test.go b/docker/go/pkg/handler/exercise_test.go
similarity index 100%
rename from pkg/handler/exercise_test.go
rename to docker/go/pkg/handler/exercise_test.go
diff --git a/pkg/handler/help.go b/docker/go/pkg/handler/help.go
similarity index 100%
rename from pkg/handler/help.go
rename to docker/go/pkg/handler/help.go
diff --git a/pkg/handler/reminder.go b/docker/go/pkg/handler/reminder.go
similarity index 100%
rename from pkg/handler/reminder.go
rename to docker/go/pkg/handler/reminder.go
diff --git a/pkg/handler/reminder_test.go b/docker/go/pkg/handler/reminder_test.go
similarity index 100%
rename from pkg/handler/reminder_test.go
rename to docker/go/pkg/handler/reminder_test.go
diff --git a/pkg/handler/routine.go b/docker/go/pkg/handler/routine.go
similarity index 100%
rename from pkg/handler/routine.go
rename to docker/go/pkg/handler/routine.go
diff --git a/pkg/handler/timezone.go b/docker/go/pkg/handler/timezone.go
similarity index 100%
rename from pkg/handler/timezone.go
rename to docker/go/pkg/handler/timezone.go
diff --git a/pkg/handler/unknown.go b/docker/go/pkg/handler/unknown.go
similarity index 100%
rename from pkg/handler/unknown.go
rename to docker/go/pkg/handler/unknown.go
diff --git a/pkg/handler/workout.go b/docker/go/pkg/handler/workout.go
similarity index 100%
rename from pkg/handler/workout.go
rename to docker/go/pkg/handler/workout.go
diff --git a/pkg/repositories/mongo/activities.go b/docker/go/pkg/repositories/mongo/activities.go
similarity index 100%
rename from pkg/repositories/mongo/activities.go
rename to docker/go/pkg/repositories/mongo/activities.go
diff --git a/pkg/repositories/mongo/mongo.go b/docker/go/pkg/repositories/mongo/mongo.go
similarity index 100%
rename from pkg/repositories/mongo/mongo.go
rename to docker/go/pkg/repositories/mongo/mongo.go
diff --git a/pkg/repositories/mongo/user.go b/docker/go/pkg/repositories/mongo/user.go
similarity index 100%
rename from pkg/repositories/mongo/user.go
rename to docker/go/pkg/repositories/mongo/user.go
diff --git a/pkg/repositories/neo4j/exercise.go b/docker/go/pkg/repositories/neo4j/exercise.go
similarity index 100%
rename from pkg/repositories/neo4j/exercise.go
rename to docker/go/pkg/repositories/neo4j/exercise.go
diff --git a/pkg/repositories/neo4j/neo4j.go b/docker/go/pkg/repositories/neo4j/neo4j.go
similarity index 100%
rename from pkg/repositories/neo4j/neo4j.go
rename to docker/go/pkg/repositories/neo4j/neo4j.go
diff --git a/docker/go/start-service.sh b/docker/go/start-service.sh
new file mode 100644
index 0000000..f0b0f9f
--- /dev/null
+++ b/docker/go/start-service.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+echo $SHELL
+
+for SERVICE in $MDB $NGDB
+do
+ echo $SERVICE
+ sh wait-for-it.sh -t $TIMEOUT $SERVICE
+ hasTimeout=$?
+
+ if [ "$hasTimeout" -ne 0 ]; then # when timeout occurs
+ echo "error: required service $SERVICE didn't start in time!"
+ exit 1
+ else
+ echo "$SERVICE is up"
+ fi
+done
+
+/bin/workoutReminderBot
diff --git a/docker/bash/wait-for-it.sh b/docker/go/wait-for-it.sh
old mode 100644
new mode 100755
similarity index 100%
rename from docker/bash/wait-for-it.sh
rename to docker/go/wait-for-it.sh
diff --git a/docker/mongo/Dockerfile b/docker/mongo/Dockerfile
deleted file mode 100644
index 7c234bf..0000000
--- a/docker/mongo/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM mongo:3.6.22
\ No newline at end of file
diff --git a/docker/neo4j/Dockerfile b/docker/neo4j/Dockerfile
deleted file mode 100644
index db98b0f..0000000
--- a/docker/neo4j/Dockerfile
+++ /dev/null
@@ -1 +0,0 @@
-FROM neo4j:4.2.3
\ No newline at end of file
diff --git a/scripts/runBot.sh b/scripts/runBot.sh
deleted file mode 100644
index 4cd5ef7..0000000
--- a/scripts/runBot.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-TIMEOUT=25
-BUILD=docker/go
-MDB=wrb_mdb:27017
-NGDB=wrb_ngdb:7687
-
-wait_for_service()
-
-echo 'Removing all unnecessary containers/images that are used in build'
-# yes command: https://stackoverflow.com/a/7642711
-yes | docker container prune # for wrb_wait_dbs
-yes | docker image prune
-yes | docker volume prune
-docker system prune --volume
-
-./startDbs.sh # dbs started in background
-
-cd ..
-
-rm -rf $BUILD/pkg
-cp -R pkg $BUILD/pkg
-rm -rf $BUILD/cmd
-cp -R cmd $BUILD/cmd
-rm $BUILD/go.mod
-cp go.mod $BUILD/go.mod
-
-for service in $MDB $NGDB
-do
- # wait on dbs to start before running our bots
- docker build --tag wrb_wait_dbs docker/bash
- docker run --network=workoutreminderbot_web -i wrb_wait_dbs bash -c \
- "./wait-for-it.sh -t $TIMEOUT $service"
-
- hasTimeout=$?
-
- if [ "$hasTimeout" -ne 0 ]; then # when timeout occurs
- echo "error: mongo database didn't start in time!"
- exit 1
- else
- echo "$service is up"
- fi
-done
-
-docker-compose up --build bot
diff --git a/scripts/startDbs.sh b/scripts/startDbs.sh
deleted file mode 100755
index f37b348..0000000
--- a/scripts/startDbs.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/bash
-
-cd ..
-docker-compose down
-docker-compose up -d mdb ngdb
\ No newline at end of file