Files
arch-fullupgrade/README.md
T

99 lines
2.7 KiB
Markdown

# fullupgrade
Minimal Bash tools for Arch Linux maintenance and Git release automation.
## Overview
This repository contains two small Bash scripts:
- `fullupgrade`: updates an Arch Linux system and performs cleanup
- `makerelease.sh`: automates a Git release from `dev` to `main`
The project is intentionally small and focused on a simple, opinionated workflow.
## Requirements
- Bash
- `pacman` for `fullupgrade`
- `git` for `makerelease.sh`
- root privileges for `fullupgrade`
- a local Git repository with `dev` and `main` branches for `makerelease.sh`
## `fullupgrade`
`fullupgrade` performs the following steps:
1. updates `archlinux-keyring`
2. runs a full system synchronization with `pacman -Syu --noconfirm`
3. removes orphaned packages if any are found
4. cleans the pacman cache with `pacman -Sc --noconfirm`
### Usage
```bash
sudo ./fullupgrade
```
### Notes
- The script must be run as `root`.
- It does not ask for confirmation.
- It can remove packages and clean the package cache, so review the output carefully.
## `makerelease.sh`
`makerelease.sh` automates a Git release workflow:
1. checks that the current branch is `dev` for real releases
2. verifies the working tree is clean
3. optionally computes a new version from an increment shortcut
4. displays the chosen release tag
5. asks for confirmation before any Git action
6. switches to `main`
7. merges `dev` into `main`
8. pushes `main`
9. creates an annotated tag
10. pushes tags
11. switches back to the original branch on exit
### Usage
```bash
./makerelease.sh VERSION
./makerelease.sh +0.0.1
./makerelease.sh +0.1
./makerelease.sh +1
./makerelease.sh --dry-run VERSION
./makerelease.sh --dry-run +0.0.1
./makerelease.sh --dry-run +0.1
./makerelease.sh --dry-run +1
```
### Examples
```bash
./makerelease.sh 1.2.0
./makerelease.sh --dry-run +0.0.1
```
### Notes
- Run the script from a clean, local Git repository.
- Make sure the `dev` branch contains the changes you want to release.
- `VERSION` is used directly as the tag name.
- If `VERSION` starts with `+`, it is treated as an increment based on the latest existing tag.
- `--dry-run` can be used from any branch and only prints the computed tag.
- In normal mode, the computed tag is shown and a confirmation is required before Git actions run.
- The script may fail if Git state is unexpected or if a tag already exists.
- The tag message is automatically generated as `Release <version>`.
## Status
This repository is intentionally minimal.
- `fullupgrade` is hardened with `set -euo pipefail`.
- `makerelease.sh` now includes clean-tree checks, duplicate tag protection, increment shortcuts, dry-run support from any branch, and a trap to return to the original branch on exit.
## License
GPLv3