Skip to content

Commit 1c7aa7b

Browse files
committed
more compose trigger fixes
1 parent 75c7ab0 commit 1c7aa7b

File tree

18 files changed

+54
-14
lines changed

18 files changed

+54
-14
lines changed

app/registry/index.test.ts

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,20 +307,49 @@ test('ensureDockercomposeTriggerForContainer should create trigger with parent f
307307
expect(Object.keys(registry.getState().trigger)).toContain(triggerId);
308308
});
309309

310-
test('ensureDockercomposeTriggerForContainer should append a number when name conflicts', async () => {
310+
test('ensureDockercomposeTriggerForContainer should reuse existing trigger when name conflicts', async () => {
311311
const triggerId1 = await registry.ensureDockercomposeTriggerForContainer('my-service');
312312
const triggerId2 = await registry.ensureDockercomposeTriggerForContainer('my-service');
313313

314314
expect(triggerId1).toBe('dockercompose.my-service');
315-
expect(triggerId2).toBe('dockercompose.my-service-2');
315+
expect(triggerId2).toBe('dockercompose.my-service');
316+
expect(
317+
Object.keys(registry.getState().trigger).filter((id) => id === 'dockercompose.my-service')
318+
.length,
319+
).toBe(1);
316320
});
317321

318-
test('ensureDockercomposeTriggerForContainer should append a number when name conflicts with compose path', async () => {
322+
test('ensureDockercomposeTriggerForContainer should reuse existing trigger when name conflicts with compose path', async () => {
319323
const triggerId1 = await registry.ensureDockercomposeTriggerForContainer('my-service', '/home/user/myapp/docker-compose.yml');
320324
const triggerId2 = await registry.ensureDockercomposeTriggerForContainer('my-service', '/home/user/myapp/docker-compose.yml');
321325

322326
expect(triggerId1).toBe('dockercompose.myapp-my-service');
323-
expect(triggerId2).toBe('dockercompose.myapp-my-service-2');
327+
expect(triggerId2).toBe('dockercompose.myapp-my-service');
328+
expect(
329+
Object.keys(registry.getState().trigger).filter((id) => id === 'dockercompose.myapp-my-service')
330+
.length,
331+
).toBe(1);
332+
});
333+
334+
test('ensureDockercomposeTriggerForContainer should update configuration on existing trigger', async () => {
335+
const triggerId1 = await registry.ensureDockercomposeTriggerForContainer(
336+
'my-service',
337+
'/home/user/myapp/docker-compose.yml',
338+
{ prune: 'false' },
339+
);
340+
const triggerId2 = await registry.ensureDockercomposeTriggerForContainer(
341+
'my-service',
342+
'/home/user/myapp/docker-compose.yml',
343+
{ prune: 'true', backup: 'true' },
344+
);
345+
346+
expect(triggerId1).toBe('dockercompose.myapp-my-service');
347+
expect(triggerId2).toBe('dockercompose.myapp-my-service');
348+
expect(registry.getState().trigger[triggerId2].configuration).toMatchObject({
349+
prune: true,
350+
backup: true,
351+
requireinclude: true,
352+
});
324353
});
325354

326355
test('ensureDockercomposeTriggerForContainer should handle Windows paths', async () => {

app/registry/index.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ function sanitizeComponentName(name: string): string {
281281

282282
/**
283283
* Ensure a dockercompose trigger exists for a container name.
284-
* Name collision strategy: append a number to the trigger name.
284+
* Name collision strategy: update the existing trigger configuration.
285285
*/
286286
export async function ensureDockercomposeTriggerForContainer(
287287
containerName: string,
@@ -314,18 +314,10 @@ export async function ensureDockercomposeTriggerForContainer(
314314
triggerBaseName = sanitizeComponentName(containerName);
315315
}
316316

317-
let triggerName = triggerBaseName;
318-
let conflictIndex = 2;
319-
320-
while (state.trigger[`dockercompose.${triggerName}`]) {
321-
triggerName = `${triggerBaseName}-${conflictIndex}`;
322-
conflictIndex += 1;
323-
}
324-
325317
const triggerRegistered = await registerComponent({
326318
kind: 'trigger',
327319
provider: 'dockercompose',
328-
name: triggerName,
320+
name: triggerBaseName,
329321
configuration: {
330322
...triggerConfiguration,
331323
requireinclude: true,

app/triggers/providers/apprise/Apprise.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const configurationValid = {
1515
threshold: 'all',
1616
auto: true,
1717
order: 100,
18+
requireinclude: false,
1819
once: true,
1920
mode: 'simple',
2021

app/triggers/providers/command/Command.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const configurationValid = {
1414
once: true,
1515
auto: true,
1616
order: 100,
17+
requireinclude: false,
1718
simpletitle: 'New ${container.updateKind.kind} found for container ${container.name}',
1819
simplebody:
1920
'Container ${container.name} running with ${container.updateKind.kind} ${container.updateKind.localValue} can be updated to ${container.updateKind.kind} ${container.updateKind.remoteValue}${container.result && container.result.link ? "\\n" + container.result.link : ""}',

app/triggers/providers/docker/Docker.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const configurationValid = {
1111
once: true,
1212
auto: true,
1313
order: 100,
14+
requireinclude: false,
1415
autoremovetimeout: 10000,
1516
backupcount: 3,
1617
simpletitle: 'New ${container.updateKind.kind} found for container ${container.name}',

app/triggers/providers/googlechat/Googlechat.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const configurationValid = {
2323
once: true,
2424
auto: true,
2525
order: 100,
26+
requireinclude: false,
2627
simpletitle: 'Test Title',
2728
simplebody: 'Test Body',
2829
batchtitle: 'Batch Title',

app/triggers/providers/gotify/Gotify.test.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const configurationValid = {
1515
once: true,
1616
auto: true,
1717
order: 100,
18+
requireinclude: false,
1819
simpletitle: 'New ${container.updateKind.kind} found for container ${container.name}',
1920
simplebody:
2021
'Container ${container.name} running with ${container.updateKind.kind} ${container.updateKind.localValue} can be updated to ${container.updateKind.kind} ${container.updateKind.remoteValue}${container.result && container.result.link ? "\\n" + container.result.link : ""}',
@@ -61,6 +62,7 @@ test('maskConfiguration should mask sensitive data', async () => {
6162
once: true,
6263
auto: true,
6364
order: 100,
65+
requireinclude: false,
6466
simpletitle: configurationValid.simpletitle,
6567
simplebody: configurationValid.simplebody,
6668
batchtitle: configurationValid.batchtitle,

app/triggers/providers/ifttt/Ifttt.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const configurationValid = {
1717
once: true,
1818
auto: true,
1919
order: 100,
20+
requireinclude: false,
2021
simpletitle: 'New ${container.updateKind.kind} found for container ${container.name}',
2122

2223
simplebody:

app/triggers/providers/kafka/Kafka.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const configurationValid = {
1818
once: true,
1919
auto: true,
2020
order: 100,
21+
requireinclude: false,
2122
simpletitle: 'New ${container.updateKind.kind} found for container ${container.name}',
2223

2324
simplebody:

app/triggers/providers/matrix/Matrix.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const configurationValid = {
2525
once: true,
2626
auto: true,
2727
order: 100,
28+
requireinclude: false,
2829
simpletitle: 'Test Title',
2930
simplebody: 'Test Body',
3031
batchtitle: 'Batch Title',

0 commit comments

Comments
 (0)