|
1 | | -__author__ = 'desultory' |
2 | | -__version__ = '2.4.0' |
| 1 | +__author__ = "desultory" |
| 2 | +__version__ = "2.5.0" |
3 | 3 |
|
4 | 4 |
|
5 | | -def parse_cmdline_bool(self) -> str: |
6 | | - """ |
7 | | - Returns a bash script to parse a boolean value from /proc/cmdline |
| 5 | +def parse_cmdline_bool(self) -> list[str]: |
| 6 | + """Returns a bash script to parse a boolean value from /proc/cmdline |
8 | 7 | The only argument is the name of the variable to be read/set |
9 | 8 | """ |
10 | | - return ['edebug "Parsing cmdline bool: $1"', |
11 | | - r'setvar "$1" "$(grep -qE "(^|\s)$1(\s|$)" /proc/cmdline && echo 1 || echo 0)"'] |
| 9 | + return [ |
| 10 | + 'edebug "Parsing cmdline bool: $1"', |
| 11 | + r'setvar "$1" "$(grep -qE "(^|\s)$1(\s|$)" /proc/cmdline && echo 1 || echo 0)"', |
| 12 | + ] |
12 | 13 |
|
13 | 14 |
|
14 | | -def parse_cmdline_str(self) -> str: |
15 | | - """ |
16 | | - Returns a bash script to parse a string value from /proc/cmdline |
| 15 | +def parse_cmdline_str(self) -> list[str]: |
| 16 | + """Returns a bash script to parse a string value from /proc/cmdline |
17 | 17 | The only argument is the name of the variable to be read/set |
18 | 18 | """ |
19 | | - return ['edebug "Parsing cmdline string: $1"', |
20 | | - r'val=$(grep -oP "(?<=$1=)[^\s]+" /proc/cmdline)', |
21 | | - 'if [ -n "$val" ]; then', |
22 | | - ' edebug "Parsed $1: $val"', |
23 | | - ' setvar "$1" "$val"', |
24 | | - 'fi'] |
| 19 | + return [ |
| 20 | + 'edebug "Parsing cmdline string: $1"', |
| 21 | + r'val=$(grep -oP "(?<=$1=)[^\s]+" /proc/cmdline)', |
| 22 | + 'if [ -n "$val" ]; then', |
| 23 | + ' edebug "Parsed $1: $val"', |
| 24 | + ' setvar "$1" "$val"', |
| 25 | + "fi", |
| 26 | + ] |
| 27 | + |
25 | 28 |
|
| 29 | +def parse_cmdline(self) -> list[str]: |
| 30 | + """Returns bash script to parse /proc/cmdline""" |
| 31 | + return [ |
| 32 | + r"""cmdline=$(awk -F '--' '{print $1}' /proc/cmdline)""", # Get everything before '--' |
| 33 | + r'''setvar INIT_ARGS "$(awk -F '--' '{print $2}' /proc/cmdline)"''', # Get everything after '--' |
| 34 | + f"""for bool in {" ".join([f'"{bool}"' for bool in self['cmdline_bools']])}; do""", |
| 35 | + ' parse_cmdline_bool "$bool"', |
| 36 | + "done", |
| 37 | + f"""for string in {" ".join([f'"{string}"' for string in self['cmdline_strings']])}; do""", |
| 38 | + ' parse_cmdline_str "$string"', |
| 39 | + "done", |
| 40 | + 'einfo "Parsed cmdline: $cmdline"', |
| 41 | + ] |
26 | 42 |
|
27 | | -def parse_cmdline(self) -> str: |
28 | | - """ Returns bash script to parse /proc/cmdline """ |
29 | | - return [r'''cmdline=$(awk -F '--' '{print $1}' /proc/cmdline)''', # Get everything before '--' |
30 | | - r'''setvar INIT_ARGS "$(awk -F '--' '{print $2}' /proc/cmdline)"''', # Get everything after '--' |
31 | | - f'''for bool in {" ".join([f'"{bool}"' for bool in self['cmdline_bools']])}; do''', |
32 | | - ' parse_cmdline_bool "$bool"', |
33 | | - 'done', |
34 | | - f'''for string in {" ".join([f'"{string}"' for string in self['cmdline_strings']])}; do''', |
35 | | - ' parse_cmdline_str "$string"', |
36 | | - 'done', |
37 | | - 'einfo "Parsed cmdline: $cmdline"'] |
38 | 43 |
|
| 44 | +def mount_cmdline_root(self) -> list[str]: |
| 45 | + """Returns bash script to mount root partition based on /proc/cmdline""" |
| 46 | + return [ |
| 47 | + "root=$(readvar root)", |
| 48 | + 'if [ -z "$root" ]; then', |
| 49 | + ' edebug "No root partition specified in /proc/cmdline, falling back to mount_root"', |
| 50 | + " mount_root", |
| 51 | + " return", |
| 52 | + "fi", |
| 53 | + 'roottype="$(readvar roottype auto)"', |
| 54 | + '''rootflags="$(readvar rootflags 'defaults,ro')"''', |
| 55 | + 'einfo "Mounting root partition based on /proc/cmdline: $root -t $roottype -o $rootflags"', |
| 56 | + 'if ! mount "$root" "$(readvar MOUNTS_ROOT_TARGET)" -t "$roottype" -o "$rootflags"; then', |
| 57 | + ' eerror "Failed to mount the root partition using /proc/cmdline: $root -t $roottype -o $rootflags"', |
| 58 | + " mount_root", |
| 59 | + "fi", |
| 60 | + ] |
39 | 61 |
|
40 | | -def mount_cmdline_root(self) -> str: |
41 | | - """ Returns bash script to mount root partition based on /proc/cmdline """ |
42 | | - return ['root=$(readvar root)', |
43 | | - 'if [ -z "$root" ]; then', |
44 | | - ' edebug "No root partition specified in /proc/cmdline, falling back to mount_root"', |
45 | | - ' mount_root', |
46 | | - ' return', |
47 | | - 'fi', |
48 | | - 'roottype="$(readvar roottype auto)"', |
49 | | - '''rootflags="$(readvar rootflags 'defaults,ro')"''', |
50 | | - 'einfo "Mounting root partition based on /proc/cmdline: $root -t $roottype -o $rootflags"', |
51 | | - 'if ! mount "$root" "$(readvar MOUNTS_ROOT_TARGET)" -t "$roottype" -o "$rootflags"; then', |
52 | | - ' eerror "Failed to mount the root partition using /proc/cmdline: $root -t $roottype -o $rootflags"', |
53 | | - ' mount_root', |
54 | | - 'fi'] |
55 | 62 |
|
| 63 | +def export_exports(self) -> list[str]: |
| 64 | + """Returns a bash script exporting all exports defined in the exports key.""" |
| 65 | + from importlib.metadata import PackageNotFoundError, version |
56 | 66 |
|
57 | | -def export_exports(self) -> list: |
58 | | - """ Returns a bash script exporting all exports defined in the exports key. """ |
59 | | - from importlib.metadata import version, PackageNotFoundError |
60 | 67 | try: |
61 | | - self['exports']['VERSION'] = version(__package__.split('.')[0]) |
| 68 | + self["exports"]["VERSION"] = version(__package__.split(".")[0]) |
62 | 69 | except PackageNotFoundError: |
63 | | - self['exports']['VERSION'] = 9999 |
64 | | - return [f'setvar {key} "{value}"' for key, value in self['exports'].items()] |
| 70 | + self["exports"]["VERSION"] = 9999 |
| 71 | + return [f'setvar {key} "{value}"' for key, value in self["exports"].items()] |
0 commit comments