Add --force argument to install scripts
This overwrites the existing configuration
This commit is contained in:
parent
dc58817aea
commit
b98fbc598f
1 changed files with 23 additions and 6 deletions
|
|
@ -127,9 +127,10 @@ EOF
|
||||||
install_config() {
|
install_config() {
|
||||||
local user="${1:-}"
|
local user="${1:-}"
|
||||||
local source_config="${2:-}"
|
local source_config="${2:-}"
|
||||||
|
local force="${3:-false}"
|
||||||
|
|
||||||
if [[ -z "$user" ]]; then
|
if [[ -z "$user" ]]; then
|
||||||
die "Usage: shepherd install config --user USER [--source CONFIG]"
|
die "Usage: shepherd install config --user USER [--source CONFIG] [--force]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
validate_user "$user"
|
validate_user "$user"
|
||||||
|
|
@ -161,7 +162,15 @@ install_config() {
|
||||||
|
|
||||||
# Check if config already exists
|
# Check if config already exists
|
||||||
if maybe_sudo test -f "$dst_config"; then
|
if maybe_sudo test -f "$dst_config"; then
|
||||||
warn "Config file already exists at $dst_config, skipping"
|
if [[ "$force" == "true" ]]; then
|
||||||
|
warn "Overwriting existing config at $dst_config"
|
||||||
|
maybe_sudo cp "$source_config" "$dst_config"
|
||||||
|
maybe_sudo chown "$user:$user" "$dst_config"
|
||||||
|
maybe_sudo chmod 0644 "$dst_config"
|
||||||
|
success "Overwrote user configuration for $user"
|
||||||
|
else
|
||||||
|
warn "Config file already exists at $dst_config, skipping (use --force to overwrite)"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# Copy config file
|
# Copy config file
|
||||||
maybe_sudo cp "$source_config" "$dst_config"
|
maybe_sudo cp "$source_config" "$dst_config"
|
||||||
|
|
@ -175,9 +184,10 @@ install_config() {
|
||||||
install_all() {
|
install_all() {
|
||||||
local user="${1:-}"
|
local user="${1:-}"
|
||||||
local prefix="${2:-$DEFAULT_PREFIX}"
|
local prefix="${2:-$DEFAULT_PREFIX}"
|
||||||
|
local force="${3:-false}"
|
||||||
|
|
||||||
if [[ -z "$user" ]]; then
|
if [[ -z "$user" ]]; then
|
||||||
die "Usage: shepherd install all --user USER [--prefix PREFIX]"
|
die "Usage: shepherd install all --user USER [--prefix PREFIX] [--force]"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
require_root
|
require_root
|
||||||
|
|
@ -188,7 +198,7 @@ install_all() {
|
||||||
install_bins "$prefix"
|
install_bins "$prefix"
|
||||||
install_sway_config "$prefix"
|
install_sway_config "$prefix"
|
||||||
install_desktop_entry "$prefix"
|
install_desktop_entry "$prefix"
|
||||||
install_config "$user"
|
install_config "$user" "" "$force"
|
||||||
|
|
||||||
success "Installation complete!"
|
success "Installation complete!"
|
||||||
info ""
|
info ""
|
||||||
|
|
@ -206,6 +216,7 @@ install_main() {
|
||||||
local user=""
|
local user=""
|
||||||
local prefix="$DEFAULT_PREFIX"
|
local prefix="$DEFAULT_PREFIX"
|
||||||
local source_config=""
|
local source_config=""
|
||||||
|
local force="false"
|
||||||
|
|
||||||
# Parse remaining arguments
|
# Parse remaining arguments
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
|
|
@ -222,6 +233,10 @@ install_main() {
|
||||||
source_config="$2"
|
source_config="$2"
|
||||||
shift 2
|
shift 2
|
||||||
;;
|
;;
|
||||||
|
--force|-f)
|
||||||
|
force="true"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
die "Unknown option: $1"
|
die "Unknown option: $1"
|
||||||
;;
|
;;
|
||||||
|
|
@ -233,7 +248,7 @@ install_main() {
|
||||||
install_bins "$prefix"
|
install_bins "$prefix"
|
||||||
;;
|
;;
|
||||||
config)
|
config)
|
||||||
install_config "$user" "$source_config"
|
install_config "$user" "$source_config" "$force"
|
||||||
;;
|
;;
|
||||||
sway-config)
|
sway-config)
|
||||||
install_sway_config "$prefix"
|
install_sway_config "$prefix"
|
||||||
|
|
@ -242,7 +257,7 @@ install_main() {
|
||||||
install_desktop_entry "$prefix"
|
install_desktop_entry "$prefix"
|
||||||
;;
|
;;
|
||||||
all)
|
all)
|
||||||
install_all "$user" "$prefix"
|
install_all "$user" "$prefix" "$force"
|
||||||
;;
|
;;
|
||||||
""|help|-h|--help)
|
""|help|-h|--help)
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
|
@ -259,6 +274,7 @@ Options:
|
||||||
--user USER Target user for config deployment (required for config/all)
|
--user USER Target user for config deployment (required for config/all)
|
||||||
--prefix PREFIX Installation prefix (default: $DEFAULT_PREFIX)
|
--prefix PREFIX Installation prefix (default: $DEFAULT_PREFIX)
|
||||||
--source CONFIG Source config file (default: config.example.toml)
|
--source CONFIG Source config file (default: config.example.toml)
|
||||||
|
--force, -f Overwrite existing configuration files
|
||||||
|
|
||||||
Environment:
|
Environment:
|
||||||
DESTDIR Installation root for packaging (default: empty)
|
DESTDIR Installation root for packaging (default: empty)
|
||||||
|
|
@ -266,6 +282,7 @@ Environment:
|
||||||
Examples:
|
Examples:
|
||||||
shepherd install bins --prefix /usr/local
|
shepherd install bins --prefix /usr/local
|
||||||
shepherd install config --user kiosk
|
shepherd install config --user kiosk
|
||||||
|
shepherd install config --user kiosk --force
|
||||||
shepherd install all --user kiosk --prefix /usr
|
shepherd install all --user kiosk --prefix /usr
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue