mirror of
https://github.com/kevinthedang/discord-ollama.git
synced 2025-12-12 19:56:06 -05:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2caf54346a | ||
|
|
6e6467c2a5 | ||
|
|
b463b0a8cb | ||
|
|
42ef38db14 | ||
|
|
af23db20bb | ||
|
|
117b195095 | ||
|
|
b361636a93 | ||
|
|
4dbd45bccd | ||
|
|
02ffb6a196 | ||
|
|
060494e883 |
@@ -1,9 +1,6 @@
|
|||||||
# Discord token for the bot
|
# Discord token for the bot
|
||||||
CLIENT_TOKEN = BOT_TOKEN
|
CLIENT_TOKEN = BOT_TOKEN
|
||||||
|
|
||||||
# id token of a discord server
|
|
||||||
GUILD_ID = GUILD_ID
|
|
||||||
|
|
||||||
# model for the bot to query from (i.e. llama2 [llama2:13b], mistral, codellama, etc... )
|
# model for the bot to query from (i.e. llama2 [llama2:13b], mistral, codellama, etc... )
|
||||||
MODEL = MODEL_NAME
|
MODEL = MODEL_NAME
|
||||||
|
|
||||||
|
|||||||
20
.github/workflows/build.yml
vendored
20
.github/workflows/build.yml
vendored
@@ -1,21 +1,9 @@
|
|||||||
name: Builds
|
name: Builds
|
||||||
run-name: Validate Node and Docker Builds
|
run-name: Validate Node and Docker Builds
|
||||||
on:
|
on:
|
||||||
pull_request:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master # runs after Pull Request is merged
|
||||||
paths:
|
|
||||||
- '*'
|
|
||||||
- 'package*.json'
|
|
||||||
- 'src/**'
|
|
||||||
- 'tests/**'
|
|
||||||
- '!docs/**'
|
|
||||||
- '!imgs/**'
|
|
||||||
- '!.github/**'
|
|
||||||
- '.github/workflows/**'
|
|
||||||
- '!.gitignore'
|
|
||||||
- '!LICENSE'
|
|
||||||
- '!README'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Discord-Node-Build: # test if the node install and run
|
Discord-Node-Build: # test if the node install and run
|
||||||
@@ -43,7 +31,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo GUILD_ID = ${{ secrets.GUILD_ID }} >> .env
|
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
@@ -72,7 +59,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo GUILD_ID = ${{ secrets.GUILD_ID }} >> .env
|
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
@@ -84,7 +70,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Check Images Exist
|
- name: Check Images Exist
|
||||||
run: |
|
run: |
|
||||||
(docker images | grep -q 'discord/bot' && docker images | grep -qE 'ollama/ollama') || exit 1
|
(docker images | grep -q 'kevinthedang/discord-ollama' && docker images | grep -qE 'ollama/ollama') || exit 1
|
||||||
|
|
||||||
- name: Check Containers Exist
|
- name: Check Containers Exist
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
50
.github/workflows/release.yml
vendored
Normal file
50
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Deploy
|
||||||
|
run-name: Release Docker Image
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Release-Docker-Image:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment: release
|
||||||
|
timeout-minutes: 3
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Node Environment lts/hydrogen
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: lts/hydrogen
|
||||||
|
cache: "npm"
|
||||||
|
|
||||||
|
- name: Create Environment Variables
|
||||||
|
run: |
|
||||||
|
touch .env
|
||||||
|
echo CLIENT_TOKEN = NOT_REAL_TOKEN >> .env
|
||||||
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
|
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
||||||
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
|
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
||||||
|
|
||||||
|
- name: Get Version from package.json
|
||||||
|
run: echo "VERSION=$(jq -r '.version' package.json)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Build Image
|
||||||
|
run: |
|
||||||
|
npm run docker:build
|
||||||
|
|
||||||
|
- name: Build Image as Latest
|
||||||
|
run: |
|
||||||
|
npm run docker:build-latest
|
||||||
|
|
||||||
|
- name: Log into Docker
|
||||||
|
run: |
|
||||||
|
docker login --username ${{ vars.DOCKER_USER }} --password ${{ secrets.DOCKER_PASS }}
|
||||||
|
|
||||||
|
- name: Release Docker Image
|
||||||
|
run: |
|
||||||
|
docker push ${{ vars.DOCKER_USER }}/discord-ollama:${{ env.VERSION }}
|
||||||
|
docker push ${{ vars.DOCKER_USER }}/discord-ollama:latest
|
||||||
32
.github/workflows/test.yml
vendored
32
.github/workflows/test.yml
vendored
@@ -39,7 +39,6 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
touch .env
|
touch .env
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
||||||
echo GUILD_ID = ${{ secrets.GUILD_ID }} >> .env
|
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
echo MODEL = ${{ secrets.MODEL }} >> .env
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
||||||
@@ -48,34 +47,3 @@ jobs:
|
|||||||
- name: Test Application
|
- name: Test Application
|
||||||
run: |
|
run: |
|
||||||
npm run test:run
|
npm run test:run
|
||||||
|
|
||||||
Discord-Ollama-Container-Test:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
timeout-minutes: 2
|
|
||||||
steps:
|
|
||||||
- name: Checkout Repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set up Node Environment lts/hydrogen
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: lts/hydrogen
|
|
||||||
cache: "npm"
|
|
||||||
|
|
||||||
- name: Create Environment Variables
|
|
||||||
run: |
|
|
||||||
touch .env
|
|
||||||
echo CLIENT_TOKEN = ${{ secrets.BOT_TOKEN }} >> .env
|
|
||||||
echo GUILD_ID = ${{ secrets.GUILD_ID }} >> .env
|
|
||||||
echo MODEL = ${{ secrets.MODEL }} >> .env
|
|
||||||
echo CLIENT_UID = ${{ secrets.CLIENT_UID }} >> .env
|
|
||||||
echo OLLAMA_IP = ${{ secrets.OLLAMA_IP }} >> .env
|
|
||||||
echo OLLAMA_PORT = ${{ secrets.OLLAMA_PORT }} >> .env
|
|
||||||
|
|
||||||
- name: Setup Docker Network and Images
|
|
||||||
run: |
|
|
||||||
npm run docker:start-cpu
|
|
||||||
|
|
||||||
- name: Test Docker Container
|
|
||||||
run: |
|
|
||||||
npm run docker:test
|
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
<p><a href="#"></a><a href="https://creativecommons.org/licenses/by/4.0/"><img alt="License" src="https://img.shields.io/badge/License-CC_BY_4.0-darkgreen.svg" /></a>
|
<p><a href="#"></a><a href="https://creativecommons.org/licenses/by/4.0/"><img alt="License" src="https://img.shields.io/badge/License-CC_BY_4.0-darkgreen.svg" /></a>
|
||||||
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/kevinthedang/discord-ollama?logo=github" /></a>
|
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/releases/latest"><img alt="Release" src="https://img.shields.io/github/v/release/kevinthedang/discord-ollama?logo=github" /></a>
|
||||||
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/actions/workflows/build.yml"><img alt="Build Status" src="https://github.com/kevinthedang/discord-ollama/actions/workflows/build.yml/badge.svg" /></a>
|
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/actions/workflows/build.yml"><img alt="Build Status" src="https://github.com/kevinthedang/discord-ollama/actions/workflows/build.yml/badge.svg" /></a>
|
||||||
|
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/actions/workflows/release.yml"><img alt="Release Status" src="https://github.com/kevinthedang/discord-ollama/actions/workflows/release.yml/badge.svg" /></a>
|
||||||
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/actions/workflows/test.yml"><img alt="Testing Status" src="https://github.com/kevinthedang/discord-ollama/actions/workflows/test.yml/badge.svg" /></a>
|
<a href="#"></a><a href="https://github.com/kevinthedang/discord-ollama/actions/workflows/test.yml"><img alt="Testing Status" src="https://github.com/kevinthedang/discord-ollama/actions/workflows/test.yml/badge.svg" /></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,9 @@ services:
|
|||||||
build: ./ # find docker file in designated path
|
build: ./ # find docker file in designated path
|
||||||
container_name: discord
|
container_name: discord
|
||||||
restart: always # rebuild container always
|
restart: always # rebuild container always
|
||||||
image: discord/bot:0.5.6
|
image: kevinthedang/discord-ollama:0.5.10
|
||||||
environment:
|
environment:
|
||||||
CLIENT_TOKEN: ${CLIENT_TOKEN}
|
CLIENT_TOKEN: ${CLIENT_TOKEN}
|
||||||
GUILD_ID: ${GUILD_ID}
|
|
||||||
MODEL: ${MODEL}
|
MODEL: ${MODEL}
|
||||||
CLIENT_UID: ${CLIENT_UID}
|
CLIENT_UID: ${CLIENT_UID}
|
||||||
OLLAMA_IP: ${OLLAMA_IP}
|
OLLAMA_IP: ${OLLAMA_IP}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
## To Run Locally (without Docker)
|
## To Run Locally (without Docker)
|
||||||
* Run `npm install` to install the npm packages.
|
* Run `npm install` to install the npm packages.
|
||||||
* Ensure that your [.env](../.env.sample) file's `OLLAMA_IP` is `127.0.0.1` to work properly.
|
* Ensure that your [.env](../.env.sample) file's `OLLAMA_IP` is `127.0.0.1` to work properly.
|
||||||
* You only need your `CLIENT_TOKEN`, `GUILD_ID`, `MODEL`, `CLIENT_UID`, `OLLAMA_IP`, `OLLAMA_PORT`.
|
* You only need your `CLIENT_TOKEN`, `MODEL`, `CLIENT_UID`, `OLLAMA_IP`, `OLLAMA_PORT`.
|
||||||
* The ollama ip and port should just use it's defaults by nature. If not, utilize `OLLAMA_IP = 127.0.0.1` and `OLLAMA_PORT = 11434`.
|
* The ollama ip and port should just use it's defaults by nature. If not, utilize `OLLAMA_IP = 127.0.0.1` and `OLLAMA_PORT = 11434`.
|
||||||
* Now, you can run the bot by running `npm run client` which will build and run the decompiled typescript and run the setup for ollama.
|
* Now, you can run the bot by running `npm run client` which will build and run the decompiled typescript and run the setup for ollama.
|
||||||
* **IMPORTANT**: This must be ran in the wsl/Linux instance to work properly! Using Command Prompt/Powershell/Git Bash/etc. will not work on Windows (at least in my experience).
|
* **IMPORTANT**: This must be ran in the wsl/Linux instance to work properly! Using Command Prompt/Powershell/Git Bash/etc. will not work on Windows (at least in my experience).
|
||||||
|
|||||||
961
package-lock.json
generated
961
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
18
package.json
18
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "discord-ollama",
|
"name": "discord-ollama",
|
||||||
"version": "0.5.6",
|
"version": "0.5.10",
|
||||||
"description": "Ollama Integration into discord",
|
"description": "Ollama Integration into discord",
|
||||||
"main": "build/index.js",
|
"main": "build/index.js",
|
||||||
"exports": "./build/index.js",
|
"exports": "./build/index.js",
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
"docker:start-cpu": "npm run docker:network && npm run docker:build && npm run docker:client && npm run docker:ollama-cpu",
|
"docker:start-cpu": "npm run docker:network && npm run docker:build && npm run docker:client && npm run docker:ollama-cpu",
|
||||||
"docker:clean": "docker rm -f discord && docker rm -f ollama && docker rmi $(docker images --filter \"dangling=true\" -q --no-trunc)",
|
"docker:clean": "docker rm -f discord && docker rm -f ollama && docker rmi $(docker images --filter \"dangling=true\" -q --no-trunc)",
|
||||||
"docker:network": "docker network create --subnet=172.18.0.0/16 ollama-net",
|
"docker:network": "docker network create --subnet=172.18.0.0/16 ollama-net",
|
||||||
"docker:build": "docker build --no-cache -t discord/bot:$(node -p \"require('./package.json').version\") .",
|
"docker:build": "docker build --no-cache -t kevinthedang/discord-ollama:$(node -p \"require('./package.json').version\") .",
|
||||||
"docker:test": "docker run -d --rm -v discord:/src/app --name test discord/bot:$(node -p \"require('./package.json').version\") npm run test:run",
|
"docker:build-latest": "docker build --no-cache -t kevinthedang/discord-ollama:latest .",
|
||||||
"docker:client": "docker run -d -v discord:/src/app --name discord --network ollama-net --ip 172.18.0.3 discord/bot:$(node -p \"require('./package.json').version\")",
|
"docker:client": "docker run -d -v discord:/src/app --name discord --network ollama-net --ip 172.18.0.3 kevinthedang/discord-ollama:$(node -p \"require('./package.json').version\")",
|
||||||
"docker:ollama": "docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama --network ollama-net --ip 172.18.0.2 ollama/ollama:latest",
|
"docker:ollama": "docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama --network ollama-net --ip 172.18.0.2 ollama/ollama:latest",
|
||||||
"docker:ollama-cpu": "docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama --network ollama-net --ip 172.18.0.2 ollama/ollama:latest"
|
"docker:ollama-cpu": "docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama --network ollama-net --ip 172.18.0.2 ollama/ollama:latest"
|
||||||
},
|
},
|
||||||
@@ -29,16 +29,16 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^14.15.3",
|
"discord.js": "^14.15.3",
|
||||||
"dotenv": "^16.4.5",
|
"dotenv": "^16.4.5",
|
||||||
"ollama": "^0.5.6"
|
"ollama": "^0.5.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.14.12",
|
"@types/node": "^22.5.1",
|
||||||
"@vitest/coverage-v8": "^2.0.4",
|
"@vitest/coverage-v8": "^2.0.5",
|
||||||
"nodemon": "^3.1.4",
|
"nodemon": "^3.1.4",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
"tsx": "^4.16.2",
|
"tsx": "^4.19.0",
|
||||||
"typescript": "^5.5.4",
|
"typescript": "^5.5.4",
|
||||||
"vitest": "^2.0.4"
|
"vitest": "^2.0.5"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const Capacity: SlashCommand = {
|
|||||||
run: async (client: Client, interaction: CommandInteraction) => {
|
run: async (client: Client, interaction: CommandInteraction) => {
|
||||||
// fetch channel and message
|
// fetch channel and message
|
||||||
const channel = await client.channels.fetch(interaction.channelId)
|
const channel = await client.channels.fetch(interaction.channelId)
|
||||||
if (!channel || channel.type !== (ChannelType.PublicThread && ChannelType.GuildText)) return
|
if (!channel || channel.type !== (ChannelType.PrivateThread && ChannelType.PublicThread && ChannelType.GuildText)) return
|
||||||
|
|
||||||
// set state of bot chat features
|
// set state of bot chat features
|
||||||
openConfig(`${interaction.user.username}-config.json`, interaction.commandName, interaction.options.get('context-capacity')?.value)
|
openConfig(`${interaction.user.username}-config.json`, interaction.commandName, interaction.options.get('context-capacity')?.value)
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ export const ChannelToggle: SlashCommand = {
|
|||||||
run: async (client: Client, interaction: CommandInteraction) => {
|
run: async (client: Client, interaction: CommandInteraction) => {
|
||||||
// fetch channel location
|
// fetch channel location
|
||||||
const channel = await client.channels.fetch(interaction.channelId)
|
const channel = await client.channels.fetch(interaction.channelId)
|
||||||
if (!channel || channel.type !== (ChannelType.PublicThread && ChannelType.GuildText)) return
|
if (!channel || channel.type !== (ChannelType.PrivateThread && ChannelType.PublicThread && ChannelType.GuildText)) return
|
||||||
|
|
||||||
|
|
||||||
// set state of bot channel preferences
|
// set state of bot channel preferences
|
||||||
openConfig(`${interaction.guildId}-config.json`, interaction.commandName, interaction.options.get('toggle-channel')?.value)
|
openConfig(`${interaction.guildId}-config.json`, interaction.commandName, interaction.options.get('toggle-channel')?.value)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const MessageStream: SlashCommand = {
|
|||||||
run: async (client: Client, interaction: CommandInteraction) => {
|
run: async (client: Client, interaction: CommandInteraction) => {
|
||||||
// verify channel
|
// verify channel
|
||||||
const channel = await client.channels.fetch(interaction.channelId)
|
const channel = await client.channels.fetch(interaction.channelId)
|
||||||
if (!channel || channel.type !== (ChannelType.PublicThread && ChannelType.GuildText)) return
|
if (!channel || channel.type !== (ChannelType.PrivateThread && ChannelType.PublicThread && ChannelType.GuildText)) return
|
||||||
|
|
||||||
// save value to json and write to it
|
// save value to json and write to it
|
||||||
openConfig(`${interaction.user.username}-config.json`, interaction.commandName, interaction.options.get('stream')?.value)
|
openConfig(`${interaction.user.username}-config.json`, interaction.commandName, interaction.options.get('stream')?.value)
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export const MessageStyle: SlashCommand = {
|
|||||||
run: async (client: Client, interaction: CommandInteraction) => {
|
run: async (client: Client, interaction: CommandInteraction) => {
|
||||||
// fetch channel and message
|
// fetch channel and message
|
||||||
const channel = await client.channels.fetch(interaction.channelId)
|
const channel = await client.channels.fetch(interaction.channelId)
|
||||||
if (!channel || channel.type !== (ChannelType.PublicThread && ChannelType.GuildText)) return
|
if (!channel || channel.type !== (ChannelType.PrivateThread && ChannelType.PublicThread && ChannelType.GuildText)) return
|
||||||
|
|
||||||
// set the message style
|
// set the message style
|
||||||
openConfig(`${interaction.user.username}-config.json`, interaction.commandName, interaction.options.get('embed')?.value)
|
openConfig(`${interaction.user.username}-config.json`, interaction.commandName, interaction.options.get('embed')?.value)
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ export const Keys = {
|
|||||||
clientToken: getEnvVar('CLIENT_TOKEN'),
|
clientToken: getEnvVar('CLIENT_TOKEN'),
|
||||||
model: getEnvVar('MODEL'),
|
model: getEnvVar('MODEL'),
|
||||||
clientUid: getEnvVar('CLIENT_UID'),
|
clientUid: getEnvVar('CLIENT_UID'),
|
||||||
guildId: getEnvVar('GUILD_ID'),
|
|
||||||
ipAddress: getEnvVar('OLLAMA_IP'),
|
ipAddress: getEnvVar('OLLAMA_IP'),
|
||||||
portAddress: getEnvVar('OLLAMA_PORT'),
|
portAddress: getEnvVar('OLLAMA_PORT'),
|
||||||
} as const // readonly keys
|
} as const // readonly keys
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Configuration, ServerConfig, UserConfig, isServerConfigurationKey } from '../index.js'
|
import { Configuration, ServerConfig, UserConfig, isServerConfigurationKey } from '../index.js'
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
|
import path from 'path'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to open a file in the working directory and modify/create it
|
* Method to open a file in the working directory and modify/create it
|
||||||
@@ -35,6 +36,10 @@ export function openConfig(filename: string, key: string, value: any) {
|
|||||||
[key]: value
|
[key]: value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const directory = path.dirname(fullFileName)
|
||||||
|
if (!fs.existsSync(directory))
|
||||||
|
fs.mkdirSync(directory, { recursive: true })
|
||||||
|
|
||||||
fs.writeFileSync(`data/${filename}`, JSON.stringify(object, null, 2))
|
fs.writeFileSync(`data/${filename}`, JSON.stringify(object, null, 2))
|
||||||
console.log(`[Util: openConfig] Created '${filename}' in working directory`)
|
console.log(`[Util: openConfig] Created '${filename}' in working directory`)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user