diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 477a2e6..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "recommendations": [ - "rust-lang.rust-analyzer" - ] -}w diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 5ba6802..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "rust-analyzer.linkedProjects": [ - "./Cargo.toml" - ], - "cSpell.words": [ - "Babyrite" - ], - "markdown.extension.toc.levels": "2..6" -} diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..d399ab8 --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,7 @@ +// Folder-specific settings +// +// For a full list of overridable settings, and general information on folder-specific settings, +// see the documentation: https://zed.dev/docs/configuring-zed#settings-files +{ + "format_on_save": "on" +} diff --git a/Cargo.toml b/Cargo.toml index 39dc28d..9be3665 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,11 @@ name = "idea-reaction" version = "0.6.0" edition = "2021" -description = "アイデア投稿履歴のリアクションを制限する Discord Bot" -authors = ["m1sk9 "] +description = "アイデア投稿履歴のリアクションをサポートするDiscord Bot" +authors = ["GiganticMinecraft"] +license = "MIT" +license-file = "LICENSE" +repository = "https://github.com/GiganticMinecraft/idea-reaction" [dependencies] anyhow = { version = "1.0.94" } diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..16f6314 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023-2024 GiganticMinecraft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index a23df20..14eabe6 100644 --- a/README.md +++ b/README.md @@ -7,41 +7,44 @@ ## Features -- アイデア投稿フォームに新しいアイデアが投稿された際に: - - その投稿履歴に "👍", "👎", "🤔" のリアクションを付与する - - その投稿履歴にスレッドを作成する - - その投稿履歴の Redmine Issue にスレッドへの URL をコメントする +- アイデア投稿フォームに新しいアイデアが投稿された際に: + - その投稿履歴に "👍", "👎", "🤔" のリアクションを付与する + - その投稿履歴にスレッドを作成する + - その投稿履歴の Redmine Issue にスレッドへの URL をコメントする ## Usage -- k8s 及び Docker Container 上での動作を想定しています. 整地鯖の k8s で動作するための定義は [seichi_infra](https://github.com/GiganticMinecraft/seichi_infra) で公開しています. ([定義ファイル: `seichi-onp-k8s/manifests/seichi-kubernetes/apps/seichi-minecraft/idea-reaction/idea-reaction.yaml`](https://github.com/GiganticMinecraft/seichi_infra/blob/main/seichi-onp-k8s/manifests/seichi-kubernetes/apps/seichi-minecraft/idea-reaction/idea-reaction.yaml)) -- [`compose.yaml`](./compose.yaml) を配置しているリポジトリ内に `.env` ファイルを用意し, 環境変数を設定してください. -- 設定後 `docker compose up -d` で起動できます. +- k8s 及び Docker Container 上での動作を想定しています. 整地鯖の k8s で動作するための定義は [seichi_infra](https://github.com/GiganticMinecraft/seichi_infra) で公開しています. ([定義ファイル: `seichi-onp-k8s/manifests/seichi-kubernetes/apps/seichi-minecraft/idea-reaction/idea-reaction.yaml`](https://github.com/GiganticMinecraft/seichi_infra/blob/main/seichi-onp-k8s/manifests/seichi-kubernetes/apps/seichi-minecraft/idea-reaction/idea-reaction.yaml)) +- [`compose.yaml`](./compose.yaml) を配置しているリポジトリ内に `.env` ファイルを用意し, 環境変数を設定してください. +- 設定後 `docker compose up -d` で起動できます. ## Development 1. `docker-redmine` 内の `compose.yaml` を実行し, Redmine と postgres を起動します. 2. Redmine にログインし, Issue の作成権限・更新権限を持つユーザを作成し, API Key を取得します. 3. `idea-reaction` の `.env` ファイルに以下の環境変数を追加します. - - `REDMINE_API_KEY`: Redmine の API Key - - `REDMINE_URL`: Redmine の URL (Docker 環境の場合 `http://localhost:8080` です.) + - `REDMINE_API_KEY`: Redmine の API Key + - `REDMINE_URL`: Redmine の URL (Docker 環境の場合 `http://localhost:8080` です.) 4. `cargo run` で idea-reaction を起動します. +- 環境変数 `ENV_NAME` を `production` に設定すると Sentry との連携が有効になります. 開発時は指定しないようにしてください. + ## Release (for GiganticMinecraft admin) -- idea-reaction は GitHub App (release-please などのツール) を使った自動リリースには対応していません. -- リリースをするときは `Cargo.toml` の `version` プロパティなどを bump したうえで [Actions](https://github.com/GiganticMinecraft/idea-reaction/actions/workflows/release.yaml) にある `Run workflow` から CI を実行すると ghcr.io に Docker Image がリリースされます. -- k8s 本番環境にある idea-reaction を更新する場合は `.../apps/seichi-minecraft/idea-reaction/idea-reaction.yaml` の `spec.template.spec.containers.image` の値を変更してください. - - タグ等の情報は [Packages](https://github.com/GiganticMinecraft/idea-reaction/pkgs/container/idea-reaction) +- idea-reaction は GitHub App (release-please などのツール) を使った自動リリースには対応していません. +- リリースをするときは `Cargo.toml` の `version` プロパティなどを bump したうえで [Actions](https://github.com/GiganticMinecraft/idea-reaction/actions/workflows/release.yaml) にある `Run workflow` から CI を実行すると ghcr.io に Docker Image がリリースされます. +- k8s 本番環境にある idea-reaction を更新する場合は `.../apps/seichi-minecraft/idea-reaction/idea-reaction.yaml` の `spec.template.spec.containers.image` の値を変更してください. + - タグ等の情報は [Packages](https://github.com/GiganticMinecraft/idea-reaction/pkgs/container/idea-reaction) から確認できます. ## Environment Variables -| Name | Description | -|---------------------|--------------------------------------| -| `DISCORD_API_TOKEN` | Discord Bot のトークン | +| Name | Description | +| ------------------- | ----------------------------------------------------- | +| `ENV_NAME` | 環境名 (production 以外は無視される) | +| `DISCORD_API_TOKEN` | Discord Bot のトークン | | `REDMINE_API_KEY` | Redmine の API Key (コメント機能を有効にする場合のみ) | | `REDMINE_URL` | Redmine の URL (コメント機能を有効にする場合のみ) | -| `TARGET_CHANNEL_ID` | 監視対象チャンネルのID | -| `TARGET_WEBHOOK_ID` | 監視対象WebhookのID | -| `TARGET_GUILD_ID` | 監視対象ギルドのID | +| `TARGET_CHANNEL_ID` | 監視対象チャンネルのID | +| `TARGET_WEBHOOK_ID` | 監視対象WebhookのID | +| `TARGET_GUILD_ID` | 監視対象ギルドのID |