Add dev package mode to Omarchy 4 upgrade
This commit is contained in:
+52
-26
@@ -1,15 +1,15 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# omarchy:summary=Upgrade a legacy Omarchy install to the package-backed Omarchy 4 layout.
|
# omarchy:summary=Upgrade a legacy Omarchy install to the package-backed Omarchy 4 layout.
|
||||||
# omarchy:args=[--yes] [--reboot] [--channel stable|rc|edge] [--user USER]
|
# omarchy:args=[--yes] [--reboot] [--dev] [--channel stable|rc|edge] [--user USER]
|
||||||
# omarchy:examples=omarchy upgrade to 4
|
# omarchy:examples=omarchy upgrade to 4 | omarchy upgrade to 4 --dev
|
||||||
# omarchy:requires-sudo=true
|
# omarchy:requires-sudo=true
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<'USAGE'
|
cat <<'USAGE'
|
||||||
Usage: omarchy-upgrade-to-4 [--yes] [--reboot] [--channel stable|rc|edge] [--user USER]
|
Usage: omarchy-upgrade-to-4 [--yes] [--reboot] [--dev] [--channel stable|rc|edge] [--user USER]
|
||||||
|
|
||||||
Upgrade any pre-4 Omarchy install to the package-backed Omarchy 4 layout.
|
Upgrade any pre-4 Omarchy install to the package-backed Omarchy 4 layout.
|
||||||
This script is intentionally self-contained so it can be shipped as a command
|
This script is intentionally self-contained so it can be shipped as a command
|
||||||
@@ -18,6 +18,7 @@ in Omarchy 3.8.x or run directly with curl | bash on older systems.
|
|||||||
Options:
|
Options:
|
||||||
-y, --yes Do not prompt before upgrading
|
-y, --yes Do not prompt before upgrading
|
||||||
--reboot Reboot automatically after a successful upgrade
|
--reboot Reboot automatically after a successful upgrade
|
||||||
|
--dev Use stop-gap packages from the [omarchy-dev] repo
|
||||||
--channel stable|rc|edge Override detected Omarchy package channel
|
--channel stable|rc|edge Override detected Omarchy package channel
|
||||||
--user USER User account to refresh after package install
|
--user USER User account to refresh after package install
|
||||||
-h, --help Show this help
|
-h, --help Show this help
|
||||||
@@ -54,6 +55,7 @@ channel_override="${OMARCHY_UPGRADE_CHANNEL:-${OMARCHY_CHANNEL:-${OMARCHY_MIRROR
|
|||||||
target_user="${OMARCHY_INSTALL_USER:-}"
|
target_user="${OMARCHY_INSTALL_USER:-}"
|
||||||
yes=0
|
yes=0
|
||||||
auto_reboot=0
|
auto_reboot=0
|
||||||
|
use_dev_packages=${OMARCHY_UPGRADE_DEV:-0}
|
||||||
|
|
||||||
while (($#)); do
|
while (($#)); do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@@ -65,6 +67,10 @@ while (($#)); do
|
|||||||
auto_reboot=1
|
auto_reboot=1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--dev)
|
||||||
|
use_dev_packages=1
|
||||||
|
shift
|
||||||
|
;;
|
||||||
--channel)
|
--channel)
|
||||||
channel_override="${2:-}"
|
channel_override="${2:-}"
|
||||||
shift 2
|
shift 2
|
||||||
@@ -83,6 +89,12 @@ while (($#)); do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
case "$use_dev_packages" in
|
||||||
|
1|true|yes|on) use_dev_packages=1 ;;
|
||||||
|
0|false|no|off|"") use_dev_packages=0 ;;
|
||||||
|
*) fail "Invalid OMARCHY_UPGRADE_DEV value '$use_dev_packages'. Use 1/0, true/false, or pass --dev." ;;
|
||||||
|
esac
|
||||||
|
|
||||||
if ! command -v pacman >/dev/null 2>&1; then
|
if ! command -v pacman >/dev/null 2>&1; then
|
||||||
fail "This upgrade is only supported on Arch/Omarchy systems with pacman."
|
fail "This upgrade is only supported on Arch/Omarchy systems with pacman."
|
||||||
fi
|
fi
|
||||||
@@ -313,9 +325,12 @@ case "$channel" in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
if (( ! yes )); then
|
if (( ! yes )); then
|
||||||
|
package_mode="production Omarchy packages"
|
||||||
|
(( use_dev_packages )) && package_mode="stop-gap packages from [omarchy-dev]"
|
||||||
|
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
||||||
This will upgrade Omarchy for user '$target_user' to Omarchy 4 using the '$channel' channel.
|
This will upgrade Omarchy for user '$target_user' to Omarchy 4 using the '$channel' channel and $package_mode.
|
||||||
|
|
||||||
It will install the package-backed Omarchy 4 stack, overwrite files previously
|
It will install the package-backed Omarchy 4 stack, overwrite files previously
|
||||||
written by the legacy installer, remove retired default packages, and apply the
|
written by the legacy installer, remove retired default packages, and apply the
|
||||||
@@ -372,27 +387,28 @@ configure_pacman_channel() {
|
|||||||
|
|
||||||
as_root cp -f /etc/pacman.conf "/etc/pacman.conf.omarchy-upgrade-to-4.$backup_suffix.bak"
|
as_root cp -f /etc/pacman.conf "/etc/pacman.conf.omarchy-upgrade-to-4.$backup_suffix.bak"
|
||||||
|
|
||||||
# TEMPORARY: also inject [omarchy-dev] above [omarchy] so dev-built
|
# Drop any stale [omarchy-dev] block every time. Re-add it only for the
|
||||||
# packages from share.heyoodle.com (see omarchy-pkgs/bin/publish-dev-repo)
|
# stop-gap dev package mode so normal upgrades resolve the real tagged
|
||||||
# take precedence while the omarchy-4 stack is being iterated on. Revert
|
# packages from [omarchy] once they exist.
|
||||||
# this block once the production edge/stable/rc channels have caught up.
|
|
||||||
local dev_server='https://share.heyoodle.com/omarchy/dev/$arch'
|
local dev_server='https://share.heyoodle.com/omarchy/dev/$arch'
|
||||||
|
local tmp
|
||||||
|
|
||||||
tmp=$(mktemp)
|
tmp=$(mktemp)
|
||||||
awk -v server="$package_server" -v dev_server="$dev_server" '
|
awk -v server="$package_server" -v dev_server="$dev_server" -v use_dev="$use_dev_packages" '
|
||||||
BEGIN { in_omarchy = 0; in_dev = 0; wrote = 0 }
|
BEGIN { in_omarchy = 0; in_dev = 0; wrote = 0; use_dev += 0 }
|
||||||
/^\[omarchy-dev\]$/ {
|
/^\[omarchy-dev\]$/ {
|
||||||
# Drop any existing [omarchy-dev] block; we re-emit it next to [omarchy].
|
|
||||||
in_dev = 1
|
in_dev = 1
|
||||||
in_omarchy = 0
|
in_omarchy = 0
|
||||||
next
|
next
|
||||||
}
|
}
|
||||||
/^\[omarchy\]$/ {
|
/^\[omarchy\]$/ {
|
||||||
if (!wrote) {
|
if (!wrote) {
|
||||||
print "[omarchy-dev]"
|
if (use_dev) {
|
||||||
print "SigLevel = Never"
|
print "[omarchy-dev]"
|
||||||
print "Server = " dev_server
|
print "SigLevel = Never"
|
||||||
print ""
|
print "Server = " dev_server
|
||||||
|
print ""
|
||||||
|
}
|
||||||
print "[omarchy]"
|
print "[omarchy]"
|
||||||
print "SigLevel = Optional TrustAll"
|
print "SigLevel = Optional TrustAll"
|
||||||
print "Server = " server
|
print "Server = " server
|
||||||
@@ -407,10 +423,12 @@ configure_pacman_channel() {
|
|||||||
END {
|
END {
|
||||||
if (!wrote) {
|
if (!wrote) {
|
||||||
print ""
|
print ""
|
||||||
print "[omarchy-dev]"
|
if (use_dev) {
|
||||||
print "SigLevel = Never"
|
print "[omarchy-dev]"
|
||||||
print "Server = " dev_server
|
print "SigLevel = Never"
|
||||||
print ""
|
print "Server = " dev_server
|
||||||
|
print ""
|
||||||
|
}
|
||||||
print "[omarchy]"
|
print "[omarchy]"
|
||||||
print "SigLevel = Optional TrustAll"
|
print "SigLevel = Optional TrustAll"
|
||||||
print "Server = " server
|
print "Server = " server
|
||||||
@@ -535,16 +553,23 @@ migrate_1password_beta_package() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_omarchy_4_packages() {
|
install_omarchy_4_packages() {
|
||||||
# omarchy-limine and omarchy-dev-tools are no longer separate packages:
|
# Until Omarchy 4 is tagged and published for real, --dev installs the
|
||||||
# omarchy-limine's content (bootloader + snapper configs) folded into
|
# stop-gap package names from [omarchy-dev]. They provide/conflict the real
|
||||||
# omarchy-settings, and bin/omarchy-dev-* now ships with omarchy itself.
|
# names so testers can later move to omarchy/omarchy-settings cleanly.
|
||||||
# The bootloader stack (limine, snapper, etc.) is hard-depended by
|
local omarchy_package=omarchy
|
||||||
# the omarchy package, so it'll be pulled in automatically.
|
local settings_package=omarchy-settings
|
||||||
|
if (( use_dev_packages )); then
|
||||||
|
omarchy_package=omarchy-dev
|
||||||
|
settings_package=omarchy-settings-dev
|
||||||
|
fi
|
||||||
|
|
||||||
|
# The bootloader stack (limine, snapper, etc.) is hard-depended by the
|
||||||
|
# Omarchy package, so it'll be pulled in automatically.
|
||||||
local core_packages=(
|
local core_packages=(
|
||||||
omarchy-keyring
|
omarchy-keyring
|
||||||
omarchy-settings
|
"$settings_package"
|
||||||
omarchy-nvim
|
omarchy-nvim
|
||||||
omarchy
|
"$omarchy_package"
|
||||||
# checkupdates support for update tooling
|
# checkupdates support for update tooling
|
||||||
fakeroot
|
fakeroot
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
@@ -552,6 +577,7 @@ install_omarchy_4_packages() {
|
|||||||
local base_packages=()
|
local base_packages=()
|
||||||
|
|
||||||
log "Installing Omarchy 4 packages"
|
log "Installing Omarchy 4 packages"
|
||||||
|
(( use_dev_packages )) && log "Using stop-gap packages from [omarchy-dev]"
|
||||||
# --noconfirm answers "no" to conflict-removal prompts. --ask 4 preselects
|
# --noconfirm answers "no" to conflict-removal prompts. --ask 4 preselects
|
||||||
# removing the conflicting package, which is required for legacy packages like
|
# removing the conflicting package, which is required for legacy packages like
|
||||||
# ttf-jetbrains-mono-nerd -> ttf-jetbrains-mono-nerd-basic.
|
# ttf-jetbrains-mono-nerd -> ttf-jetbrains-mono-nerd-basic.
|
||||||
|
|||||||
Reference in New Issue
Block a user