From 1924cc5fe467bf83a5055a2f085b4022870de643 Mon Sep 17 00:00:00 2001 From: abdfnx Date: Tue, 20 Sep 2022 16:33:55 +0300 Subject: [PATCH] create `docker/railway` and `docker/render` dockerfiles --- cmd/app/docker-init.go | 21 +--- cmd/app/init.go | 1 - dockerfiles/railway/blank.dockerfile | 27 ++++++ dockerfiles/railway/bun.dockerfile | 15 +++ dockerfiles/railway/c-discord.dockerfile | 16 ++++ dockerfiles/railway/cargo.dockerfile | 21 ++++ dockerfiles/railway/cmake-discord.dockerfile | 20 ++++ dockerfiles/railway/cmake-telegram.dockerfile | 29 ++++++ dockerfiles/railway/crystal.dockerfile | 22 +++++ dockerfiles/railway/csharp.dockerfile | 43 +++++++++ dockerfiles/railway/dart.dockerfile | 15 +++ dockerfiles/railway/deno.dockerfile | 21 ++++ dockerfiles/railway/fleet.dockerfile | 18 ++++ dockerfiles/railway/go.dockerfile | 26 +++++ dockerfiles/railway/gradle.dockerfile | 25 +++++ dockerfiles/railway/nim.dockerfile | 23 +++++ dockerfiles/railway/npm.dockerfile | 21 ++++ dockerfiles/railway/php.dockerfile | 22 +++++ dockerfiles/railway/pip.dockerfile | 21 ++++ dockerfiles/railway/pipenv.dockerfile | 35 +++++++ dockerfiles/railway/pnpm.dockerfile | 24 +++++ dockerfiles/railway/poetry.dockerfile | 32 +++++++ dockerfiles/railway/ruby.dockerfile | 23 +++++ dockerfiles/railway/swift.dockerfile | 19 ++++ dockerfiles/railway/yarn.dockerfile | 21 ++++ dockerfiles/{ => render}/blank.dockerfile | 2 +- dockerfiles/{ => render}/bun.dockerfile | 2 +- dockerfiles/{ => render}/c-discord.dockerfile | 4 +- dockerfiles/{ => render}/cargo.dockerfile | 4 +- .../{ => render}/cmake-discord.dockerfile | 2 +- .../{ => render}/cmake-telegram.dockerfile | 2 +- dockerfiles/{ => render}/crystal.dockerfile | 4 +- dockerfiles/{ => render}/csharp.dockerfile | 6 +- dockerfiles/{ => render}/dart.dockerfile | 2 +- dockerfiles/{ => render}/deno.dockerfile | 4 +- dockerfiles/{ => render}/fleet.dockerfile | 4 +- dockerfiles/{ => render}/go.dockerfile | 4 +- dockerfiles/{ => render}/gradle.dockerfile | 4 +- dockerfiles/{ => render}/nim.dockerfile | 4 +- dockerfiles/{ => render}/npm.dockerfile | 4 +- dockerfiles/{ => render}/php.dockerfile | 4 +- dockerfiles/{ => render}/pip.dockerfile | 5 +- dockerfiles/{ => render}/pipenv.dockerfile | 8 +- dockerfiles/{ => render}/pnpm.dockerfile | 4 +- dockerfiles/{ => render}/poetry.dockerfile | 4 +- dockerfiles/{ => render}/ruby.dockerfile | 4 +- dockerfiles/{ => render}/swift.dockerfile | 5 +- dockerfiles/{ => render}/yarn.dockerfile | 4 +- internal/pipes/initx/docker.go | 94 +++++++++++++++++- internal/railway/deploy.go | 95 +------------------ 50 files changed, 679 insertions(+), 161 deletions(-) create mode 100644 dockerfiles/railway/blank.dockerfile create mode 100644 dockerfiles/railway/bun.dockerfile create mode 100644 dockerfiles/railway/c-discord.dockerfile create mode 100644 dockerfiles/railway/cargo.dockerfile create mode 100644 dockerfiles/railway/cmake-discord.dockerfile create mode 100644 dockerfiles/railway/cmake-telegram.dockerfile create mode 100644 dockerfiles/railway/crystal.dockerfile create mode 100644 dockerfiles/railway/csharp.dockerfile create mode 100644 dockerfiles/railway/dart.dockerfile create mode 100644 dockerfiles/railway/deno.dockerfile create mode 100644 dockerfiles/railway/fleet.dockerfile create mode 100644 dockerfiles/railway/go.dockerfile create mode 100644 dockerfiles/railway/gradle.dockerfile create mode 100644 dockerfiles/railway/nim.dockerfile create mode 100644 dockerfiles/railway/npm.dockerfile create mode 100644 dockerfiles/railway/php.dockerfile create mode 100644 dockerfiles/railway/pip.dockerfile create mode 100644 dockerfiles/railway/pipenv.dockerfile create mode 100644 dockerfiles/railway/pnpm.dockerfile create mode 100644 dockerfiles/railway/poetry.dockerfile create mode 100644 dockerfiles/railway/ruby.dockerfile create mode 100644 dockerfiles/railway/swift.dockerfile create mode 100644 dockerfiles/railway/yarn.dockerfile rename dockerfiles/{ => render}/blank.dockerfile (96%) rename dockerfiles/{ => render}/bun.dockerfile (89%) rename dockerfiles/{ => render}/c-discord.dockerfile (82%) rename dockerfiles/{ => render}/cargo.dockerfile (90%) rename dockerfiles/{ => render}/cmake-discord.dockerfile (92%) rename dockerfiles/{ => render}/cmake-telegram.dockerfile (95%) rename dockerfiles/{ => render}/crystal.dockerfile (90%) rename dockerfiles/{ => render}/csharp.dockerfile (88%) rename dockerfiles/{ => render}/dart.dockerfile (88%) rename dockerfiles/{ => render}/deno.dockerfile (89%) rename dockerfiles/{ => render}/fleet.dockerfile (83%) rename dockerfiles/{ => render}/go.dockerfile (89%) rename dockerfiles/{ => render}/gradle.dockerfile (90%) rename dockerfiles/{ => render}/nim.dockerfile (90%) rename dockerfiles/{ => render}/npm.dockerfile (90%) rename dockerfiles/{ => render}/php.dockerfile (90%) rename dockerfiles/{ => render}/pip.dockerfile (86%) rename dockerfiles/{ => render}/pipenv.dockerfile (89%) rename dockerfiles/{ => render}/pnpm.dockerfile (91%) rename dockerfiles/{ => render}/poetry.dockerfile (94%) rename dockerfiles/{ => render}/ruby.dockerfile (90%) rename dockerfiles/{ => render}/swift.dockerfile (78%) rename dockerfiles/{ => render}/yarn.dockerfile (90%) diff --git a/cmd/app/docker-init.go b/cmd/app/docker-init.go index 338efbf6..6a5bfd45 100644 --- a/cmd/app/docker-init.go +++ b/cmd/app/docker-init.go @@ -1,13 +1,7 @@ package app import ( - "log" - "path/filepath" - - "github.com/abdfnx/botway/constants" "github.com/abdfnx/botway/internal/pipes/initx" - "github.com/abdfnx/botway/tools" - "github.com/abdfnx/tran/dfs" "github.com/spf13/cobra" ) @@ -16,21 +10,10 @@ func DockerInitCMD() *cobra.Command { Use: "docker-init", Short: "Initialize ~/.botway for docker containers", Run: func(cmd *cobra.Command, args []string) { - if opts.CopyFile { - err := dfs.CreateDirectory(filepath.Join(constants.HomeDir, ".botway")) - - if err != nil { - log.Fatal(err) - } - - tools.Copy("botway.json", constants.BotwayConfigFile) - } else { - initx.DockerInit() - } + initx.SetupTokensInDocker() + initx.DockerInit() }, } - cmd.Flags().BoolVarP(&opts.CopyFile, "copy-file", "", false, "Copy config file") - return cmd } diff --git a/cmd/app/init.go b/cmd/app/init.go index 683b9da4..a7f08154 100755 --- a/cmd/app/init.go +++ b/cmd/app/init.go @@ -7,7 +7,6 @@ import ( ) var opts = options.InitOptions{ - CopyFile: false, NoRepo: false, } diff --git a/dockerfiles/railway/blank.dockerfile b/dockerfiles/railway/blank.dockerfile new file mode 100644 index 00000000..dd04592d --- /dev/null +++ b/dockerfiles/railway/blank.dockerfile @@ -0,0 +1,27 @@ +FROM scratch + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +### Replace `scratch` with the linux distribution you want to use ### +### Example: FROM alpine:latest ### +### Or with with the bot language with the tag: ### +### Example: FROM ruby:alpine ### + +### Add here the packages you want to use ### +### Example: ENV PACKAGES "Packages to add" ### +### RUN apk update && apk add --no-cache --virtual ${PACKAGES} ### + +### Copy here all the files you want to use ### +### Example: COPY . . ### + +### Add here the build command to build your bot ### +### Example: RUN cargo build --release ### + +### Last step: Add here the entrypoint command to run your bot ### +### Example: ENTRYPOINT ["python3", "./src/main.py"] ### diff --git a/dockerfiles/railway/bun.dockerfile b/dockerfiles/railway/bun.dockerfile new file mode 100644 index 00000000..a8671ac0 --- /dev/null +++ b/dockerfiles/railway/bun.dockerfile @@ -0,0 +1,15 @@ +FROM jarredsumner/bun:edge + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PATH="/root/.bun/bin:$PATH" + +RUN bun i + +ENTRYPOINT [ "bun", "src/main.js" ] diff --git a/dockerfiles/railway/c-discord.dockerfile b/dockerfiles/railway/c-discord.dockerfile new file mode 100644 index 00000000..511315e1 --- /dev/null +++ b/dockerfiles/railway/c-discord.dockerfile @@ -0,0 +1,16 @@ +FROM botwayorg/concord + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN gcc src/main.c -o bot -pthread -ldiscord -lcurl + +ENTRYPOINT [ "./bot" ] diff --git a/dockerfiles/railway/cargo.dockerfile b/dockerfiles/railway/cargo.dockerfile new file mode 100644 index 00000000..837690f4 --- /dev/null +++ b/dockerfiles/railway/cargo.dockerfile @@ -0,0 +1,21 @@ +FROM rust:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libressl-dev gcc git lld clang libsodium ffmpeg opus autoconf automake libtool m4 youtube-dl binutils zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN cargo build --release --bin bot + +ENTRYPOINT ["./target/release/bot"] diff --git a/dockerfiles/railway/cmake-discord.dockerfile b/dockerfiles/railway/cmake-discord.dockerfile new file mode 100644 index 00000000..9cfe8bf9 --- /dev/null +++ b/dockerfiles/railway/cmake-discord.dockerfile @@ -0,0 +1,20 @@ +FROM brainboxdotcc/dpp:latest + +COPY .botway.yaml . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +WORKDIR /usr/src/{{.BotName}} + +COPY . . + +WORKDIR /usr/src/{{.BotName}}/build + +RUN cmake .. +RUN make -j$(nproc) + +ENTRYPOINT [ "/usr/src/{{.BotName}}/build/{{.BotName}}" ] diff --git a/dockerfiles/railway/cmake-telegram.dockerfile b/dockerfiles/railway/cmake-telegram.dockerfile new file mode 100644 index 00000000..bb83a265 --- /dev/null +++ b/dockerfiles/railway/cmake-telegram.dockerfile @@ -0,0 +1,29 @@ +FROM reo7sp/tgbot-cpp:latest + +COPY .botway.yaml . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +RUN apt-get update -y && \ + apt-get install -y libopus-dev opus-tools git gcc cmake make libffi-dev python-dev ffmpeg build-essential autoconf automake libtool m4 youtube-dl + +RUN git clone https://github.com/nlohmann/json && \ + cd json && \ + cmake . && \ + make -j && \ + make install + +WORKDIR /usr/src/{{.BotName}} + +COPY . . + +WORKDIR /usr/src/{{.BotName}}/build + +RUN cmake .. +RUN make -j$(nproc) + +ENTRYPOINT [ "/usr/src/{{.BotName}}/build/{{.BotName}}" ] diff --git a/dockerfiles/railway/crystal.dockerfile b/dockerfiles/railway/crystal.dockerfile new file mode 100644 index 00000000..84cb20a8 --- /dev/null +++ b/dockerfiles/railway/crystal.dockerfile @@ -0,0 +1,22 @@ +FROM crystallang/crystal:nightly-alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc git libsodium opus ffmpeg binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN shards install +RUN shards build --static --no-debug --release --production -v + +ENTRYPOINT [ "./bin/{{.BotName}}" ] diff --git a/dockerfiles/railway/csharp.dockerfile b/dockerfiles/railway/csharp.dockerfile new file mode 100644 index 00000000..3cdb6c61 --- /dev/null +++ b/dockerfiles/railway/csharp.dockerfile @@ -0,0 +1,43 @@ +FROM scratch AS bw + +COPY .botway.yaml . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build + +WORKDIR /source + +COPY *.csproj . + +RUN dotnet restore -r linux-musl-x64 + +COPY . . + +RUN dotnet publish -c release -o /app -r linux-musl-x64 --self-contained false --no-restore + +FROM mcr.microsoft.com/dotnet/runtime:6.0-alpine-amd64 + +ENV \ + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \ + LC_ALL=en_US.UTF-8 \ + LANG=en_US.UTF-8 \ + PACKAGES="build-dependencies build-base gcc git libsodium opus ffmpeg icu-libs binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +COPY --from=build /app /app + +COPY --from=bw /root/.botway /root/.botway + +COPY . . + +ENTRYPOINT ["./app/{{.BotName}}"] diff --git a/dockerfiles/railway/dart.dockerfile b/dockerfiles/railway/dart.dockerfile new file mode 100644 index 00000000..9159bf4b --- /dev/null +++ b/dockerfiles/railway/dart.dockerfile @@ -0,0 +1,15 @@ +FROM dart:stable + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +RUN dart pub get + +RUN dart compile exe src/main.dart -o bot + +ENTRYPOINT ["./bot"] diff --git a/dockerfiles/railway/deno.dockerfile b/dockerfiles/railway/deno.dockerfile new file mode 100644 index 00000000..395bad35 --- /dev/null +++ b/dockerfiles/railway/deno.dockerfile @@ -0,0 +1,21 @@ +FROM denoland/deno:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc git ffmpeg curl binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN deno cache deps.ts + +ENTRYPOINT ["deno", "run", "--allow-all", "main.ts"] diff --git a/dockerfiles/railway/fleet.dockerfile b/dockerfiles/railway/fleet.dockerfile new file mode 100644 index 00000000..4907d775 --- /dev/null +++ b/dockerfiles/railway/fleet.dockerfile @@ -0,0 +1,18 @@ +FROM botwayorg/fleet-rs:latest + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +RUN apk update + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN fleet build --release --bin bot + +ENTRYPOINT ["./target/release/bot"] diff --git a/dockerfiles/railway/go.dockerfile b/dockerfiles/railway/go.dockerfile new file mode 100644 index 00000000..d20f7bca --- /dev/null +++ b/dockerfiles/railway/go.dockerfile @@ -0,0 +1,26 @@ +FROM golang:alpine + +COPY .botway.yaml . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc git binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +WORKDIR /app/ + +COPY . . + +RUN go mod tidy +RUN go build -o bot ./src/main.go + +ENTRYPOINT ["./bot"] diff --git a/dockerfiles/railway/gradle.dockerfile b/dockerfiles/railway/gradle.dockerfile new file mode 100644 index 00000000..02bd0e6a --- /dev/null +++ b/dockerfiles/railway/gradle.dockerfile @@ -0,0 +1,25 @@ +FROM gradle:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libressl-dev gcc git libsodium opus ffmpeg m4 binutils zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN gradle wrapper + +RUN gradle build --no-daemon + +RUN ./gradlew + +ENTRYPOINT [ "./gradlew", "run" ] diff --git a/dockerfiles/railway/nim.dockerfile b/dockerfiles/railway/nim.dockerfile new file mode 100644 index 00000000..e9d15643 --- /dev/null +++ b/dockerfiles/railway/nim.dockerfile @@ -0,0 +1,23 @@ +FROM nimlang/nim:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libressl-dev gcc git lld clang libsodium ffmpeg opus autoconf automake libtool m4 youtube-dl binutils zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN nimble install -y + +RUN nim c -d:ssl ./src/main.nim + +ENTRYPOINT [ "./src/main" ] diff --git a/dockerfiles/railway/npm.dockerfile b/dockerfiles/railway/npm.dockerfile new file mode 100644 index 00000000..eefbd6ce --- /dev/null +++ b/dockerfiles/railway/npm.dockerfile @@ -0,0 +1,21 @@ +FROM node:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies libtool autoconf automake gcc gcc-doc g++ make py3-pip py-pip zlib-dev python3 python3-dev libffi-dev build-base gcc git ffmpeg binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN npm i + +ENTRYPOINT ["npm", "start"] diff --git a/dockerfiles/railway/php.dockerfile b/dockerfiles/railway/php.dockerfile new file mode 100644 index 00000000..101033c8 --- /dev/null +++ b/dockerfiles/railway/php.dockerfile @@ -0,0 +1,22 @@ +FROM php:alpine +FROM composer + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libressl-dev gcc git libsodium ffmpeg opus autoconf automake binutils zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN composer install + +ENTRYPOINT [ "php", "src/main.php" ] diff --git a/dockerfiles/railway/pip.dockerfile b/dockerfiles/railway/pip.dockerfile new file mode 100644 index 00000000..9f41c57c --- /dev/null +++ b/dockerfiles/railway/pip.dockerfile @@ -0,0 +1,21 @@ +FROM python:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc abuild binutils py-pip binutils-doc gcc-doc python3-dev libffi-dev git binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN pip3 install -r requirements.txt + +ENTRYPOINT ["python3", "./src/main.py"] diff --git a/dockerfiles/railway/pipenv.dockerfile b/dockerfiles/railway/pipenv.dockerfile new file mode 100644 index 00000000..15ccaf9a --- /dev/null +++ b/dockerfiles/railway/pipenv.dockerfile @@ -0,0 +1,35 @@ +FROM python:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc abuild binutils binutils-doc gcc-doc py-pip jpeg-dev zlib-dev python3 python3-dev libffi-dev git boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +# Install pyenv +RUN pip install tld --ignore-installed six distlib --user + +RUN curl https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash + +ENV PATH="/root/.pyenv/bin:$PATH" +RUN echo 'eval "$(pyenv init -)"' >> ~/.bashrc +RUN echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc +RUN /bin/bash -c "bash" + +# Install pipenv and deps +RUN curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python3 +RUN pipenv lock +RUN pipenv sync --system +RUN pipenv install + +ENTRYPOINT ["pipenv", "run", "python3", "./src/main.py"] diff --git a/dockerfiles/railway/pnpm.dockerfile b/dockerfiles/railway/pnpm.dockerfile new file mode 100644 index 00000000..b679c89c --- /dev/null +++ b/dockerfiles/railway/pnpm.dockerfile @@ -0,0 +1,24 @@ +FROM node:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies libtool autoconf automake gcc gcc-doc g++ make py3-pip py-pip zlib-dev python3 python3-dev libffi-dev build-base gcc git ffmpeg binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN npm i -g pnpm + +RUN pnpm fetch --prod +RUN pnpm install + +ENTRYPOINT ["pnpm", "start"] diff --git a/dockerfiles/railway/poetry.dockerfile b/dockerfiles/railway/poetry.dockerfile new file mode 100644 index 00000000..a6d19169 --- /dev/null +++ b/dockerfiles/railway/poetry.dockerfile @@ -0,0 +1,32 @@ +FROM python:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc abuild binutils binutils-doc gcc-doc py-pip jpeg-dev zlib-dev python3 python3-dev libffi-dev git boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +# Install poetry +RUN curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 + +ENV PATH="/root/.poetry/bin:$PATH" + +RUN echo 'eval "$(poetry env install -q)"' >> ~/.bashrc +RUN echo 'eval "$(poetry env shell -q)"' >> ~/.bashrc + +RUN /bin/bash -c "bash" + +RUN poetry config virtualenvs.create false +RUN poetry install --no-dev + +ENTRYPOINT ["python3", "./src/main.py"] diff --git a/dockerfiles/railway/ruby.dockerfile b/dockerfiles/railway/ruby.dockerfile new file mode 100644 index 00000000..93bfc74f --- /dev/null +++ b/dockerfiles/railway/ruby.dockerfile @@ -0,0 +1,23 @@ +FROM ruby:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies build-base gcc git libsodium opus ffmpeg binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN gem update --system +RUN gem install bundler +RUN bundle install + +ENTRYPOINT ["bundle", "exec", "ruby", "./src/main.rb"] diff --git a/dockerfiles/railway/swift.dockerfile b/dockerfiles/railway/swift.dockerfile new file mode 100644 index 00000000..b57a2e0d --- /dev/null +++ b/dockerfiles/railway/swift.dockerfile @@ -0,0 +1,19 @@ +FROM swift:latest + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +RUN apt-get update -y && \ + apt-get install -y libopus-dev opus-tools git gcc libffi-dev python-dev ffmpeg build-essential autoconf automake libtool m4 youtube-dl libcurl4-openssl-dev + +# To add more packages +# RUN apt-get install -y PACKAGE_NAME + +RUN swift build + +ENTRYPOINT [ "./.build/debug/{{.BotName}}" ] diff --git a/dockerfiles/railway/yarn.dockerfile b/dockerfiles/railway/yarn.dockerfile new file mode 100644 index 00000000..8cfafa18 --- /dev/null +++ b/dockerfiles/railway/yarn.dockerfile @@ -0,0 +1,21 @@ +FROM node:alpine + +COPY . . + +ENV BOTWAY-DIR /root/.botway + +RUN mkdir ${BOTWAY-DIR} + +COPY botway.json ${BOTWAY-DIR} + +ENV PACKAGES "build-dependencies libtool autoconf automake gcc gcc-doc g++ make py3-pip py-pip zlib-dev python3 python3-dev libffi-dev build-base gcc git ffmpeg binutils openssl-dev zlib-dev boost boost-dev" + +RUN apk update && \ + apk add --no-cache --virtual ${PACKAGES} + +# To add more packages +# RUN apk add PACKAGE_NAME + +RUN yarn + +ENTRYPOINT ["yarn", "start"] diff --git a/dockerfiles/blank.dockerfile b/dockerfiles/render/blank.dockerfile similarity index 96% rename from dockerfiles/blank.dockerfile rename to dockerfiles/render/blank.dockerfile index 5c54af86..b288071d 100644 --- a/dockerfiles/blank.dockerfile +++ b/dockerfiles/render/blank.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init ### Add here the linux distribution you want to use ### ### Example: FROM alpine:latest ### diff --git a/dockerfiles/bun.dockerfile b/dockerfiles/render/bun.dockerfile similarity index 89% rename from dockerfiles/bun.dockerfile rename to dockerfiles/render/bun.dockerfile index 4df43a69..56a969bc 100644 --- a/dockerfiles/bun.dockerfile +++ b/dockerfiles/render/bun.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM jarredsumner/bun:edge diff --git a/dockerfiles/c-discord.dockerfile b/dockerfiles/render/c-discord.dockerfile similarity index 82% rename from dockerfiles/c-discord.dockerfile rename to dockerfiles/render/c-discord.dockerfile index c63eeb1a..170fc134 100644 --- a/dockerfiles/c-discord.dockerfile +++ b/dockerfiles/render/c-discord.dockerfile @@ -2,11 +2,11 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM botwayorg/concord -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/cargo.dockerfile b/dockerfiles/render/cargo.dockerfile similarity index 90% rename from dockerfiles/cargo.dockerfile rename to dockerfiles/render/cargo.dockerfile index b1bf0354..22324e88 100644 --- a/dockerfiles/cargo.dockerfile +++ b/dockerfiles/render/cargo.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM rust:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libress RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/cmake-discord.dockerfile b/dockerfiles/render/cmake-discord.dockerfile similarity index 92% rename from dockerfiles/cmake-discord.dockerfile rename to dockerfiles/render/cmake-discord.dockerfile index 362f74c4..43128f1b 100644 --- a/dockerfiles/cmake-discord.dockerfile +++ b/dockerfiles/render/cmake-discord.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM brainboxdotcc/dpp:latest diff --git a/dockerfiles/cmake-telegram.dockerfile b/dockerfiles/render/cmake-telegram.dockerfile similarity index 95% rename from dockerfiles/cmake-telegram.dockerfile rename to dockerfiles/render/cmake-telegram.dockerfile index 4eb3de6f..cdc47562 100644 --- a/dockerfiles/cmake-telegram.dockerfile +++ b/dockerfiles/render/cmake-telegram.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM reo7sp/tgbot-cpp:latest diff --git a/dockerfiles/crystal.dockerfile b/dockerfiles/render/crystal.dockerfile similarity index 90% rename from dockerfiles/crystal.dockerfile rename to dockerfiles/render/crystal.dockerfile index ef2fb351..16ffb9f8 100644 --- a/dockerfiles/crystal.dockerfile +++ b/dockerfiles/render/crystal.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM crystallang/crystal:nightly-alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base gcc git libsodium opus ffmpeg binuti RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/csharp.dockerfile b/dockerfiles/render/csharp.dockerfile similarity index 88% rename from dockerfiles/csharp.dockerfile rename to dockerfiles/render/csharp.dockerfile index 18b0a028..0fe5db6c 100644 --- a/dockerfiles/csharp.dockerfile +++ b/dockerfiles/render/csharp.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM mcr.microsoft.com/dotnet/sdk:6.0-alpine AS build @@ -25,9 +25,9 @@ ENV \ PACKAGES="build-dependencies build-base gcc git libsodium opus ffmpeg icu-libs binutils openssl-dev zlib-dev boost boost-dev" RUN apk update && \ - apk add --no-cache --virtual ${PACKAGES} + apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=build /app /app diff --git a/dockerfiles/dart.dockerfile b/dockerfiles/render/dart.dockerfile similarity index 88% rename from dockerfiles/dart.dockerfile rename to dockerfiles/render/dart.dockerfile index b48b9ec5..a3c4dee0 100644 --- a/dockerfiles/dart.dockerfile +++ b/dockerfiles/render/dart.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM dart:stable diff --git a/dockerfiles/deno.dockerfile b/dockerfiles/render/deno.dockerfile similarity index 89% rename from dockerfiles/deno.dockerfile rename to dockerfiles/render/deno.dockerfile index 3cbb768e..a4adfa9d 100644 --- a/dockerfiles/deno.dockerfile +++ b/dockerfiles/render/deno.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM denoland/deno:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base gcc git ffmpeg curl binutils openssl RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/fleet.dockerfile b/dockerfiles/render/fleet.dockerfile similarity index 83% rename from dockerfiles/fleet.dockerfile rename to dockerfiles/render/fleet.dockerfile index fa087c1d..b03d3e0c 100644 --- a/dockerfiles/fleet.dockerfile +++ b/dockerfiles/render/fleet.dockerfile @@ -2,13 +2,13 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM botwayorg/fleet-rs:latest RUN apk update -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/go.dockerfile b/dockerfiles/render/go.dockerfile similarity index 89% rename from dockerfiles/go.dockerfile rename to dockerfiles/render/go.dockerfile index f5d844ed..3df0aa63 100644 --- a/dockerfiles/go.dockerfile +++ b/dockerfiles/render/go.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM golang:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base gcc git binutils openssl-dev zlib-de RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/gradle.dockerfile b/dockerfiles/render/gradle.dockerfile similarity index 90% rename from dockerfiles/gradle.dockerfile rename to dockerfiles/render/gradle.dockerfile index 35cefa4a..9544f7ac 100644 --- a/dockerfiles/gradle.dockerfile +++ b/dockerfiles/render/gradle.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM gradle:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libress RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/nim.dockerfile b/dockerfiles/render/nim.dockerfile similarity index 90% rename from dockerfiles/nim.dockerfile rename to dockerfiles/render/nim.dockerfile index 24dc4333..73d34fc4 100644 --- a/dockerfiles/nim.dockerfile +++ b/dockerfiles/render/nim.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM nimlang/nim:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libress RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY . . diff --git a/dockerfiles/npm.dockerfile b/dockerfiles/render/npm.dockerfile similarity index 90% rename from dockerfiles/npm.dockerfile rename to dockerfiles/render/npm.dockerfile index 16b3ec53..69da380e 100644 --- a/dockerfiles/npm.dockerfile +++ b/dockerfiles/render/npm.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM node:alpine @@ -15,7 +15,7 @@ COPY . . RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME RUN npm i diff --git a/dockerfiles/php.dockerfile b/dockerfiles/render/php.dockerfile similarity index 90% rename from dockerfiles/php.dockerfile rename to dockerfiles/render/php.dockerfile index 68603da7..c7dafee9 100644 --- a/dockerfiles/php.dockerfile +++ b/dockerfiles/render/php.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM php:alpine FROM composer @@ -12,7 +12,7 @@ ENV PACKAGES "build-dependencies build-base openssl openssl-dev musl-dev libress RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/pip.dockerfile b/dockerfiles/render/pip.dockerfile similarity index 86% rename from dockerfiles/pip.dockerfile rename to dockerfiles/render/pip.dockerfile index ace80dd2..d5b8174f 100644 --- a/dockerfiles/pip.dockerfile +++ b/dockerfiles/render/pip.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM python:alpine @@ -11,14 +11,13 @@ ENV PACKAGES "build-dependencies build-base gcc abuild binutils py-pip binutils- RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway COPY . . -RUN botway init --docker RUN pip3 install -r requirements.txt ENTRYPOINT ["python3", "./src/main.py"] diff --git a/dockerfiles/pipenv.dockerfile b/dockerfiles/render/pipenv.dockerfile similarity index 89% rename from dockerfiles/pipenv.dockerfile rename to dockerfiles/render/pipenv.dockerfile index 7b33ad7e..6e498a06 100644 --- a/dockerfiles/pipenv.dockerfile +++ b/dockerfiles/render/pipenv.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM python:alpine @@ -15,20 +15,20 @@ COPY . . RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME # Install pyenv RUN pip install tld --ignore-installed six distlib --user + RUN curl https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash -# these need to go into your .bashrc + ENV PATH="/root/.pyenv/bin:$PATH" RUN echo 'eval "$(pyenv init -)"' >> ~/.bashrc RUN echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc RUN /bin/bash -c "bash" # Install pipenv and deps -RUN botway init --docker RUN curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python3 RUN pipenv lock RUN pipenv sync --system diff --git a/dockerfiles/pnpm.dockerfile b/dockerfiles/render/pnpm.dockerfile similarity index 91% rename from dockerfiles/pnpm.dockerfile rename to dockerfiles/render/pnpm.dockerfile index f4ddc242..17062850 100644 --- a/dockerfiles/pnpm.dockerfile +++ b/dockerfiles/render/pnpm.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM node:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies libtool autoconf automake gcc gcc-doc g++ make RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/poetry.dockerfile b/dockerfiles/render/poetry.dockerfile similarity index 94% rename from dockerfiles/poetry.dockerfile rename to dockerfiles/render/poetry.dockerfile index fe5930a7..6c928101 100644 --- a/dockerfiles/poetry.dockerfile +++ b/dockerfiles/render/poetry.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM python:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base gcc abuild binutils binutils-doc gcc RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/ruby.dockerfile b/dockerfiles/render/ruby.dockerfile similarity index 90% rename from dockerfiles/ruby.dockerfile rename to dockerfiles/render/ruby.dockerfile index 797a4249..bccfde1a 100644 --- a/dockerfiles/ruby.dockerfile +++ b/dockerfiles/render/ruby.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM ruby:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies build-base gcc git libsodium opus ffmpeg binuti RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/dockerfiles/swift.dockerfile b/dockerfiles/render/swift.dockerfile similarity index 78% rename from dockerfiles/swift.dockerfile rename to dockerfiles/render/swift.dockerfile index 10d5d61f..5e4e9ae9 100644 --- a/dockerfiles/swift.dockerfile +++ b/dockerfiles/render/swift.dockerfile @@ -2,13 +2,16 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM swift:latest RUN apt-get update -y && \ apt-get install -y libopus-dev opus-tools git gcc libffi-dev python-dev ffmpeg build-essential autoconf automake libtool m4 youtube-dl libcurl4-openssl-dev +# To add more packages +# RUN apt-get install -y PACKAGE_NAME + RUN swift build ENTRYPOINT [ "./.build/debug/{{.BotName}}" ] diff --git a/dockerfiles/yarn.dockerfile b/dockerfiles/render/yarn.dockerfile similarity index 90% rename from dockerfiles/yarn.dockerfile rename to dockerfiles/render/yarn.dockerfile index 66d9f0cf..f2d1f6fe 100644 --- a/dockerfiles/yarn.dockerfile +++ b/dockerfiles/render/yarn.dockerfile @@ -2,7 +2,7 @@ FROM botwayorg/botway:latest AS bw COPY . . -RUN botway init --docker +RUN botway docker-init FROM node:alpine @@ -11,7 +11,7 @@ ENV PACKAGES "build-dependencies libtool autoconf automake gcc gcc-doc g++ make RUN apk update && \ apk add --no-cache --virtual ${PACKAGES} -# Add packages you want +# To add more packages # RUN apk add PACKAGE_NAME COPY --from=bw /root/.botway /root/.botway diff --git a/internal/pipes/initx/docker.go b/internal/pipes/initx/docker.go index 8d261f20..2df2e7de 100755 --- a/internal/pipes/initx/docker.go +++ b/internal/pipes/initx/docker.go @@ -8,12 +8,91 @@ import ( "strings" "github.com/abdfnx/botway/constants" + "github.com/abdfnx/botway/tools" "github.com/abdfnx/botwaygo" "github.com/abdfnx/tran/dfs" "github.com/spf13/viper" "github.com/tidwall/gjson" ) +func SetupTokensInDocker() { + tools.CheckDir() + + var ( + botType = botwaygo.GetBotInfo("bot.type") + + bot_token = "" + app_token = "" + signing_secret = "SLACK_SIGNING_SECRET" + ) + + if botType == "discord" { + bot_token = "DISCORD_TOKEN" + app_token = "DISCORD_CLIENT_ID" + } else if botType == "slack" { + bot_token = "SLACK_TOKEN" + app_token = "SLACK_APP_TOKEN" + } else if botType == "telegram" { + bot_token = "TELEGRAM_TOKEN" + } + + env := viper.New() + + pwd, _ := os.Getwd() + + env.AddConfigPath(filepath.Join(pwd, "config")) + env.SetConfigName("botway-tokens") + env.SetConfigType("env") + + env.SetDefault(bot_token, os.Getenv(bot_token)) + + if botType != "telegram" { + env.SetDefault(app_token, os.Getenv(bot_token)) + } + + if botType == "discord" { + if constants.Gerr != nil { + panic(constants.Gerr) + } else { + guilds := gjson.Get(string(constants.Guilds), "guilds.#") + + for x := 0; x < int(guilds.Int()); x++ { + server := gjson.Get(string(constants.Guilds), "guilds."+fmt.Sprint(x)).String() + + sgi := strings.ToUpper(server) + "_GUILD_ID" + + env.Set(sgi, os.Getenv(sgi)) + } + } + } + + if botType == "slack" { + env.SetDefault(signing_secret, os.Getenv(signing_secret)) + } + + if err := env.SafeWriteConfig(); err != nil { + if os.IsNotExist(err) { + err = env.WriteConfig() + + if err != nil { + panic(err) + } + } + } + + if err := env.ReadInConfig(); err != nil { + if _, ok := err.(viper.ConfigFileNotFoundError); ok { + panic(err) + } + } +} + +func CopyConfig() { + tools.Copy(constants.BotwayConfigFile, "botway.json") + + fmt.Println(constants.HEADING + constants.BOLD.Render("Done 🐋️")) +} + func DockerInit() { err := dfs.CreateDirectory(filepath.Join(constants.HomeDir, ".botway")) @@ -43,15 +122,18 @@ func DockerInit() { bot_token = "TELEGRAM_TOKEN" } - viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+".bot_token", os.Getenv(bot_token)) + env := viper.New() + env.SetConfigType("env") + + viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+".bot_token", env.GetString(bot_token)) viper.SetDefault("botway.bots_names", []string{botwaygo.GetBotInfo("bot.name")}) if botType != "telegram" { - viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+"."+cid, os.Getenv(app_token)) + viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+"."+cid, env.GetString(app_token)) } if botType == "slack" { - viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+".signing_secret", os.Getenv(signing_secret)) + viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+".signing_secret", env.GetString(signing_secret)) } if botType == "discord" { @@ -65,7 +147,7 @@ func DockerInit() { sgi := strings.ToUpper(server) + "_GUILD_ID" - viper.Set("botway.bots."+botwaygo.GetBotInfo("bot.name")+".guilds."+server+".server_id", os.Getenv(sgi)) + viper.Set("botway.bots."+botwaygo.GetBotInfo("bot.name")+".guilds."+server+".server_id", env.GetString(sgi)) } } } @@ -88,3 +170,7 @@ func DockerInit() { fmt.Println(constants.HEADING + constants.BOLD.Render("Done 🐋️")) } + +func RemoveConfig() { + os.Remove(filepath.Join("config", "botway-tokens.env")) +} diff --git a/internal/railway/deploy.go b/internal/railway/deploy.go index c56f3ad1..02cda37c 100644 --- a/internal/railway/deploy.go +++ b/internal/railway/deploy.go @@ -1,116 +1,25 @@ package railway import ( - "bytes" "context" - "encoding/json" "fmt" "io/ioutil" - "log" "os" - "strings" "time" "github.com/abdfnx/botway/constants" + "github.com/abdfnx/botway/internal/pipes/initx" "github.com/abdfnx/botwaygo" "github.com/botwayorg/railway-api/entity" CLIErrors "github.com/botwayorg/railway-api/errors" "github.com/botwayorg/railway-api/ui" "github.com/briandowns/spinner" - "github.com/spf13/viper" - "github.com/tidwall/gjson" ) -func (h *Handler) DockerInit(ctx context.Context, req *entity.CommandRequest) error { - envs, err := h.ctrl.GetEnvsForCurrentEnvironment(ctx, nil) - if err != nil { - return err - } - - encoded, err := json.MarshalIndent(envs, "", " ") - if err != nil { - return err - } - - botEnv := viper.New() - - botEnv.SetConfigType("json") - botEnv.ReadConfig(bytes.NewBuffer(encoded)) - - viper.AddConfigPath(".") - viper.SetConfigName("botway") - viper.SetConfigType("json") - - botType := botwaygo.GetBotInfo("bot.type") - botToken := "" - appToken := "" - signingSecret := "SLACK_SIGNING_SECRET" - cid := "" - - if botType == "discord" { - botToken = "DISCORD_TOKEN" - appToken = "DISCORD_CLIENT_ID" - cid = "bot_app_id" - } else if botType == "slack" { - botToken = "SLACK_TOKEN" - appToken = "SLACK_APP_TOKEN" - cid = "bot_app_token" - } else if botType == "telegram" { - botToken = "TELEGRAM_TOKEN" - } - - viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+".bot_token", botEnv.GetString(botToken)) - viper.SetDefault("botway.bots_names", []string{botwaygo.GetBotInfo("bot.name")}) - - if botType != "telegram" { - viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+"."+cid, botEnv.GetString(appToken)) - } - - if botType == "slack" { - viper.SetDefault("botway.bots."+botwaygo.GetBotInfo("bot.name")+".signing_secret", botEnv.GetString(signingSecret)) - } - - if botType == "discord" { - if constants.Gerr != nil { - panic(constants.Gerr) - } else { - guilds := gjson.Get(string(constants.Guilds), "guilds.#") - - for x := 0; x < int(guilds.Int()); x++ { - server := gjson.Get(string(constants.Guilds), "guilds."+fmt.Sprint(x)).String() - - sgi := strings.ToUpper(server) + "_GUILD_ID" - - viper.Set("botway.bots."+botwaygo.GetBotInfo("bot.name")+".guilds."+server+".server_id", botEnv.GetString(sgi)) - } - } - } - - if err := viper.SafeWriteConfig(); err != nil { - if os.IsNotExist(err) { - err = viper.WriteConfig() - - if err != nil { - log.Fatal(err) - } - } - } - - if err := viper.ReadInConfig(); err != nil { - if _, ok := err.(viper.ConfigFileNotFoundError); ok { - log.Fatal(err) - } - } - - fmt.Println(constants.HEADING + constants.BOLD.Render("Done 🐋️")) - - return nil -} - func (h *Handler) Delpoy(ctx context.Context, req *entity.CommandRequest) error { CheckBuildKit() - h.DockerInit(ctx, req) + initx.CopyConfig() isVerbose, err := req.Cmd.Flags().GetBool("verbose") if err != nil {