mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-12-13 18:24:29 +00:00
3rd party modules updater for updatenotification (#3150)
Added my (modified) updater main core into updatenotification default
module
Missing: callback display in MM² (i will code it after)
new part of configuration added:
```
updates: [
// array of module update commands
{
// with embed npm script
"MMM-Test": "npm run update"
},
{
// with "complex" process
"MMM-OtherSample": "rm -rf package-lock.json && git reset --hard && git pull && npm install"
},
{
// with git pull && npm install
"MMM-OtherSample2": "git pull && npm install"
},
{
// with a simple git pull
"MMM-OtherSample3": "git pull"
}
],
updateTimeout: 2 * 60 * 1000, // max update duration
updateAutorestart: false // autoRestart MM when update done ?
```
@khassel: i need your help
I don't use docker, maybe you can help me for this:
How can i check if MM² is running inside a docker ? (from MM² main core)
Actually, I check if we use pm2 or not.
I have to check if docker is used or not too
last time you tell me: "you can't use updater with docker", so I want to
check and deny any update if docker used
---------
Co-authored-by: bugsounet <bugsounet@bugsounet.fr>
This commit is contained in:
committed by
GitHub
parent
3fe5ad4b3d
commit
203e8647d4
@@ -9,11 +9,16 @@ Module.register("updatenotification", {
|
||||
updateInterval: 10 * 60 * 1000, // every 10 minutes
|
||||
refreshInterval: 24 * 60 * 60 * 1000, // one day
|
||||
ignoreModules: [],
|
||||
sendUpdatesNotifications: false
|
||||
sendUpdatesNotifications: false,
|
||||
updates: [],
|
||||
updateTimeout: 2 * 60 * 1000, // max update duration
|
||||
updateAutorestart: false // autoRestart MM when update done ?
|
||||
},
|
||||
|
||||
suspended: false,
|
||||
moduleList: {},
|
||||
needRestart: false,
|
||||
updates: {},
|
||||
|
||||
start() {
|
||||
Log.info(`Starting module: ${this.name}`);
|
||||
@@ -47,12 +52,15 @@ Module.register("updatenotification", {
|
||||
|
||||
socketNotificationReceived(notification, payload) {
|
||||
switch (notification) {
|
||||
case "STATUS":
|
||||
case "REPO_STATUS":
|
||||
this.updateUI(payload);
|
||||
break;
|
||||
case "UPDATES":
|
||||
this.sendNotification("UPDATES", payload);
|
||||
break;
|
||||
case "UPDATE_STATUS":
|
||||
this.updatesNotifier(payload);
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -65,7 +73,7 @@ Module.register("updatenotification", {
|
||||
},
|
||||
|
||||
getTemplateData() {
|
||||
return { moduleList: this.moduleList, suspended: this.suspended };
|
||||
return { moduleList: this.moduleList, updatesList: this.updates, suspended: this.suspended, needRestart: this.needRestart };
|
||||
},
|
||||
|
||||
updateUI(payload) {
|
||||
@@ -96,5 +104,29 @@ Module.register("updatenotification", {
|
||||
const remoteRef = status.tracking.replace(/.*\//, "");
|
||||
return `<a href="https://github.com/MichMich/MagicMirror/compare/${localRef}...${remoteRef}" class="xsmall dimmed difflink" target="_blank">${text}</a>`;
|
||||
});
|
||||
},
|
||||
|
||||
updatesNotifier(payload, done = true) {
|
||||
if (this.updates[payload.name] === undefined) {
|
||||
this.updates[payload.name] = {
|
||||
name: payload.name,
|
||||
done: done
|
||||
};
|
||||
|
||||
if (payload.error) {
|
||||
this.sendSocketNotification("UPDATE_ERROR", payload.name);
|
||||
this.updates[payload.name].done = false;
|
||||
} else {
|
||||
if (payload.updated) {
|
||||
delete this.moduleList[payload.name];
|
||||
this.updates[payload.name].done = true;
|
||||
}
|
||||
if (payload.needRestart) {
|
||||
this.needRestart = true;
|
||||
}
|
||||
}
|
||||
|
||||
this.updateDom(2);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user