Skip to content

Commit 251496c

Browse files
committed
use multiline strings instead of a list of strings for resume funcs
more modern/easier format Signed-off-by: Zen <[email protected]>
1 parent 6241855 commit 251496c

File tree

1 file changed

+40
-38
lines changed

1 file changed

+40
-38
lines changed

src/ugrd/fs/resume.py

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
__version__ = "0.4.2"
1+
__version__ = "0.4.3"
22

33
from zenlib.util import contains
44

55

6-
def resume(self) -> None:
6+
def resume(self) -> str:
77
"""Returns a shell script handling resume from hibernation.
88
Checks that /sys/power/resume is writable, resume= is set, and noresume is not set, if so,
99
checks if UUID= or PARTUUID= or LABEL= is in the resume var,
@@ -17,46 +17,48 @@ def resume(self) -> None:
1717
If the system is freshly booted, it will not be able to resume, as there is no hibernation image.
1818
Distinguising between a fresh boot and missing/borked hibernation image is not possible at run time.
1919
"""
20-
return [
20+
return r"""
2121
# Check resume support
22-
'[ -n "$1" ] || (ewarn "No device?" ; return 1)',
23-
'[ -w /sys/power/resume ] || (ewarn "Kernel does not support resume!" ; return 1)',
24-
'[[ ! "$(cat /sys/power/resume)" == "0:0" ]] || ewarn "/sys/power/resume not empty, resume has already been attempted!"',
22+
[ -n "$1" ] || (ewarn "No device?" ; return 1)
23+
[ -w /sys/power/resume ] || (ewarn "Kernel does not support resume!" ; return 1)
24+
# TODO: Make POSIX compliant
25+
[[ ! "$(cat /sys/power/resume)" == "0:0" ]] || ewarn "/sys/power/resume not empty, resume has already been attempted!"
2526
# Safety checks
26-
"if ! [ -z $(lsblk -Q MOUNTPOINT)] ; then",
27-
r' eerror "Cannot safely resume with mounted block devices:\n$(lsblk -Q MOUNTPOINT -no PATH)"',
28-
" return 1",
29-
"fi",
30-
'[ -b "$1" ] || (ewarn "\'$1\' is not a valid block device!" ; return 1)',
31-
'einfo "Attempting resume from: $1"',
32-
'echo -n "$1" > /sys/power/resume',
33-
'einfo "No image on $resume"',
34-
"return 0",
35-
]
27+
if ! [ -z $(lsblk -Q MOUNTPOINT)] ; then
28+
eerror "Cannot safely resume with mounted block devices:\n$(lsblk -Q MOUNTPOINT -no PATH)"
29+
return 1
30+
fi
31+
[ -b "$1" ] || (ewarn "\'$1\' is not a valid block device!" ; return 1)
32+
einfo "Attempting resume from: $1"
33+
echo -n "$1" > /sys/power/resume
34+
einfo "No image on: $resume"
35+
return 0
36+
"""
3637

3738

38-
def handle_early_resume(self) -> None:
39-
return [
40-
"resumeval=$(readvar resume)", # read the cmdline resume var
41-
'if ! check_var noresume && [ -n "$resumeval" ] && [ -w /sys/power/resume ]; then',
42-
' if echo "$resumeval" | grep -q "UUID=" ||', # resolve uuid to device
43-
' echo "$resumeval" | grep -q "PARTUUID=" ||', # or resolve partuuid to device
44-
' echo "$resumeval" | grep -q "LABEL=" ; then', # or resolve label to device
45-
' resume=$(blkid -t "$resumeval" -o device)',
46-
" else",
47-
' resume="$resumeval"',
48-
" fi",
49-
" if ! [ -z $resume ] ; then",
50-
' if ! resume "$resume" ; then',
51-
' eerror "If you wish to continue booting, remove the resume= kernel parameter."',
52-
''' eerror " or run 'setvar noresume 1' from the recovery shell to skip resuming."''',
53-
' rd_fail "Failed to resume from $(readvar resume)."',
54-
" fi",
55-
" else",
56-
" einfo \"Resume device '$resumeval' not found\"",
57-
" fi",
58-
"fi",
59-
]
39+
def handle_early_resume(self) -> str:
40+
return """
41+
resumeval="$(readvar resume)" # read the cmdline resume var
42+
if ! check_var noresume && [ -n "$resumeval" ] && [ -w /sys/power/resume ]; then
43+
# Resolve the UUID, PARTUUID, or LABEL to a device
44+
if echo "$resumeval" | grep -q "UUID=" ||
45+
echo "$resumeval" | grep -q "PARTUUID=" ||
46+
echo "$resumeval" | grep -q "LABEL=" ; then
47+
resume=$(blkid -t "$resumeval" -o device)
48+
else
49+
resume="$resumeval"
50+
fi
51+
if ! [ -z $resume ] ; then
52+
if ! resume "$resume" ; then
53+
eerror "If you wish to continue booting, remove the resume= kernel parameter."
54+
eerror " or run 'setvar noresume 1' from the recovery shell to skip resuming."
55+
rd_fail "Failed to resume from $(readvar resume)."
56+
fi
57+
else
58+
einfo \"Resume device '$resumeval' not found\"
59+
fi
60+
fi
61+
"""
6062

6163

6264
@contains("late_resume")

0 commit comments

Comments
 (0)