mirror of https://github.com/Lissy93/dashy.git
✨ Put config backups in own directory
This commit is contained in:
parent
fa6d1925b7
commit
f295958c44
2
.env
2
.env
|
@ -52,7 +52,7 @@
|
||||||
# VUE_APP_VERSION=2.0.0
|
# VUE_APP_VERSION=2.0.0
|
||||||
|
|
||||||
# Directory for conf.yml backups
|
# Directory for conf.yml backups
|
||||||
# BACKUP_DIR=./user-data/
|
# BACKUP_DIR=./user-data/config-backups
|
||||||
|
|
||||||
# Setup any other user defined vars by prepending VUE_APP_ to the var name
|
# Setup any other user defined vars by prepending VUE_APP_ to the var name
|
||||||
# VUE_APP_pihole_ip=http://your.pihole.ip
|
# VUE_APP_pihole_ip=http://your.pihole.ip
|
||||||
|
|
|
@ -14,18 +14,23 @@ module.exports = async (newConfig, render) => {
|
||||||
return configObj.filename.replaceAll('/', '').replaceAll('..', '');
|
return configObj.filename.replaceAll('/', '').replaceAll('..', '');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Path to config file (with navigational characters stripped)
|
||||||
const usersFileName = makeSafeFileName(newConfig);
|
const usersFileName = makeSafeFileName(newConfig);
|
||||||
|
|
||||||
|
// Path to user data directory
|
||||||
|
const userDataDirectory = process.env.USER_DATA_DIR || './user-data/';
|
||||||
|
|
||||||
// Define constants for the config file
|
// Define constants for the config file
|
||||||
const settings = {
|
const settings = {
|
||||||
defaultLocation: process.env.USER_DATA_DIR || './user-data/',
|
defaultLocation: userDataDirectory,
|
||||||
|
backupLocation: process.env.BACKUP_DIR || path.join(userDataDirectory, 'config-backups'),
|
||||||
defaultFile: 'conf.yml',
|
defaultFile: 'conf.yml',
|
||||||
filename: 'conf',
|
filename: 'conf',
|
||||||
backupDenominator: '.backup.yml',
|
backupDenominator: '.backup.yml',
|
||||||
};
|
};
|
||||||
|
|
||||||
// Make the full file name and path to save the backup config file
|
// Make the full file name and path to save the backup config file
|
||||||
const backupFilePath = `${path.normalize(process.env.BACKUP_DIR || settings.defaultLocation)
|
const backupFilePath = `${path.normalize(settings.backupLocation)
|
||||||
}/${usersFileName || settings.filename}-`
|
}/${usersFileName || settings.filename}-`
|
||||||
+ `${Math.round(new Date() / 1000)}${settings.backupDenominator}`;
|
+ `${Math.round(new Date() / 1000)}${settings.backupDenominator}`;
|
||||||
|
|
||||||
|
@ -45,15 +50,20 @@ module.exports = async (newConfig, render) => {
|
||||||
message: !success ? errorMsg : getSuccessMessage(),
|
message: !success ? errorMsg : getSuccessMessage(),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Makes a backup of the existing config file
|
// Create a backup of current config, and if backup dir doesn't yet exist, create it
|
||||||
await fsPromises
|
await fsPromises
|
||||||
.copyFile(defaultFilePath, backupFilePath)
|
.mkdir(settings.backupLocation, { recursive: true })
|
||||||
.catch((error) => render(getRenderMessage(false, `Unable to backup ${settings.defaultFile}: ${error}`)));
|
.then(() => fsPromises.copyFile(defaultFilePath, backupFilePath))
|
||||||
|
.catch((error) => render(
|
||||||
|
getRenderMessage(false, `Unable to backup ${settings.defaultFile}: ${error}`),
|
||||||
|
));
|
||||||
|
|
||||||
// Writes the new content to the conf.yml file
|
// Writes the new content to the conf.yml file
|
||||||
await fsPromises
|
await fsPromises
|
||||||
.writeFile(defaultFilePath, newConfig.config.toString(), writeFileOptions)
|
.writeFile(defaultFilePath, newConfig.config.toString(), writeFileOptions)
|
||||||
.catch((error) => render(getRenderMessage(false, `Unable to write to ${settings.defaultFile}: ${error}`)));
|
.catch((error) => render(
|
||||||
|
getRenderMessage(false, `Unable to write to ${settings.defaultFile}: ${error}`),
|
||||||
|
));
|
||||||
|
|
||||||
// If successful, then render hasn't yet been called- call it
|
// If successful, then render hasn't yet been called- call it
|
||||||
await render(getRenderMessage(true));
|
await render(getRenderMessage(true));
|
||||||
|
|
Loading…
Reference in New Issue