MCPcopy Index your code
hub / github.com/archlinux/archinstall / select_additional_packages

Function select_additional_packages

archinstall/lib/packages/packages.py:121–200  ·  view source on GitHub ↗
(
	preset: list[str] = [],
	repositories: set[Repository] = set(),
)

Source from the content-addressed store, hash-verified

119
120
121async def select_additional_packages(
122 preset: list[str] = [],
123 repositories: set[Repository] = set(),
124) -> list[str]:
125 repositories |= {Repository.Core, Repository.Extra}
126
127 respos_text = ', '.join(r.value for r in repositories)
128 output = tr('Repositories: {}').format(respos_text) + '\n'
129 output += tr('Loading packages...')
130
131 result = await Loading[dict[str, AvailablePackage]](
132 header=output,
133 data_callback=lambda: list_available_packages(tuple(repositories)),
134 ).show()
135
136 if result.type_ != ResultType.Selection:
137 debug('Error while loading packages')
138 return preset
139
140 packages = result.get_value()
141
142 if not packages:
143 await Notify(tr('No packages found')).show()
144 return []
145
146 package_groups = PackageGroup.from_available_packages(packages)
147
148 # Additional packages (with some light weight error handling for invalid package names)
149 header = tr('Only packages such as base, sudo, linux, linux-firmware, efibootmgr and optional profile packages are installed.') + '\n'
150 header += tr('Note: base-devel is no longer installed by default. Add it here if you need build tools.') + '\n'
151 header += tr('Select any packages from the below list that should be installed additionally') + '\n'
152
153 # there are over 15k packages so this needs to be quick
154 preset_packages: list[AvailablePackage | PackageGroup] = []
155 for p in preset:
156 if p in packages:
157 preset_packages.append(packages[p])
158 elif p in package_groups:
159 preset_packages.append(package_groups[p])
160
161 items = [
162 MenuItem(
163 name,
164 value=pkg,
165 preview_action=lambda x: x.value.info() if x.value else None,
166 )
167 for name, pkg in packages.items()
168 ]
169
170 items += [
171 MenuItem(
172 name,
173 value=group,
174 preview_action=lambda x: x.value.info() if x.value else None,
175 )
176 for name, group in package_groups.items()
177 ]
178

Callers 1

Calls 14

set_selected_by_valueMethod · 0.95
trFunction · 0.90
debugFunction · 0.90
NotifyClass · 0.90
MenuItemClass · 0.90
MenuItemGroupClass · 0.90
list_available_packagesFunction · 0.85
formatMethod · 0.80
get_valuesMethod · 0.80
showMethod · 0.45
get_valueMethod · 0.45

Tested by

no test coverage detected