Skip to content

Commit

Permalink
added possibility to ignore MagicMirror repo in updatenotification (#…
Browse files Browse the repository at this point in the history
…3002)

was [requested in the
forum](https://forum.magicmirror.builders/topic/17519/updatenotification).

- added possibility to exclude MagicMirror Repo and renamed it from
`default` to `MagicMirror`
- improved getting `behind` in case a hard `git fetch` was already done
- removed test "excludes repo if refs don't match regex" because of
above improvement this case is obsolete
- improved `git fetch --dry-run` with `-n` option to exclude tags (noise
reduction)
  • Loading branch information
khassel authored Jan 12, 2023
1 parent 877f8ad commit 29e3ec0
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 24 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ _This release is scheduled to be released on 2023-04-01._

- Added increments for hourly forecasts in weather module (#2996)
- Added tests for hourly weather forecast
- Added possibility to ignore MagicMirror repo in updatenotification module

### Removed

Expand Down
16 changes: 9 additions & 7 deletions modules/default/updatenotification/git_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class GitHelper {
async add(moduleName) {
let moduleFolder = BASE_DIR;

if (moduleName !== "default") {
if (moduleName !== "MagicMirror") {
moduleFolder = `${moduleFolder}modules/${moduleName}`;
}

Expand Down Expand Up @@ -68,7 +68,7 @@ class GitHelper {
isBehindInStatus: false
};

if (repo.module === "default") {
if (repo.module === "MagicMirror") {
// the hash is only needed for the mm repo
const { stderr, stdout } = await this.execShell(`cd ${repo.folder} && git rev-parse HEAD`);

Expand Down Expand Up @@ -121,22 +121,24 @@ class GitHelper {
return gitInfo;
}

const { stderr } = await this.execShell(`cd ${repo.folder} && git fetch --dry-run`);
const { stderr } = await this.execShell(`cd ${repo.folder} && git fetch -n --dry-run`);

// example output:
// From https://github.com/MichMich/MagicMirror
// e40ddd4..06389e3 develop -> origin/develop
// here the result is in stderr (this is a git default, don't ask why ...)
const matches = stderr.match(this.getRefRegex(gitInfo.current));

if (!matches || !matches[0]) {
// no refs found, nothing to do
return;
// this is the default if there was no match from "git fetch -n --dry-run".
// Its a fallback because if there was a real "git fetch", the above "git fetch -n --dry-run" would deliver nothing.
let refDiff = gitInfo.current + "..origin/" + gitInfo.current;
if (matches && matches[0]) {
refDiff = matches[0];
}

// get behind with refs
try {
const { stdout } = await this.execShell(`cd ${repo.folder} && git rev-list --ancestry-path --count ${matches[0]}`);
const { stdout } = await this.execShell(`cd ${repo.folder} && git rev-list --ancestry-path --count ${refDiff}`);
gitInfo.behind = parseInt(stdout);

return gitInfo;
Expand Down
4 changes: 3 additions & 1 deletion modules/default/updatenotification/node_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ module.exports = NodeHelper.create({
}
}

await this.gitHelper.add("default");
if (!this.ignoreUpdateChecking("MagicMirror")) {
await this.gitHelper.add("MagicMirror");
}
},

async socketNotificationReceived(notification, payload) {
Expand Down
2 changes: 1 addition & 1 deletion modules/default/updatenotification/updatenotification.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Module.register("updatenotification", {

addFilters() {
this.nunjucksEnvironment().addFilter("diffLink", (text, status) => {
if (status.module !== "default") {
if (status.module !== "MagicMirror") {
return text;
}

Expand Down
2 changes: 1 addition & 1 deletion modules/default/updatenotification/updatenotification.njk
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<div class="small bright">
<i class="fas fa-exclamation-circle"></i>
<span>
{% set mainTextLabel = "UPDATE_NOTIFICATION" if name === "default" else "UPDATE_NOTIFICATION_MODULE" %}
{% set mainTextLabel = "UPDATE_NOTIFICATION" if name === "MagicMirror" else "UPDATE_NOTIFICATION_MODULE" %}
{{ mainTextLabel | translate({MODULE_NAME: name}) }}
</span>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,24 @@ exports[`Updatenotification custom module returns status information without has
}
`;

exports[`Updatenotification default returns status information 1`] = `
exports[`Updatenotification MagicMirror returns status information 1`] = `
{
"behind": 5,
"current": "develop",
"hash": "332e429a41f1a2339afd4f0ae96dd125da6beada",
"isBehindInStatus": false,
"module": "default",
"module": "MagicMirror",
"tracking": "origin/develop",
}
`;

exports[`Updatenotification default returns status information early if isBehindInStatus 1`] = `
exports[`Updatenotification MagicMirror returns status information early if isBehindInStatus 1`] = `
{
"behind": 5,
"current": "develop",
"hash": "332e429a41f1a2339afd4f0ae96dd125da6beada",
"isBehindInStatus": true,
"module": "default",
"module": "MagicMirror",
"tracking": "origin/develop",
}
`;
13 changes: 3 additions & 10 deletions tests/unit/functions/updatenotification_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ describe("Updatenotification", () => {
return { stdout: gitRevParseOut, stderr: gitRevParseErr };
} else if (command.includes("git status -sb")) {
return { stdout: gitStatusOut, stderr: gitStatusErr };
} else if (command.includes("git fetch --dry-run")) {
} else if (command.includes("git fetch -n --dry-run")) {
return { stdout: gitFetchOut, stderr: gitFetchErr };
} else if (command.includes("git rev-list --ancestry-path --count")) {
return { stdout: gitRevListOut, stderr: gitRevListErr };
Expand All @@ -71,8 +71,8 @@ describe("Updatenotification", () => {
jest.clearAllMocks();
});

describe("default", () => {
const moduleName = "default";
describe("MagicMirror", () => {
const moduleName = "MagicMirror";

beforeEach(async () => {
gitRemoteOut = "origin\[email protected]:MichMich/MagicMirror.git (fetch)\norigin\[email protected]:MichMich/MagicMirror.git (push)\n";
Expand Down Expand Up @@ -108,13 +108,6 @@ describe("Updatenotification", () => {
const { error } = require("logger");
expect(error).toHaveBeenCalledWith(`Failed to retrieve repo info for ${moduleName}: Failed to retrieve status`);
});

it("excludes repo if refs don't match regex", async () => {
gitFetchErr = "";

const repos = await gitHelper.getRepos();
expect(repos.length).toBe(0);
});
});

describe("custom module", () => {
Expand Down

0 comments on commit 29e3ec0

Please sign in to comment.