commandertui 1.5.0__tar.gz → 1.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {commandertui-1.5.0 → commandertui-1.5.1}/PKG-INFO +2 -2
- {commandertui-1.5.0 → commandertui-1.5.1}/README.md +1 -1
- commandertui-1.5.1/commandertui/__init__.py +1 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/boot.py +12 -3
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/updater.py +4 -2
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui.egg-info/PKG-INFO +2 -2
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_app_smoke.py +21 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_updater.py +1 -1
- commandertui-1.5.0/commandertui/__init__.py +0 -1
- {commandertui-1.5.0 → commandertui-1.5.1}/LICENSE +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/app.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/ascii_font.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/bookmarks.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/cli.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/compare_screen.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/conflicts.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/diff.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/editor.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/executor.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/main_screen.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/modals.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/models.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/netlocations.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/plan.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/preview.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/progress_screen.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/run_queue.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/run_transfer.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/scanner.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/settings.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/sync.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/theme.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/transfer.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/trash.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui/widgets.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui.egg-info/SOURCES.txt +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui.egg-info/dependency_links.txt +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui.egg-info/entry_points.txt +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui.egg-info/requires.txt +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/commandertui.egg-info/top_level.txt +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/pyproject.toml +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/setup.cfg +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_bookmarks.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_conflict_ui.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_conflicts.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_diff.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_executor.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_netlocations.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_plan.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_preview.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_scanner.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_sync.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_transfer.py +0 -0
- {commandertui-1.5.0 → commandertui-1.5.1}/tests/test_widgets.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: commandertui
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.1
|
|
4
4
|
Summary: Dual-pane retro terminal file manager: compare, sync, copy and move folders
|
|
5
5
|
Author: Humberto Barchini
|
|
6
6
|
License-Expression: MIT
|
|
@@ -183,7 +183,7 @@ the command that matches how it was installed:
|
|
|
183
183
|
|
|
184
184
|
| Installed as | Update runs |
|
|
185
185
|
|---|---|
|
|
186
|
-
| Arch package (`makepkg`) | rebuilds from the release's PKGBUILD with `makepkg -si` (your sudo password is typed in the terminal, never read by the app) |
|
|
186
|
+
| Arch package (`makepkg`) | rebuilds from the release's PKGBUILD with `makepkg -si --nocheck` (tests already ran in the release workflow) (your sudo password is typed in the terminal, never read by the app) |
|
|
187
187
|
| pipx | `pipx upgrade commandertui` |
|
|
188
188
|
| pip | `pip install --upgrade commandertui` |
|
|
189
189
|
| git checkout | no button: the dialog tells you to `git pull` |
|
|
@@ -164,7 +164,7 @@ the command that matches how it was installed:
|
|
|
164
164
|
|
|
165
165
|
| Installed as | Update runs |
|
|
166
166
|
|---|---|
|
|
167
|
-
| Arch package (`makepkg`) | rebuilds from the release's PKGBUILD with `makepkg -si` (your sudo password is typed in the terminal, never read by the app) |
|
|
167
|
+
| Arch package (`makepkg`) | rebuilds from the release's PKGBUILD with `makepkg -si --nocheck` (tests already ran in the release workflow) (your sudo password is typed in the terminal, never read by the app) |
|
|
168
168
|
| pipx | `pipx upgrade commandertui` |
|
|
169
169
|
| pip | `pip install --upgrade commandertui` |
|
|
170
170
|
| git checkout | no button: the dialog tells you to `git pull` |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.5.1"
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from textual.app import ComposeResult
|
|
4
4
|
from textual.binding import Binding
|
|
5
5
|
from textual.screen import Screen
|
|
6
|
+
from textual.containers import Vertical
|
|
6
7
|
from textual.widgets import Static
|
|
7
8
|
|
|
8
9
|
from .ascii_font import banner
|
|
@@ -65,9 +66,16 @@ class BootScreen(Screen):
|
|
|
65
66
|
width: auto;
|
|
66
67
|
height: auto;
|
|
67
68
|
}
|
|
68
|
-
#boot-
|
|
69
|
+
#boot-box {
|
|
69
70
|
width: auto;
|
|
70
71
|
height: auto;
|
|
72
|
+
}
|
|
73
|
+
#boot-hint {
|
|
74
|
+
/* 100% of the box, which is as wide as the art: text-align can then
|
|
75
|
+
really center the hint under it (width:auto hugged the text and
|
|
76
|
+
left it at the art's left edge). */
|
|
77
|
+
width: 100%;
|
|
78
|
+
height: auto;
|
|
71
79
|
text-align: center;
|
|
72
80
|
margin-top: 1;
|
|
73
81
|
}
|
|
@@ -100,8 +108,9 @@ class BootScreen(Screen):
|
|
|
100
108
|
# boxed art rendered flush against the left edge instead. `width:
|
|
101
109
|
# auto` on the Static itself (set in DEFAULT_CSS) is what lets the
|
|
102
110
|
# screen's own `align: center middle` actually center it as a block.
|
|
103
|
-
|
|
104
|
-
|
|
111
|
+
with Vertical(id="boot-box"):
|
|
112
|
+
yield Static("", id="boot-text")
|
|
113
|
+
yield Static("", id="boot-hint")
|
|
105
114
|
|
|
106
115
|
def on_mount(self) -> None:
|
|
107
116
|
# Double-size title when the window is wide enough for it.
|
|
@@ -98,7 +98,9 @@ def detect_install() -> str:
|
|
|
98
98
|
# Arch: the PKGBUILD in the repo is only updated after a release is tagged
|
|
99
99
|
# (its checksum can't exist before the tarball does), so take the one from the
|
|
100
100
|
# release's own tag, point it at that version and let updpkgsums fill the
|
|
101
|
-
# checksum from the real tarball, then build and install.
|
|
101
|
+
# checksum from the real tarball, then build and install. --nocheck skips the
|
|
102
|
+
# PKGBUILD's check() (the whole test suite, minutes on a slow machine): the
|
|
103
|
+
# release workflow already ran those tests before publishing.
|
|
102
104
|
_ARCH_SCRIPT = """set -e
|
|
103
105
|
tmp=$(mktemp -d)
|
|
104
106
|
trap 'rm -rf "$tmp"' EXIT
|
|
@@ -106,7 +108,7 @@ cd "$tmp"
|
|
|
106
108
|
curl -fsSL https://raw.githubusercontent.com/{repo}/v{latest}/packaging/arch/PKGBUILD -o PKGBUILD
|
|
107
109
|
sed -i 's/^pkgver=.*/pkgver={latest}/; s/^pkgrel=.*/pkgrel=1/' PKGBUILD
|
|
108
110
|
updpkgsums
|
|
109
|
-
makepkg -si
|
|
111
|
+
makepkg -si --nocheck
|
|
110
112
|
"""
|
|
111
113
|
|
|
112
114
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: commandertui
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.1
|
|
4
4
|
Summary: Dual-pane retro terminal file manager: compare, sync, copy and move folders
|
|
5
5
|
Author: Humberto Barchini
|
|
6
6
|
License-Expression: MIT
|
|
@@ -183,7 +183,7 @@ the command that matches how it was installed:
|
|
|
183
183
|
|
|
184
184
|
| Installed as | Update runs |
|
|
185
185
|
|---|---|
|
|
186
|
-
| Arch package (`makepkg`) | rebuilds from the release's PKGBUILD with `makepkg -si` (your sudo password is typed in the terminal, never read by the app) |
|
|
186
|
+
| Arch package (`makepkg`) | rebuilds from the release's PKGBUILD with `makepkg -si --nocheck` (tests already ran in the release workflow) (your sudo password is typed in the terminal, never read by the app) |
|
|
187
187
|
| pipx | `pipx upgrade commandertui` |
|
|
188
188
|
| pip | `pip install --upgrade commandertui` |
|
|
189
189
|
| git checkout | no button: the dialog tells you to `git pull` |
|
|
@@ -1340,3 +1340,24 @@ async def test_places_change_login_resets_and_reconnects(tmp_path, monkeypatch):
|
|
|
1340
1340
|
await pilot.pause()
|
|
1341
1341
|
assert seen == {"reset": "smb://nas/HD1/", "mount": ("smb://nas/HD1/", True)}
|
|
1342
1342
|
assert netlocations.is_anonymous("smb://nas/HD1/")
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
async def test_boot_hint_is_centered_under_the_art(tmp_path):
|
|
1346
|
+
from commandertui.app import CommanderApp
|
|
1347
|
+
|
|
1348
|
+
app = CommanderApp(str(tmp_path), str(tmp_path), check_updates=False)
|
|
1349
|
+
async with app.run_test(size=(140, 40)) as pilot:
|
|
1350
|
+
screen = app.screen
|
|
1351
|
+
assert screen.__class__.__name__ == "BootScreen"
|
|
1352
|
+
screen.chars_per_tick = 100000 # draw the whole art on the next tick
|
|
1353
|
+
for _ in range(200): # let the reveal finish: the hint only appears once drawn
|
|
1354
|
+
if screen._done:
|
|
1355
|
+
break
|
|
1356
|
+
await pilot.pause(0.05)
|
|
1357
|
+
assert screen._done
|
|
1358
|
+
await pilot.pause()
|
|
1359
|
+
art = screen.query_one("#boot-text").region
|
|
1360
|
+
hint = screen.query_one("#boot-hint")
|
|
1361
|
+
assert "ENTER" in str(hint.render())
|
|
1362
|
+
assert hint.region.width == art.width
|
|
1363
|
+
assert hint.region.x == art.x
|
|
@@ -75,7 +75,7 @@ def test_update_commands_per_install_kind():
|
|
|
75
75
|
assert arch[:2] == ["bash", "-c"]
|
|
76
76
|
script = arch[2]
|
|
77
77
|
assert "v2.0.0/packaging/arch/PKGBUILD" in script and "pkgver=2.0.0" in script
|
|
78
|
-
assert "updpkgsums" in script and "makepkg -si" in script
|
|
78
|
+
assert "updpkgsums" in script and "makepkg -si --nocheck" in script # tests ran in the release workflow
|
|
79
79
|
assert "sudo" not in script # the password is only ever asked by makepkg, in the terminal
|
|
80
80
|
|
|
81
81
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.5.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|