* feat(obs-integration): add OBS integration plugin * docs(obs-integration): add README.md * chore(obs-integration): rename obs-integration-thumbnail.webp to thumbnail.webp * i18n(obs-integration): fix PR check * fix(obs-integration): honor selected rebuild architecture * fix(obs-integration): reject dot-prefixed names in validName * fix(obs-integration): treat empty checkout_dir as unset * feat(obs-integration): add repo/arch rebuild selection with confirmation * chore(obs-integration): add opensuse tag to plugin.toml * chore(obs-integration): new thumbnail * fix(obs-integration): fix rebuild controls inheriting flexGrow from reused nodes * feat(obs-integration): overhaul package actions, logging, and navigation * chore(obs-integration): new thumbnail * feat(obs-integration): label Service Run All button, move build logs * fix(obs-integration): split logs based on action source * fix(obs-integration): correct log display locations and resets * feat(obs-integration): add confirmation to remove file * feat(obs-integration): move edit package meta to header * fix(obs-integration): layout repo/arch label/select alignment * fix(obs-integration): clean rebuild log duplication * fix(obs-integration): persist logSource in nav state for panel reopen * i18n(obs-integration): change 'Repo' to 'Repositories' and 'Arch' to 'Architectures' * feat(obs-integration): add home nav button, fix header label clipping, rebuild controls layout * chore(obs-integration): change plugin's panel height * docs(obs-integration): document source-service operations in README * fix(obs-integration): correct rebuild log display and persistence, sync UI layout --------- Co-authored-by: neyfua <ogkhang.05@gmail.com>
96 lines
4.2 KiB
Markdown
96 lines
4.2 KiB
Markdown
# OBS Integration
|
|
|
|
Manage openSUSE Build Service projects and packages from Noctalia. The bar
|
|
widget toggles a panel for browsing your projects, checking out packages,
|
|
editing metadata and files, and triggering rebuilds on OBS — without leaving
|
|
the shell.
|
|
|
|
## Plugin
|
|
|
|
| Field | Value |
|
|
| --- | --- |
|
|
| ID | `neyfua/obs-integration` |
|
|
| Entries | Bar widget: `obs-integrate`; panel: `panel` |
|
|
|
|
## Requirements
|
|
|
|
Install the openSUSE Build Service `osc` CLI on `PATH` and configure your
|
|
credentials in `~/.config/osc/oscrc` (for example with `osc apiservice` setup
|
|
or by copying a working `oscrc`). The plugin shells out to `osc` for every
|
|
operation, so all authentication stays in your normal OBS configuration.
|
|
|
|
## Usage
|
|
|
|
Add the `obs-integrate` widget to a bar. Left-click it to open the panel.
|
|
|
|
Open the panel directly with:
|
|
|
|
```sh
|
|
noctalia msg panel-toggle neyfua/obs-integration:panel
|
|
```
|
|
|
|
### My Projects
|
|
|
|
The panel opens on **My Projects**: every project you maintain, plus every
|
|
project where you are listed as a package maintainer on OBS. Search filters the
|
|
list, and the sort button toggles A-Z / Z-A order. The pen icon edits the
|
|
project metadata (`osc meta prj -e`).
|
|
|
|
### Inside a project
|
|
|
|
Click a project to list its packages. A package's icon turns **primary** when
|
|
that package is checked out in your local directory. Click a package to open
|
|
its actions:
|
|
|
|
- **Checkout package** — `osc co` in the configured checkout directory
|
|
(hidden once the package is already checked out).
|
|
- **Edit files** — expandable list of editable sources: `_service` and the
|
|
package's `.spec` open in your `$EDITOR`; the `.changes` file runs
|
|
`osc vc`.
|
|
- **Files** — lists every non-dotfile in the checkout. Each file has a remove
|
|
button; below the list, **Add/Remove** runs `osc ar` asynchronously in the
|
|
panel. **Commit** runs `osc status` first; if pending changes exist it
|
|
opens a terminal with `osc ci` so you can edit the commit message, otherwise
|
|
the commit runs asynchronously in the panel.
|
|
- **Service Local Run** — runs `osc service r` in the checkout, executing the
|
|
package's source-service scripts locally (local side effects: the `_service`
|
|
scripts can modify files in the checkout).
|
|
- **Service Manual Run** — runs `osc service mr` in the checkout, running the
|
|
source-service scripts locally in "manual" mode (local side effects, like
|
|
Service Local Run).
|
|
- **Service Run All** — runs `osc service ra` in the checkout, running all
|
|
source-service scripts locally. Requires a confirmation click (turns
|
|
**secondary** with a **check** glyph) before it executes.
|
|
- **Service Remote Run** — runs `osc service rr` on the OBS server for the
|
|
package on the remote project. No local code executes; the request triggers
|
|
server-side service runs, and a confirmation is not required.
|
|
- **Rebuild package** — pick an architecture (or **All**) and trigger
|
|
`osc rebuild`. Confirmation is required before it runs.
|
|
- **Edit package meta** — `osc meta pkg -e` in a terminal.
|
|
- **Remove package** — deletes the checkout from disk only (never touches the
|
|
OBS project); confirm before it runs. If it was the last package in the
|
|
project directory, the directory is removed too.
|
|
|
|
### Sticky navigation
|
|
|
|
The panel reopens where you left off — inside the same project or package.
|
|
|
|
## Settings
|
|
|
|
| Setting | Type | Default | Description |
|
|
| --- | --- | --- | --- |
|
|
| `checkout_dir` | `string` | `~/OBS` | Base directory where packages are checked out. Packages land in `<checkout_dir>/<project>/<package>`. |
|
|
| `show_label` | `bool` | `false` | Show the "OBS" label next to the bar icon. |
|
|
|
|
## Notes
|
|
|
|
The plugin runs the `osc` CLI with your existing credentials — it stores
|
|
nothing itself beyond a small cache of project/package listings and your last
|
|
navigated view. Removal is local-only and never modifies the OBS project.
|
|
Most operations (rebuilds, service runs, updates, add/remove) run
|
|
asynchronously and display their output directly in the panel. The Commit
|
|
operation opens a terminal only when `osc status` reports pending changes;
|
|
otherwise, it runs asynchronously in the panel. Confirmation prompts precede
|
|
destructive and side-effecting operations: Rebuild package, Remove package,
|
|
and Service Run All.
|