mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-06 06:41:56 +00:00
feat: add serverUrl configuration support with settings.json fallback
Implement serverUrl initialization following the cliApiToken design pattern: - Environment variable HAPI_SERVER_URL (highest priority, allows temporary override) - settings.json serverUrl field (user persistent configuration) - Default value 'http://localhost:3006' (fallback) Changes: - Add serverUrl field to Settings interface (persistence.ts) - Convert serverUrl to private property with getter/setter (configuration.ts) - Create initializeServerUrl module to load from settings (serverUrlInit.ts) - Integrate serverUrl initialization in tokenInit flow (tokenInit.ts) - Skip auto-start when serverUrl is configured in settings (autoStartServer.ts)
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* Server URL initialization module
|
||||
*
|
||||
* Handles HAPI_SERVER_URL initialization with priority:
|
||||
* 1. Environment variable (highest - allows temporary override)
|
||||
* 2. Settings file (~/.hapi/settings.json)
|
||||
* 3. Default value (http://localhost:3006)
|
||||
*/
|
||||
|
||||
import { configuration } from '@/configuration'
|
||||
import { readSettings } from '@/persistence'
|
||||
|
||||
/**
|
||||
* Initialize server URL
|
||||
* Must be called before any API operations
|
||||
*/
|
||||
export async function initializeServerUrl(): Promise<void> {
|
||||
// 1. Environment variable has highest priority (allows temporary override)
|
||||
if (process.env.HAPI_SERVER_URL) {
|
||||
return
|
||||
}
|
||||
|
||||
// 2. Read from settings file
|
||||
const settings = await readSettings()
|
||||
if (settings.serverUrl) {
|
||||
configuration._setServerUrl(settings.serverUrl)
|
||||
return
|
||||
}
|
||||
|
||||
// 3. Default value already set in configuration constructor
|
||||
}
|
||||
@@ -12,12 +12,16 @@ import { stdin as input, stdout as output } from 'node:process'
|
||||
import chalk from 'chalk'
|
||||
import { configuration } from '@/configuration'
|
||||
import { readSettings, updateSettings } from '@/persistence'
|
||||
import { initializeServerUrl } from '@/ui/serverUrlInit'
|
||||
|
||||
/**
|
||||
* Initialize CLI API token
|
||||
* Must be called before any API operations
|
||||
*/
|
||||
export async function initializeToken(): Promise<void> {
|
||||
// Initialize server URL first (env > settings.json > default)
|
||||
await initializeServerUrl()
|
||||
|
||||
// 1. Environment variable has highest priority (allows temporary override)
|
||||
if (configuration.cliApiToken) {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user