Skip to content

Commit 235abed

Browse files
committed
small CI improvements
1 parent e62b4c0 commit 235abed

File tree

10 files changed

+48
-44
lines changed

10 files changed

+48
-44
lines changed

.github/scripts/check_relevance.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import subprocess
22
import sys
33
import os
4+
5+
# Ensure the script's directory is in sys.path for git_utils import
6+
script_dir = os.path.dirname(os.path.abspath(__file__))
7+
if script_dir not in sys.path:
8+
sys.path.insert(0, script_dir)
9+
410
from git_utils import get_last_tag
511

612
def has_relevant_changes(since_tag):

.github/scripts/generate_changelog.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
import argparse
2+
import subprocess
3+
import os
4+
import re
5+
import sys
6+
7+
# Ensure the script's directory is in sys.path for git_utils import
8+
script_dir = os.path.dirname(os.path.abspath(__file__))
9+
if script_dir not in sys.path:
10+
sys.path.insert(0, script_dir)
11+
212
from git_utils import get_last_tag
313

414

@@ -47,7 +57,7 @@ def parse_commits(commits):
4757
categories["Styling"].append(commit)
4858
elif lower_commit.startswith("docs"):
4959
categories["Documentation"].append(commit)
50-
elif lower_commit.startswith(tuple(["chore", "refactor", "test", "ci", "build"])):
60+
elif lower_commit.startswith(("chore", "refactor", "test", "ci", "build")):
5161
categories["Maintenance"].append(commit)
5262
else:
5363
# Filter out merge commits from "Other" list if we want clean output

.github/workflows/weekly.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@ jobs:
2020
python-version: '3.14'
2121
- name: Check for relevant changes
2222
id: check
23-
run: |
24-
RELEVANCE=$(python .github/scripts/check_relevance.py | grep "relevance=" | cut -d= -f2)
25-
echo "relevance=$RELEVANCE" >> "$GITHUB_OUTPUT"
23+
run: python .github/scripts/check_relevance.py
2624

2725
trigger_release:
2826
needs: check_relevance
2927
if: needs.check_relevance.outputs.relevance == 'true'
3028
runs-on: ubuntu-latest
29+
permissions:
30+
workflows: write
3131
steps:
32+
- name: Checkout repository
33+
uses: actions/checkout@v4
3234
- name: Trigger Release Workflow
3335
run: |
3436
gh workflow run release.yml -f release_type=development

src/switchcraft/gui_modern/utils/view_utils.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ def _open_path(self, path):
4141
except Exception as e:
4242
logger.debug(f"Default opener failed, falling back to webbrowser: {e}")
4343
try:
44-
webbrowser.open(f"file:///{path}")
44+
from pathlib import Path
45+
uri = Path(path).as_uri()
46+
webbrowser.open(uri)
4547
except Exception as e2:
4648
self._show_snack(f"Failed to open path: {path}", "RED")
4749
logger.error(f"Failed to open path: {e2}")
@@ -60,12 +62,12 @@ def _close_dialog(self, dialog=None):
6062
if hasattr(page, "close"):
6163
try:
6264
page.close(dialog)
63-
except:
65+
except Exception:
6466
pass
6567
elif hasattr(page, "close_dialog"):
6668
try:
6769
page.close_dialog()
68-
except:
70+
except Exception:
6971
pass
7072

7173
page.update()

src/switchcraft/gui_modern/views/addon_manager_view.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,22 +140,21 @@ def _bg():
140140
if self.addon_service.delete_addon(aid) is False:
141141
self._show_snack("Delete failed (File in use?)", "RED")
142142
else:
143-
self._show_snack("Addon deleted.", "GREEN")
144-
self.selected_addon = None
145-
self._close_dialog(self.import_dlg)
146-
self._load_data()
143+
self._show_snack("Addon deleted.", "GREEN")
144+
self.selected_addon = None
145+
self._close_dialog(self.import_dlg)
146+
self._load_data()
147147
except Exception as ex:
148148
self._show_snack(f"Delete failed: {ex}", "RED")
149149
threading.Thread(target=_bg, daemon=True).start()
150150

151-
dlg = ft.AlertDialog(
151+
self.import_dlg = ft.AlertDialog(
152152
title=ft.Text("Confirm Deletion"),
153153
content=ft.Text(f"Delete addon '{self.selected_addon.get('name')}'?"),
154154
actions=[
155155
ft.TextButton("Cancel", on_click=close_dlg),
156156
ft.Button("Delete", on_click=delete, bgcolor="RED", color="WHITE")
157157
]
158158
)
159-
self.app_page.dialog = dlg
160-
dlg.open = True
159+
self.app_page.open(self.import_dlg)
161160
self.app_page.update()

src/switchcraft/gui_modern/views/analyzer_view.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -950,7 +950,12 @@ def open_winget_manager(e):
950950
content=ft.Column([
951951
ft.Text("Quickly generate a local manifest structure based on analysis results."),
952952
ft.Text(f"Target: {info.manufacturer}.{info.product_name}", size=12, italic=True),
953-
], height=80, tight=True),
953+
ft.Container(height=5),
954+
ft.Row([
955+
ft.Icon(ft.Icons.WARNING_AMBER, color="ORANGE", size=16),
956+
ft.Text("Note: Manifests use a placeholder SHA256. Manual update required before submission.", size=11, color="ORANGE", italic=True)
957+
], vertical_alignment=ft.CrossAxisAlignment.CENTER)
958+
], height=110, tight=True),
954959
actions=[
955960
ft.TextButton("Cancel", on_click=lambda _: setattr(dlg, "open", False) or self.app_page.update()),
956961
ft.TextButton("Open Manager", on_click=open_winget_manager),
@@ -1026,17 +1031,8 @@ def _bg():
10261031

10271032
# Show success dialog
10281033
def open_folder(e):
1029-
import os
1030-
import sys
1031-
import subprocess
1032-
10331034
try:
1034-
if sys.platform == "win32":
1035-
self._open_path(str(source))
1036-
elif sys.platform == "darwin":
1037-
subprocess.call(["open", str(source)])
1038-
else:
1039-
subprocess.call(["xdg-open", str(source)])
1035+
self._open_path(str(source))
10401036
except Exception as ex:
10411037
self._show_snack(f"Failed to open folder: {ex}", "RED")
10421038

src/switchcraft/gui_modern/views/group_manager_view.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,12 +424,12 @@ def _bg():
424424
self._show_snack(f"Failed to add member: {ex}", "RED")
425425
threading.Thread(target=_bg, daemon=True).start()
426426

427-
add_dlg = ft.AlertDialog(
427+
self.dlg_add_member = ft.AlertDialog(
428428
title=ft.Text(i18n.get("dlg_add_member") or "Add Member"),
429429
content=ft.Column([search_box, results_list], height=300, width=400),
430-
actions=[ft.TextButton(i18n.get("btn_close") or "Close", on_click=lambda e: self._close_dialog(self.app_page.dialog))]
430+
actions=[ft.TextButton(i18n.get("btn_close") or "Close", on_click=lambda e: self._close_dialog(self.dlg_add_member))]
431431
)
432-
self.app_page.open(add_dlg)
432+
self.app_page.open(self.dlg_add_member)
433433
self.app_page.update()
434434

435435
title_tmpl = i18n.get("members_title") or "Members: {group}"

src/switchcraft/gui_modern/views/library_view.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import flet as ft
22
from switchcraft.utils.config import SwitchCraftConfig
33
from switchcraft.utils.i18n import i18n
4+
from switchcraft.gui_modern.utils.view_utils import ViewMixin
45

56
import logging
67
from datetime import datetime
@@ -11,7 +12,7 @@
1112
logger = logging.getLogger(__name__)
1213

1314

14-
class LibraryView(ft.Column):
15+
class LibraryView(ft.Column, ViewMixin):
1516
"""Library view that displays recent .intunewin packages."""
1617

1718
def __init__(self, page: ft.Page):
@@ -301,16 +302,9 @@ def _on_tile_click(self, item):
301302

302303
def _open_folder(self, path):
303304
"""Open the folder containing the file."""
304-
305-
import subprocess
306305
try:
307306
folder = os.path.dirname(path)
308-
if sys.platform == "win32":
309-
self._open_path(folder)
310-
elif sys.platform == "darwin":
311-
subprocess.call(["open", folder])
312-
else:
313-
subprocess.call(["xdg-open", folder])
307+
self._open_path(folder)
314308
except Exception as ex:
315309
logger.error(f"Failed to open folder: {ex}")
316310

src/switchcraft/gui_modern/views/wingetcreate_view.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -688,11 +688,6 @@ def _open_manifest_dir(self, e):
688688
"""Open the manifest directory in file explorer."""
689689
try:
690690
path = str(self.manifest_dir)
691-
if sys.platform == "win32":
692-
self._open_path(path)
693-
elif sys.platform == "darwin":
694-
subprocess.Popen(["open", path])
695-
else:
696-
subprocess.Popen(["xdg-open", path])
691+
self._open_path(path)
697692
except Exception as ex:
698693
logger.error(f"Failed to open manifest dir: {ex}")

src/switchcraft/services/ai_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
import re
23
from switchcraft.services.addon_service import AddonService
34
from switchcraft.utils.i18n import i18n
45

@@ -22,7 +23,6 @@ def __init__(self):
2223
@staticmethod
2324
def _is_greeting(query: str) -> bool:
2425
"""Check if the query is a greeting using regex word boundaries."""
25-
import re
2626
q = query.lower()
2727
return bool(re.search(r'\b(hi|hello|hallo|hey|moin|servus)\b', q))
2828

0 commit comments

Comments
 (0)