https://github.com/cachyos/repo-manage-util
WIP
https://github.com/cachyos/repo-manage-util
Last synced: about 1 year ago
JSON representation
WIP
- Host: GitHub
- URL: https://github.com/cachyos/repo-manage-util
- Owner: CachyOS
- License: gpl-3.0
- Created: 2024-08-16T22:46:05.000Z (almost 2 years ago)
- Default Branch: develop
- Last Pushed: 2025-01-03T22:35:51.000Z (over 1 year ago)
- Last Synced: 2025-05-08T01:45:35.506Z (about 1 year ago)
- Language: Rust
- Size: 70.3 KB
- Stars: 3
- Watchers: 0
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# repo-manage-util
A command-line utility for managing Arch Linux repositories.
## Features
- **Reset:** Resets the repository database and removes outdated packages.
- **Update:** Updates the repository database with new packages and removes stale packages.
- **Sync:** Updates the repository database with newer packages from the reference repository database.
- **MovePkgsToRepo:** Moves packages from the current directory to the repository.
- **MovePkgs:** Moves packages from one repository to another repository.
- **IsPkgsUpToDate:** Checks if the packages in the repository are up-to-date.
- **CleanupBackupDir:** Cleans up the backup directory, removing older package versions.
## Installation
### From the AUR
You can install `repo-manage-util` directly from the AUR using your preferred AUR helper. For example, using `paru`:
TBD
### Building from Source
Or can be built from source:
```bash
git clone https://github.com/cachyos/repo-manage-util.git
cd repo-manage-util
cargo install --path .
```
This will build and install the binary to `$HOME/.cargo/bin/`. Make sure this directory is in your `PATH` environment variable.
## Configuration
The configuration file is located at `~/.config/repo-manage/config.toml` or `/etc/repo-manage/config.toml`.
**Example Configuration:**
```toml
[profiles.myrepo]
repo = "/path/to/myrepo.db.tar.zst"
add_params = ["--sign", "--include-sigs"]
rm_params = ["--sign"]
require_signature = true
backup = true
backup_dir = "/path/to/backup/dir"
backup_num = 3 # Keep last 3 versions
debug_dir = "/path/to/debug/dir"
interactive = false
reference_repo = "/ref/path/to/myrepo.db.tar.zst"
```
**Explanation of the Example Configuration:**
- **`[profiles.myrepo]`**: This defines a profile named "myrepo". You can have multiple profiles for different repositories.
- **`repo = "/path/to/myrepo.db.tar.zst"`**: This specifies the path to the repository database file (the `.db.tar.zst` file).
- **`add_params = ["--sign", "--include-sigs"]`**: These are additional parameters that will be passed to the `repo-add` command when adding packages to the repository. In this case, it's telling `repo-add` to sign the database and include signatures.
- **`rm_params = ["--sign"]`**: Similar to `add_params`, these are additional parameters passed to the `repo-remove` command, used when removing packages from the repository. Here, it tells `repo-remove` to sign the database after removal.
- **`require_signature = true`**: This setting enforces that packages must have valid signatures before being added to the repository. This is a good security practice.
- **`backup = true`**: This enables the backup feature. When enabled, outdated packages will be moved to the backup directory instead of being deleted.
- **`backup_dir = "/path/to/backup/dir"`**: This specifies the directory where outdated packages will be backed up.
- **`backup_num = 3`**: This sets a limit on the number of versions to keep for each package in the backup directory. In this case, only the last 3 versions of each package will be kept.
- **`debug_dir = "/path/to/debug/dir"`**: This option is used to specify a directory where debug packages should be stored.
- **`interactive = false`**: This disables interactive mode. When disabled, the tool will not prompt for confirmation before performing actions.
- **`reference_repo = "/ref/path/to/myrepo.db.tar.zst"`**: This specifies the path to the reference repository database file (the `.db.tar.zst` file).
**Configuration Options:**
- **repo:** Path to the repository database file.
- **add_params:** Additional parameters to pass to `repo-add`.
- **rm_params:** Additional parameters to pass to `repo-remove`.
- **require_signature:** Whether to require package signatures.
- **backup:** Whether to backup outdated packages.
- **backup_dir:** Directory to store backup packages.
- **backup_num:** Number of package versions to keep in the backup directory.
- **debug_dir:** Directory to store debug packages.
- **interactive:** Whether to prompt for confirmation before performing actions.
## Usage
```
repo-manage-util --profile [COMMAND]
```
**Available Commands:**
- **reset:** Resets the repository.
- **update:** Updates the repository.
- **sync:** Syncs repository with the reference repository.
- **move-pkgs-to-repo:** Moves packages from the current directory to the repository.
- **move-pkgs** Moves packages from one repository to another repository.
- **is-pkgs-up-to-date:** Checks if the packages in the repository are up-to-date.
- **cleanup-backup-dir:** Cleans up the backup directory.
**Example:**
```bash
repo-manage-util --profile myrepo update
```
For comprehensive usage instructions and examples, please refer to the **Usage** section in the main documentation (available after installation using `repo-manage-util --help`).
## Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub.
## License
This project is licensed under the GPLv3 License. See the LICENSE file for details.