mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-06 03:20:13 +08:00
refactor: update project root detection and quest directory path
This commit is contained in:
1 parent
fbe1319183
commit
cb1e395579
2 files changed
+17
-4
No files matched your search
+15
-3
@@ -1,8 +1,9 @@
|
||||
import validator from 'validator'
|
||||
import { config as dotenvConfig } from 'dotenv'
|
||||
import path from 'path'
|
||||
import { get } from './utils/env.js'
|
||||
import fs from 'fs'
|
||||
import { loadOrCreateKeyPair } from './utils/crypto.js'
|
||||
import { get } from './utils/env.js'
|
||||
|
||||
// Import dotenv and load ../.env
|
||||
dotenvConfig({ path: '../.env' })
|
||||
@@ -92,8 +93,19 @@ function createConfig() {
|
||||
}
|
||||
|
||||
function getProjectRoot(): string {
|
||||
const root = path.join(path.dirname(__filename), '..', '..')
|
||||
return root
|
||||
// Start from the current file's directory
|
||||
let currentDir = __dirname
|
||||
|
||||
// Keep going up until we find the root package.json with workspaces
|
||||
while (currentDir !== path.parse(currentDir).root) {
|
||||
const packageJsonPath = path.join(currentDir, 'package.json')
|
||||
if (fs.existsSync(packageJsonPath)) {
|
||||
return path.join(currentDir, '..')
|
||||
}
|
||||
currentDir = path.dirname(currentDir)
|
||||
}
|
||||
|
||||
throw new Error('Could not find project root directory')
|
||||
}
|
||||
|
||||
const config = createConfig()
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
IQuest,
|
||||
} from '../../../packages/game'
|
||||
import logger from '../utils/logger.js'
|
||||
import config from '../config.js'
|
||||
|
||||
class QuestValidationError extends Error {
|
||||
questId: string
|
||||
@@ -37,7 +38,7 @@ class QuestValidationError extends Error {
|
||||
|
||||
class QuestManager {
|
||||
private quests = new Map<string, IQuest>()
|
||||
private questDirectory = path.join(process.cwd(), '..', 'quests')
|
||||
private questDirectory = path.join(config.projectRoot, 'quests')
|
||||
|
||||
get(id: string) {
|
||||
return this.quests.get(id)
|
||||
|
||||
Reference in new issue
Block a user