From 2c55fdd84a6d985312968ffb7b63b9ceb409a609 Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Thu, 2 Nov 2023 23:27:27 -0700 Subject: [PATCH] chore: Add new script to set rebase branch, allow use with polkit and execute from os-branch-select. --- .../deck/shared/usr/libexec/os-branch-select | 16 +++++++------- .../shared/usr/libexec/ublue-update-rebase | 4 ++++ .../actions/org.bazzite.rebase.policy | 21 +++++++++++++++++++ .../share/polkit-1/rules.d/10-rebase.rules | 6 ++++++ 4 files changed, 40 insertions(+), 7 deletions(-) mode change 100644 => 100755 system_files/deck/shared/usr/libexec/os-branch-select create mode 100755 system_files/deck/shared/usr/libexec/ublue-update-rebase create mode 100644 system_files/deck/shared/usr/share/polkit-1/actions/org.bazzite.rebase.policy create mode 100644 system_files/deck/shared/usr/share/polkit-1/rules.d/10-rebase.rules diff --git a/system_files/deck/shared/usr/libexec/os-branch-select b/system_files/deck/shared/usr/libexec/os-branch-select old mode 100644 new mode 100755 index bad0eb60..3a7df521 --- a/system_files/deck/shared/usr/libexec/os-branch-select +++ b/system_files/deck/shared/usr/libexec/os-branch-select @@ -1,13 +1,15 @@ #!/bin/bash set -e -IMAGE_INFO="/usr/share/ublue-os/image-info.json" -IMAGE_REF=$(jq -r '."image-ref"' < $IMAGE_INFO) - if [[ $# -eq 1 ]]; then case "$1" in "-c") - branch=$(cut -d ":" -f4 <<< "$(rpm-ostree status | grep -m 1 'bazzite')") + if [[ -f /var/ublue-update/branch ]]; then + branch=$(cat /var/ublue-update/branch) + else + branch=$(cut -d ":" -f4 <<< "$(rpm-ostree status | grep -m 1 'bazzite')") + fi + case "$branch" in "latest" | "testing" | "unstable") echo "$branch" @@ -28,14 +30,14 @@ if [[ $# -eq 1 ]]; then echo unstable exit 0 ;; - "latest" | "testing" | "unstable") - /usr/bin/rpm-ostree rebase "$IMAGE_REF":"$1" + "latest" | "testing") + /usr/bin/pkexec /usr/libexec/ublue-update-rebase "$1" exit 0 ;; "unstable") echo "The unstable branch has a high risk of breaking." echo "Do NOT use it unless you know what you are doing." - /usr/bin/rpm-ostree rebase "$IMAGE_REF":"$1" + /usr/bin/pkexec /usr/libexec/ublue-update-rebase "$1" exit 0 ;; esac diff --git a/system_files/deck/shared/usr/libexec/ublue-update-rebase b/system_files/deck/shared/usr/libexec/ublue-update-rebase new file mode 100755 index 00000000..be8ff443 --- /dev/null +++ b/system_files/deck/shared/usr/libexec/ublue-update-rebase @@ -0,0 +1,4 @@ +#!/bin/bash +set -e + +echo "$1" | sudo tee -a /var/ublue-update/branch > /dev/null diff --git a/system_files/deck/shared/usr/share/polkit-1/actions/org.bazzite.rebase.policy b/system_files/deck/shared/usr/share/polkit-1/actions/org.bazzite.rebase.policy new file mode 100644 index 00000000..46a73210 --- /dev/null +++ b/system_files/deck/shared/usr/share/polkit-1/actions/org.bazzite.rebase.policy @@ -0,0 +1,21 @@ + + + + + Bazzite + https://github.com/ublue-os/bazzite/ + + + Set desired branch for ublue-update rebase + package-x-generic + + yes + yes + yes + + /usr/libexec/ublue-update-rebase + + + diff --git a/system_files/deck/shared/usr/share/polkit-1/rules.d/10-rebase.rules b/system_files/deck/shared/usr/share/polkit-1/rules.d/10-rebase.rules new file mode 100644 index 00000000..bb58604e --- /dev/null +++ b/system_files/deck/shared/usr/share/polkit-1/rules.d/10-rebase.rules @@ -0,0 +1,6 @@ +polkit.addRule(function(action, subject) { + if ((action.id == "org.bazzite.rebase.pkexec") && + subject.isInGroup("wheel")) { + return polkit.Result.YES; + } +}); \ No newline at end of file