add gnf
This commit is contained in:
BIN
configs/copy/home/.local/bin/bw
Executable file
BIN
configs/copy/home/.local/bin/bw
Executable file
Binary file not shown.
191
configs/copy/home/.local/bin/gnf
Executable file
191
configs/copy/home/.local/bin/gnf
Executable file
@ -0,0 +1,191 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# gnf – Friendly wrapper around 'sudo dnf'
|
||||||
|
# Version 1.2
|
||||||
|
# Author: You
|
||||||
|
#
|
||||||
|
# Features:
|
||||||
|
# • Implicit '-y' on install/remove/reinstall/downgrade (toggle with -n/--no-confirm)
|
||||||
|
# • 'gnf update' pipeline:
|
||||||
|
# - dnf update [-y] [--refresh]
|
||||||
|
# - flatpak update (user + system)
|
||||||
|
# - optional fwupd refresh+update
|
||||||
|
# with its own flags: -r/--refresh, -f/--firmware, -n/--no-confirm, -y/--yes
|
||||||
|
# • Passes any other 'dnf' subcommand straight to sudo dnf
|
||||||
|
# • 'copr' sub-commands get auto '-y' for addrepo/removerepo/enable/disable/list
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PROGRAM=$(basename "$0")
|
||||||
|
VERSION="1.2"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
$PROGRAM – wrapper for sudo dnf with smart defaults
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
$PROGRAM [GLOBAL OPTIONS] COMMAND [COMMAND OPTIONS] [ARGS...]
|
||||||
|
|
||||||
|
GLOBAL OPTIONS (must precede COMMAND):
|
||||||
|
-h, --help Show this help and exit
|
||||||
|
--version Show version and exit
|
||||||
|
-n, --no-confirm Disable the automatic '-y' on supported commands
|
||||||
|
-y, --yes (Re-)enable the automatic '-y' (default)
|
||||||
|
|
||||||
|
COMMANDS:
|
||||||
|
install, remove, reinstall, downgrade
|
||||||
|
→ Implicit '-y' unless disabled by global '-n'
|
||||||
|
|
||||||
|
update (alias: upgrade)
|
||||||
|
→ dnf update + flatpak update + optional fwupd
|
||||||
|
→ COMMAND OPTIONS:
|
||||||
|
-r, --refresh Pass --refresh to dnf update
|
||||||
|
-f, --firmware After dnf+flatpak, run fwupdmgr refresh && update
|
||||||
|
-n, --no-confirm Do NOT add '-y' to dnf update
|
||||||
|
-y, --yes Force '-y' on dnf update (default)
|
||||||
|
→ You may group short flags: e.g. -rf or -fr
|
||||||
|
|
||||||
|
copr (subcommands: addrepo, removerepo, enable, disable, list, …)
|
||||||
|
→ For addrepo/removerepo/enable/disable/list, we auto '-y'
|
||||||
|
→ Other copr actions are passed straight through
|
||||||
|
|
||||||
|
any other dnf COMMAND is forwarded to 'sudo dnf'
|
||||||
|
|
||||||
|
EXAMPLES:
|
||||||
|
gnf install vim git
|
||||||
|
gnf -n install firefox # interactive remove/install
|
||||||
|
gnf update # dnf update -y ; flatpak
|
||||||
|
gnf update -r # + --refresh
|
||||||
|
gnf update -rf # + firmware
|
||||||
|
gnf -n update --refresh # no -y, + refresh
|
||||||
|
gnf copr addrepo user/project
|
||||||
|
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# If no args, show help
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# 1) Parse GLOBAL OPTIONS
|
||||||
|
#
|
||||||
|
auto_yes=true
|
||||||
|
while [[ $# -gt 0 && "$1" == -* ]]; do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help) usage; exit 0 ;;
|
||||||
|
--version) echo "$PROGRAM $VERSION"; exit 0 ;;
|
||||||
|
-n|--no-confirm) auto_yes=false; shift ;;
|
||||||
|
-y|--yes) auto_yes=true; shift ;;
|
||||||
|
--) shift; break ;; # end of globals
|
||||||
|
*) break ;; # first non-global dash-opt
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Must have at least one positional argument now: the COMMAND
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Error: no COMMAND specified." >&2
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cmd=$1; shift
|
||||||
|
# Treat 'upgrade' as alias for 'update'
|
||||||
|
[[ "$cmd" == "upgrade" ]] && cmd=update
|
||||||
|
|
||||||
|
#
|
||||||
|
# 2) Dispatch on COMMAND
|
||||||
|
#
|
||||||
|
case "$cmd" in
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# install/remove/reinstall/downgrade (auto '-y' unless -n)
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
install|remove|reinstall|downgrade)
|
||||||
|
dnf_args=()
|
||||||
|
$auto_yes && dnf_args+=(-y)
|
||||||
|
sudo dnf "$cmd" "${dnf_args[@]}" "$@"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# update pipeline
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
update)
|
||||||
|
# 2.1) Map any long opts to short ones for getopts
|
||||||
|
mapped=()
|
||||||
|
for arg in "$@"; do
|
||||||
|
case "$arg" in
|
||||||
|
--refresh) mapped+=(-r) ;;
|
||||||
|
--firmware) mapped+=(-f) ;;
|
||||||
|
--no-confirm) mapped+=(-n) ;;
|
||||||
|
--yes) mapped+=(-y) ;;
|
||||||
|
--) mapped+=(--);;
|
||||||
|
*) mapped+=("$arg");;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# 2.2) Parse update-specific flags with getopts (supports grouping: -rf)
|
||||||
|
refresh=false
|
||||||
|
firmware=false
|
||||||
|
confirm=$auto_yes
|
||||||
|
OPTIND=1
|
||||||
|
# note: the leading colon suppresses getopts’ own error msg
|
||||||
|
while getopts ":rfny" opt "${mapped[@]}"; do
|
||||||
|
case "$opt" in
|
||||||
|
r) refresh=true ;;
|
||||||
|
f) firmware=true ;;
|
||||||
|
n) confirm=false ;;
|
||||||
|
y) confirm=true ;;
|
||||||
|
\?) echo "Unknown option '-$OPTARG' for update" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND - 1))
|
||||||
|
|
||||||
|
# 2.3) Run the dnf update
|
||||||
|
dnf_args=()
|
||||||
|
$confirm && dnf_args+=(-y)
|
||||||
|
$refresh && dnf_args+=(--refresh)
|
||||||
|
sudo dnf update "${dnf_args[@]}" "$@"
|
||||||
|
|
||||||
|
# 2.4) Run flatpak updates (user then system)
|
||||||
|
flatpak update -y
|
||||||
|
sudo flatpak update
|
||||||
|
|
||||||
|
# 2.5) Optional firmware via fwupd
|
||||||
|
if $firmware; then
|
||||||
|
sudo fwupdmgr refresh
|
||||||
|
sudo fwupdmgr update
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# copr sub-commands
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
copr)
|
||||||
|
if [[ $# -lt 1 ]]; then
|
||||||
|
echo "Error: 'gnf copr' requires a subcommand." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sub=$1; shift
|
||||||
|
case "$sub" in
|
||||||
|
addrepo|removerepo|enable|disable|list)
|
||||||
|
sudo dnf copr "$sub" -y "$@" ;;
|
||||||
|
*)
|
||||||
|
sudo dnf copr "$sub" "$@" ;;
|
||||||
|
esac
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
# anything else → pass straight to sudo dnf
|
||||||
|
# ---------------------------------------------------------------
|
||||||
|
*)
|
||||||
|
sudo dnf "$cmd" "$@"
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
esac
|
@ -1,7 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Aliases I like
|
# Aliases I like
|
||||||
alias update="sudo dnf update -y && flatpak update -y"
|
|
||||||
alias install="sudo dnf install -y"
|
alias install="sudo dnf install -y"
|
||||||
alias letscode="cd ~/Documents/Code && ranger ."
|
alias letscode="cd ~/Documents/Code && ranger ."
|
||||||
alias gtext="gnome-text-editor"
|
alias gtext="gnome-text-editor"
|
||||||
|
@ -9,7 +9,7 @@ gsettings set org.gnome.desktop.screensaver lock-enabled false
|
|||||||
gsettings set org.gnome.desktop.session idle-delay 0
|
gsettings set org.gnome.desktop.session idle-delay 0
|
||||||
|
|
||||||
# Needed for all installers
|
# Needed for all installers
|
||||||
sudo dnf update -y
|
sudo dnf update -y --refresh
|
||||||
sudo dnf install -y curl git unzip neovim kitty zoxide
|
sudo dnf install -y curl git unzip neovim kitty zoxide
|
||||||
|
|
||||||
# Run Scripts Required for Application Installs
|
# Run Scripts Required for Application Installs
|
||||||
|
Reference in New Issue
Block a user