Commit Graph

46 Commits

Author SHA1 Message Date
Daniel Girtler ac4bc442de
Refactor logging and formatting logic (#4542)
* Refactor logging and formatting

* Refactor logging and formatting

* Refactor logging and formatting

* Updaet
2026-05-19 17:48:03 +02:00
Softer 7b5dddf34b
Fix truncated package metadata in additional packages preview (#3580) (#4510)
* Fix truncated package metadata in additional packages preview (#3580)

* Simplify package info fix: use rstrip and CSS wrap instead of env var plumbing

* Apply preview text wrap conditionally via wrap_preview parameter

* Add missing wrap-preview CSS to OptionListScreen and pass parameter through SelectMenu
2026-05-07 10:17:13 +10:00
Daniel Girtler b18cc57216
Pull `ui` module one level up (#4515)
* Pull the UI module one level up

* Update
2026-05-03 23:54:42 +02:00
Daniel Girtler b2f413124b
Allow granular plasma configuration (#4389)
* Flexible plasma profile selection

* Update

* Update

* Update

* Update
2026-04-10 07:07:28 +02:00
Daniel Girtler b186fb3f64
Async menu (#4308)
* Move to async TUI

* Update

* Update
2026-03-16 10:39:36 +11:00
Daniel Girtler e4faba2de0
Convert imports to absolute imports (#4196)
* Enable ruff absolute import check

* Convert all relative imports to absolute

* Update

* Update
2026-02-26 20:17:48 +11:00
Daniel Girtler 4f87ccba28
Refactor general utility functions (#4212) 2026-02-25 22:45:21 +01:00
Daniel Girtler 449c1bfb36
Rename ask* functions to select* (#4191) 2026-01-31 08:17:11 +11:00
Daniel Girtler 5612325dc3
Refactor code to reduce circular dep (#4175)
* Refactor to reduce circular dep

* Update

* Update
2026-01-28 13:43:57 +01:00
Daniel Girtler 2421e538a8
Move Pacman out of init (#4150)
* Move pacman out of init

* Update archinstall/lib/pacman/pacman.py

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>

* Update archinstall/lib/pacman/pacman.py

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>

---------

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>
2026-01-27 12:34:48 +11:00
Daniel Girtler 63e3825756
Remove obsolete package functions (#4145) 2026-01-26 23:33:21 +01:00
Daniel Girtler 0aca992ac5
Migrate UI to textual (#3997)
* Footer textual

* Linting

* Revert pre-commit for pylint

* Add missing textual

* Reinstate example

* Linting
2026-01-19 07:01:40 +11:00
Daniel Girtler 7635474772
Explicitly allow selecting any additional repository (#3973)
Co-authored-by: Daniel Girtler <dgirtler@atlassian.com>
2025-12-27 09:25:15 +01:00
Gabriel A Hernandez 7398e2785d
Typo and grammar fixes (#3970)
* Menu now filters and sorts using priority, improving UX.

* Refactor: improve logic, removed redundancy

* Refactor: improve logic, removed redundancy

* Typo and grammar fixes

* Typo and grammar fixes

* Fix comment formatting in .gitlab-ci.yml

* Fix comment

* Removed code from separate pull request

* Update menu_item.py

* removed white space

* Remove unnecessary blank lines in menu_item.py

>:(
2025-12-06 20:06:07 +11:00
Daniel Girtler ea8d64a6d3
Fix upgrade version header (#3738)
* Fix header new version display

* Update
2025-08-27 10:29:23 +02:00
Daniel Girtler 7d94210cd3
Fix parsing of systemd package version (#3732) 2025-08-27 10:23:03 +02:00
correctmost b0ede3c165
Fix a type annotation for list_available_packages (#3711)
The repositories parameter is a variable-length tuple instead of a
one-element tuple.
2025-08-06 07:02:01 +00:00
Daniel Girtler 063b9643b4
Add new version indicator in the title of the main menu (#3587)
* Add new version indicator in the title of the main menu

* Update
2025-06-12 07:14:30 +10:00
Daniel Girtler d3f32f308c
Update ruff formatter (#3496)
* Update ruff formatter

* Update
2025-05-24 07:58:42 +00:00
Daniel Girtler c67ac97f18
Ruff formatting (#3459)
* Update

* Update
2025-05-15 14:26:41 +02:00
Daniel Girtler f837387d49
Fix 3315 - package loading (#3317) 2025-03-31 07:44:53 +02:00
Anton Hvornum 1fbb21f38a
Made sure to update the package databases before running --info (#3311) 2025-03-30 20:53:41 +02:00
Daniel Girtler 1b890492d0
Refactor code (#3247) 2025-03-25 09:49:18 +01:00
correctmost f100e5110d
Use __all__ in __init__.py files to fix unused-import warnings (#3252)
This commit allows ruff and flake8 ignores to be removed. It also
allows mypy to be run in strict mode by default.
2025-03-13 14:19:05 +11:00
correctmost a5fcf21a12
Speed up _parse_package_output by caching normalized key strings (#3239)
This commit helps avoid ~260,000 chained strip(), lower(), and
replace() sequences.
2025-03-10 22:04:41 +11:00
correctmost d9ac33dbe8
Fix a non-pep695-generic-function ruff warning (#3218) 2025-03-02 22:01:56 +11:00
Daniel Girtler 74b41dea96
Add additional package selector (#3196) 2025-02-24 17:57:26 +11:00
correctmost f314b7be54
Replace some Any instances with specific type hints (#2950) 2024-11-28 20:14:58 +11:00
correctmost 3255744278
Sort and format remaining imports (#2877)
This commit also enables isort rules in the Ruff config.
2024-11-19 11:18:47 +11:00
correctmost 7776f82cbc
Reduce the max line length from 220 to 160 by wrapping some lines (#2867)
This will make it easier to auto-format import sections.
2024-11-19 07:50:53 +11:00
correctmost ecad6762e5
Fix some mypy warnings in the lib/ directory (#2822) 2024-11-16 18:27:26 +11:00
correctmost 01b72b9293
Remove most of the remaining deprecated typing imports (#2818) 2024-11-16 14:01:24 +11:00
correctmost c87c723549
Remove most deprecated typing.Dict usage (#2813) 2024-11-16 11:57:46 +11:00
correctmost dff101e279
Remove most deprecated typing.List usage (#2810) 2024-11-16 10:13:51 +11:00
correctmost aecf3ea553
Add Pylint support and enable Pylint CI checks (#2658) 2024-11-04 14:30:28 +01:00
correctmost 62b4099c8d
Fix whitespace issues detected by flake8 (#2652)
This commit also removes exclusions that are no longer needed.
2024-08-29 01:40:53 +10:00
Daniel Girtler edbc135903
Extend the mypy checks (#2120)
* Extend the mypy checks

* Update

* Update

* Update

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2023-10-03 18:31:17 +11:00
Daniel Girtler 5c903df55f
Simplify SysCommand decoding (#2121) 2023-10-02 21:01:23 +11:00
Himadri Bhattacharjee 1ae1f2ff11
Refactor installer and general design patterns (#1895)
* fix: refactor clear_vt100_escape_codes

* fix: check for structure being a dict after handling potential parsing errors

* refactor: use short circuit logic than if-elif-else chains

* fix: use or for nullish moutpoint attribute

* fix: better error handling for JSON from urls and paths

* chore: json_stream_to_structure documentation

* refactor: dry up relative and chroot path for custom command scripts

* refactor: use write_text for pathlib.Path object

* refactor: use sets to find intersection instead of filter and list

* refactor: replace loop with dictionary comprehension in preparing luks partition

* refactor: use walrus operator to check if luks_handler exists

* refactor: use read_text and splitlines for potential Path object

* fix: use keepends in splitlines for compatibility

* fix: use keepends in splitlines for compatibility

* feat: set pacman_conf Path as an attribute of installer

* fix: empty string is a part of any string, avoid tuples

* refactor: use iterator patterns to uncomment multilib and testing blocks

* fix: don't json.loads an already loaded structure

* fix: use fstab_path uniformly in genfstab

* fix: remove unused variable matched

* refactor: create separate class to modify pacman.conf in a single pass

* fix: remove unused attribute pacman_conf from installer

* fix: remove unused attribute pacman_conf from installer

* feat: add persist method for pacman.conf, rewrite only when needed

* fix: use path.write_text for locale.conf

* use `or` operator for nullish new_conf

* refactor: Installer.target is always a pathlib.Path object, do not check for string type

* fix: use Optional[str] in function type definition instead of sumtype of str and None

* fix: mypy type annotation

* fix: make flake8 happy

* chore: move pacman config and repo into pacman module

* refactor: use Pacman object instead of Installer's pacstrap method

* fix: break after first sync

* fix: keep old build script for now

* use nullish operator for base_packages and disk_encryption of Installer

* feat: use shutil.which instead of rolling our own implementation

* fix: check for binary only if list is not empty

* fix: import Enum and fix mypy errors

* refactor: use nullish operator for default values

* refactor: linear search for key in Installer._trace_log only once

* fix: use logs instead of the entirety of self._trace_log when searching for key

* refactor: do not copy slice of bytes for search

* refactor: use rfind only once to iterate over logs, do not raise ValueError in clear_vt100_escape_codes since TYPE_CHECKING will take care of it.

* refactor: try decoding trace log before falling back to strigification

* refactor: use an empty dict as default for callbacks in SysCommand.__init__

* refactor: use nullish or operator for slice start and end when not specified

* refactor: use nullish or operator for SysCommand session

* refactor: use pre-existing decode method in __repr__ for SysCommand

* fix: overindentation

* fix: use shallow copy of callbacks to prevent mutating the key-value relationships of the argument dict

* refactor: use truthy value of self.session is not None for json encoding SysCommand

* refactor: directly assign to SysCommand.session in create_session since it short circuits to True if already present

* refactor: use dict.items() instead of manually retrieving the value using the key

* refactor: user_config_to_json method sounds pretty self explanatory

* refactor: store path validity as boolean for return

* refactor: use pathlib.Path.write_text to write configs to destinations

* fix: cannot use assignment expressions with expression

* fix: use config_output.save for saving both config and creds

* refactor: switch dictionary keys and values for options to avoid redundancy

* refactor: use itertools.takewhile to collect locale.gen entries until the empty line

* refactor: use iterative approach for nvidia driver fix

* refactor: install packages if not nvidia

* refactor: return early if no profile is selected

* refactor: use strip to remove commented lines

* fix: install additional packages only when we have a driver

* fix: path with one command is matched as relative to '.'

* fix: remove translation for debug log

---------

Co-authored-by: Anton Hvornum <anton@hvornum.se>
2023-06-28 13:42:53 +02:00
Daniel Girtler 00b0ae7ba4
PyParted and a large rewrite of the underlying partitioning (#1604)
* Invert mypy files

* Add optional pre-commit hooks

* New profile structure

* Serialize profiles

* Use profile instead of classmethod

* Custom profile setup

* Separator between back

* Support profile import via url

* Move profiles module

* Refactor files

* Remove symlink

* Add user to docker group

* Update schema description

* Handle list services

* mypy fixes

* mypy fixes

* Rename profilesv2 to profiles

* flake8

* mypy again

* Support selecting DM

* Fix mypy

* Cleanup

* Update greeter setting

* Update schema

* Revert toml changes

* Poc external dependencies

* Dependency support

* New encryption menu

* flake8

* Mypy and flake8

* Unify lsblk command

* Update bootloader configuration

* Git hooks

* Fix import

* Pyparted

* Remove custom font setting

* flake8

* Remove default preview

* Manual partitioning menu

* Update structure

* Disk configuration

* Update filesystem

* luks2 encryption

* Everything works until installation

* Btrfsutil

* Btrfs handling

* Update btrfs

* Save encryption config

* Fix pipewire issue

* Update mypy version

* Update all pre-commit

* Update package versions

* Revert audio/pipewire

* Merge master PRs

* Add master changes

* Merge master changes

* Small renaming

* Pull master changes

* Reset disk enc after disk config change

* Generate locals

* Update naming

* Fix imports

* Fix broken sync

* Fix pre selection on table menu

* Profile menu

* Update profile

* Fix post_install

* Added python-pyparted to PKGBUILD, this requires [testing] to be enabled in order to run makepkg. Package still works via python -m build etc.

* Swaped around some setuptools logic in pyproject

Since we define `package-data` and `packages` there should be no need for:
```
[tool.setuptools.packages.find]
where = ["archinstall", "archinstall.*"]
```

* Removed pyproject collisions. Duplicate definitions.

* Made sure pyproject.toml includes languages

* Add example and update README

* Fix pyproject issues

* Generate locale

* Refactor imports

* Simplify imports

* Add profile description and package examples

* Align code

* Fix mypy

* Simplify imports

* Fix saving config

* Fix wrong luks merge

* Refactor installation

* Fix cdrom device loading

* Fix wrongly merged code

* Fix imports and greeter

* Don't terminate on partprobe error

* Use specific path on partprobe from luks

* Update archinstall/lib/disk/device_model.py

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>

* Update archinstall/lib/disk/device_model.py

Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>

* Update github workflow to test archinstall installation

* Update sway merge

* Generate locales

* Update workflow

---------

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
Co-authored-by: Anton Hvornum <anton.feeds+github@gmail.com>
Co-authored-by: codefiles <11915375+codefiles@users.noreply.github.com>
2023-04-19 12:55:42 +02:00
Lautron 942112f871
Check if line begins with 'warning' before adding it to package info (#1674)
* Check if line begins with 'warning' before adding it to package info,
fix #1673

* Implement @Torxed suggestion from #1674

* Replaced 4 spaces with 1 tab

---------

Co-authored-by: Anton Hvornum <anton.feeds+github@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
2023-03-26 21:47:36 +02:00
Daniel d9d59bee68
Fix #1018 (#1021)
* Fix #1018

* Fix flake8

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
2022-03-03 13:54:43 +01:00
Daniel 4b3b21ed75
Check if pacman is available (#958)
* Check if pacman is available

* Update pacman call

* Added a graceful wait to `run_pacman`

* Fix flake8

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton.feeds+github@gmail.com>
2022-02-18 11:33:28 +01:00
Daniel 003a35be3d
Fix errors on selection of additional packages (#959)
* Fix errors on selection of additional packages

* Fix flake8

* Added the new /groups/search/json/?name=x endpoint merged today

* Fixed flake8 complaint

* Forgot to do json.loads() on the HTTP request result

* Update package selection

* Fix flake8

Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Co-authored-by: Anton Hvornum <anton@hvornum.se>
2022-02-12 11:47:51 +01:00
Anton Hvornum 389feef035
Torxed pydantic to dataclass (#935)
* Converted pydantic things to @dataclass definitions.

* Added import for the dataclasses

* flake8 fixes
2022-02-02 15:01:17 +01:00
Anton Hvornum c08520f990
SysCommand() to remove ANSII VT100 Esc codes & archlinux-keyring fix (#933)
* Fixed SysCommandWorker() so that it removes ANSII VT100 escape codes. I also moved package.py into it's own folder, as that's something I want to expand on a lot, so package related stuff should go in there. I created a installed_package() function which gets information about the locally installed package. I changed so that find_packages() and find_package() returns a data-model instead for the package information. This should unify and make sure we detect issues down the line.

* Working on structuring .version constructor that works with BaseModel

* Added version contructors to VersionDef(). Also added __eq__ and __lt__ to LocalPackage() and PackageSearchResult().

* removed debug and added a TODO

* Removed whitespace

* Removed mirror-database function from myrepo
2022-02-02 14:22:52 +01:00