MCPcopy Create free account
hub / github.com/VirtualHotBar/NetMount / modifyOpenlistConfig

Function modifyOpenlistConfig

src/utils/openlist/openlist.ts:209–284  ·  view source on GitHub ↗
(
  rewriteData: OpenlistConfigPartial = openlistInfo.openlistConfig
)

Source from the content-addressed store, hash-verified

207}
208
209async function modifyOpenlistConfig(
210 rewriteData: OpenlistConfigPartial = openlistInfo.openlistConfig
211) {
212 const dataDir = openlistDataDir()
213 const configPath = joinDir(dataDir, 'config.json')
214
215 // 确保数据目录及子目录存在
216 try {
217 await invoke('fs_make_dir', { path: dataDir })
218 await invoke('fs_make_dir', { path: joinDir(dataDir, 'data') })
219 await invoke('fs_make_dir', { path: joinDir(dataDir, 'log') })
220 await invoke('fs_make_dir', { path: joinDir(dataDir, 'bleve') })
221 } catch (e) {
222 // 目录可能已存在
223 }
224
225 let oldOpenlistConfig: Record<string, unknown> = {}
226 try {
227 oldOpenlistConfig = (await invoke('read_json_file', { path: configPath })) as Record<
228 string,
229 unknown
230 >
231 } catch (e) {
232 console.log('配置文件不存在或损坏,使用空配置:', e)
233 }
234
235 // 合并配置
236 const newOpenlistConfig = mergeObjects(
237 { ...(oldOpenlistConfig as Record<string, unknown>) } as unknown as OpenlistConfig,
238 rewriteData as OpenlistConfigPartial
239 ) as unknown as OpenlistConfig
240
241 // 将绝对路径转换为相对路径(基于数据目录)
242 const toRelativePath = (absolutePath: string) => {
243 if (!absolutePath) return absolutePath
244 // 如果已经是相对路径,直接返回
245 if (!isAbsolutePath(absolutePath)) {
246 return absolutePath
247 }
248 // 将路径标准化为使用正斜杠
249 const normalizedPath = absolutePath.replace(/\\/g, '/')
250 let normalizedDataDir = dataDir.replace(/\\/g, '/')
251 // 确保数据目录以斜杠结尾,避免错误匹配
252 if (!normalizedDataDir.endsWith('/')) {
253 normalizedDataDir += '/'
254 }
255 // 如果路径以数据目录开头,转换为相对路径
256 if (normalizedPath.startsWith(normalizedDataDir)) {
257 const relativePath = normalizedPath.substring(normalizedDataDir.length)
258 return relativePath.startsWith('/') ? relativePath.substring(1) : relativePath
259 }
260 return absolutePath
261 }
262
263 // 转换数据库路径为相对路径
264 if (newOpenlistConfig.database?.db_file) {
265 newOpenlistConfig.database.db_file = toRelativePath(newOpenlistConfig.database.db_file)
266 }

Callers 1

startOpenlistFunction · 0.90

Calls 4

mergeObjectsFunction · 0.90
openlistDataDirFunction · 0.85
joinDirFunction · 0.85
toRelativePathFunction · 0.85

Tested by

no test coverage detected