Skip to content

Commit 39ce73d

Browse files
committed
fix(everything): make everything config uniform, resolve other plugin type/coercion bugs, and qualify HttpClient/ZipFile usages
1 parent 1dbc279 commit 39ce73d

8 files changed

Lines changed: 51 additions & 2 deletions

File tree

plugins/7-zip/src/plugin.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,25 @@ def apply_config(args, context, request_id):
124124
changed = False
125125
to_update = {}
126126

127+
# Coerce values parsed as string from YAML representation
128+
if "CompressionLevel" in desired:
129+
try:
130+
desired["CompressionLevel"] = int(desired["CompressionLevel"])
131+
except (ValueError, TypeError):
132+
pass
133+
if "ContextMenu" in desired:
134+
try:
135+
desired["ContextMenu"] = int(desired["ContextMenu"])
136+
except (ValueError, TypeError):
137+
pass
138+
if "EncryptHeaders" in desired:
139+
val = desired["EncryptHeaders"]
140+
if isinstance(val, str):
141+
if val.lower() == "true":
142+
desired["EncryptHeaders"] = True
143+
elif val.lower() == "false":
144+
desired["EncryptHeaders"] = False
145+
127146
for key, val in desired.items():
128147
# Validate values
129148
if key == "CompressionLevel":

plugins/chezmoi/src/plugin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# /// script
2+
# dependencies = [
3+
# "pyyaml",
4+
# ]
5+
# ///
6+
17
import json
28
import os
39
import shutil

plugins/deno/plugin.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
name: deno
22
description: Deno configuration provider plugin
33
version: 1.0.0
4+
type: python
45
main: src/plugin.py
56
capabilities:
67
- config_provider

plugins/espanso/src/plugin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
- apply: Deep-merge matches/global_vars into base.yml
1010
"""
1111

12+
# /// script
13+
# dependencies = [
14+
# "pyyaml",
15+
# ]
16+
# ///
17+
1218
import json
1319
import os
1420
import sys

plugins/everything/src/plugin.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,14 @@ def load_config():
3131
def merge_config(config, settings):
3232
changed = False
3333

34+
# Detect if settings are flat (no sub-dictionaries) to keep configuration format uniform
35+
has_sections = any(isinstance(v, dict) for v in settings.values())
36+
if not has_sections:
37+
settings = {"Everything": settings}
38+
3439
for section, values in settings.items():
40+
if not isinstance(values, dict):
41+
continue
3542
if not config.has_section(section):
3643
config.add_section(section)
3744

plugins/miniconda/src/plugin.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# /// script
2+
# dependencies = [
3+
# "pyyaml",
4+
# ]
5+
# ///
6+
17
import json
28
import os
39
import shutil

plugins/starship/src/plugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def check_installed(args: dict, request_id: str) -> dict:
115115

116116
def apply_config(args: dict, context: dict, request_id: str) -> dict:
117117
dry_run = context.get("dryRun", False)
118-
settings = args
118+
settings = args.get("settings", {}) or {}
119119

120120
try:
121121
config_path = get_config_path()

src/Engine.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,11 @@ await Task.Run(() => Parallel.ForEach(itemsToRemove, uniqueId =>
435435
var checkResult = await _pluginRunner.ExecuteAsync(plugin, "check_installed", new { packageId = pluginName }, new { dryRun = dryRun });
436436
if (checkResult.Success)
437437
{
438-
if (checkResult.Data is bool installedBool)
438+
if (checkResult.Installed.HasValue)
439+
{
440+
isInstalled = checkResult.Installed.Value;
441+
}
442+
else if (checkResult.Data is bool installedBool)
439443
{
440444
isInstalled = installedBool;
441445
}

0 commit comments

Comments
 (0)