mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-15 17:56:21 +01:00
✨ Add migration for multiple widgets
This commit is contained in:
@@ -1,9 +1,13 @@
|
|||||||
import Consola from 'consola';
|
import Consola from 'consola';
|
||||||
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { BackendConfigType, ConfigType } from '../../types/config';
|
import { BackendConfigType, ConfigType } from '../../types/config';
|
||||||
import { backendMigrateConfig } from './backendMigrateConfig';
|
import { backendMigrateConfig } from './backendMigrateConfig';
|
||||||
import { configExists } from './configExists';
|
import { configExists } from './configExists';
|
||||||
import { getFallbackConfig } from './getFallbackConfig';
|
import { getFallbackConfig } from './getFallbackConfig';
|
||||||
import { readConfig } from './readConfig';
|
import { readConfig } from './readConfig';
|
||||||
|
import { writeConfig } from './writeConfig';
|
||||||
|
|
||||||
|
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
|
||||||
|
|
||||||
export const getConfig = (name: string): BackendConfigType => {
|
export const getConfig = (name: string): BackendConfigType => {
|
||||||
if (!configExists(name)) return getFallbackConfig() as unknown as ConfigType;
|
if (!configExists(name)) return getFallbackConfig() as unknown as ConfigType;
|
||||||
@@ -12,9 +16,29 @@ export const getConfig = (name: string): BackendConfigType => {
|
|||||||
// to the new format.
|
// to the new format.
|
||||||
const config = readConfig(name);
|
const config = readConfig(name);
|
||||||
if (config.schemaVersion === undefined) {
|
if (config.schemaVersion === undefined) {
|
||||||
Consola.log('Migrating config file...', config);
|
Consola.log('Migrating config file...', config.name);
|
||||||
return backendMigrateConfig(config, name);
|
return backendMigrateConfig(config, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return config;
|
let backendConfig = config as BackendConfigType;
|
||||||
|
|
||||||
|
if (backendConfig.widgets.some((widget) => !uuidRegex.test(widget.id))) {
|
||||||
|
backendConfig = {
|
||||||
|
...backendConfig,
|
||||||
|
widgets: backendConfig.widgets.map((widget) => ({
|
||||||
|
...widget,
|
||||||
|
id: uuidv4(),
|
||||||
|
type: widget.id,
|
||||||
|
})),
|
||||||
|
};
|
||||||
|
|
||||||
|
Consola.log(
|
||||||
|
'Migrating config file to multiple widgets...',
|
||||||
|
backendConfig.configProperties.name
|
||||||
|
);
|
||||||
|
|
||||||
|
writeConfig(backendConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
return backendConfig;
|
||||||
};
|
};
|
||||||
|
|||||||
10
src/tools/config/writeConfig.ts
Normal file
10
src/tools/config/writeConfig.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import { BackendConfigType } from '../../types/config';
|
||||||
|
import { generateConfigPath } from './generateConfigPath';
|
||||||
|
|
||||||
|
export function writeConfig(config: BackendConfigType) {
|
||||||
|
const path = generateConfigPath(config.configProperties.name);
|
||||||
|
return fs.writeFileSync(path, JSON.stringify(config, null, 4), {
|
||||||
|
encoding: 'utf8',
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user