first commit
This commit is contained in:
commit
88a6cbf414
16 changed files with 262 additions and 0 deletions
1
README.md
Normal file
1
README.md
Normal file
|
@ -0,0 +1 @@
|
||||||
|
# Sapphic-Package-Manager
|
5
debian/changelog
vendored
Normal file
5
debian/changelog
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
pogupdate (1.0-1) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
|
* Initial release.
|
||||||
|
|
||||||
|
-- Penelope Gwen <support@pogmom.me> Thu, 29 Feb 2024 13:45:02 -0700
|
11
debian/control
vendored
Normal file
11
debian/control
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Source: pogupdate
|
||||||
|
Maintainer: Penelope Gwen <support@pogmom.me>
|
||||||
|
Section: utils
|
||||||
|
Priority: standard
|
||||||
|
Standards-Version: 4.6.2
|
||||||
|
Build-Depends: debhelper-compat (= 13)
|
||||||
|
|
||||||
|
Package: pogupdate
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||||
|
Description: update apt, flatpak, and pipx packages quickly
|
0
debian/copyright
vendored
Normal file
0
debian/copyright
vendored
Normal file
3
debian/rules
vendored
Executable file
3
debian/rules
vendored
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/make -f
|
||||||
|
%:
|
||||||
|
dh $@
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
3.0 (native)
|
1
etc/bash_completion.d/spm
Normal file
1
etc/bash_completion.d/spm
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
12
test
Normal file
12
test
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
Reading package lists... Done
|
||||||
|
Building dependency tree... Done
|
||||||
|
Reading state information... Done
|
||||||
|
The following packages will be REMOVED:
|
||||||
|
libnsl-dev libtirpc-dev
|
||||||
|
0 upgraded, 0 newly installed, 2 to remove and 127 not upgraded.
|
||||||
|
After this operation, 1164 kB disk space will be freed.
|
||||||
|
Do you want to continue? [Y/n] y
|
||||||
|
(Reading database ... 280244 files and directories currently installed.)
|
||||||
|
Removing libnsl-dev:arm64 (1.3.0-3) ...
|
||||||
|
Removing libtirpc-dev:arm64 (1.3.4+ds-1) ...
|
||||||
|
Processing triggers for man-db (2.12.0-3) ...
|
45
usr/bin/spm
Executable file
45
usr/bin/spm
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
_completions()
|
||||||
|
{
|
||||||
|
COMPREPLY+=("now")
|
||||||
|
COMPREPLY+=("tomorrow")
|
||||||
|
COMPREPLY+=("never")
|
||||||
|
}
|
||||||
|
|
||||||
|
COMMAND="${1}"
|
||||||
|
#VERSION=$(cat /lib/spm/version)
|
||||||
|
|
||||||
|
|
||||||
|
upgrade() {
|
||||||
|
spm_upgrade $@
|
||||||
|
}
|
||||||
|
|
||||||
|
clean() {
|
||||||
|
spm_clean $@
|
||||||
|
}
|
||||||
|
|
||||||
|
search() {
|
||||||
|
spm_search $@
|
||||||
|
}
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Sapphic Package Manager v${VERSION}"
|
||||||
|
cat ./usr/share/doc/spm/spm
|
||||||
|
sed -e 's/^/ /' ./usr/share/doc/spm/spm_upgrade
|
||||||
|
sed -e 's/^/ /' ./usr/share/doc/spm/spm_search
|
||||||
|
sed -e 's/^/ /' ./usr/share/doc/spm/spm_clean
|
||||||
|
}
|
||||||
|
|
||||||
|
case $COMMAND in
|
||||||
|
upgrade|search|clean )
|
||||||
|
shift 1;;&
|
||||||
|
upgrade )
|
||||||
|
upgrade $@;;
|
||||||
|
clean )
|
||||||
|
clean $@;;
|
||||||
|
search )
|
||||||
|
search $@;;
|
||||||
|
*|usage )
|
||||||
|
usage;;
|
||||||
|
esac
|
46
usr/bin/spm_clean
Executable file
46
usr/bin/spm_clean
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
isroot=false
|
||||||
|
issudo=false
|
||||||
|
if [ "$EUID" -eq 0 ];then isroot=true;fi
|
||||||
|
if [ -n "$SUDO_USER" ]; then issudo=true;fi
|
||||||
|
|
||||||
|
usage(){
|
||||||
|
echo -n "spm "
|
||||||
|
cat ./usr/share/doc/spm/spm_clean
|
||||||
|
}
|
||||||
|
|
||||||
|
yn=""
|
||||||
|
while getopts 'hYyNnafp' flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
[YyNnafp] ) yn="${yn}${flag}" ;;
|
||||||
|
h|* ) usage;exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
if $isroot; then
|
||||||
|
echo -e "\033[1mUpdating apt sources...\033[0m"
|
||||||
|
apt -qqq update
|
||||||
|
echo -e "\033[1mThe following packages were automatically installed and are no longer required:\033[0m"
|
||||||
|
apt list '?garbage'
|
||||||
|
fi
|
||||||
|
echo -e "\033[1mUnable to preview unused flatpak packages\033[0m"
|
||||||
|
echo -e "\033[1mUnable to clean pipx packages\033[0m"
|
||||||
|
while true; do
|
||||||
|
if [ -z "$yn" ];then
|
||||||
|
echo "Yy: Clean all"
|
||||||
|
echo "Nn: Clean nothing"
|
||||||
|
if $isroot; then echo "Aa: Remove unused apt packages";fi
|
||||||
|
echo "Ff: Remove unused flatpak packages"
|
||||||
|
read -p "Clean packages? " yn
|
||||||
|
fi
|
||||||
|
case $yn in
|
||||||
|
*[Nn]* ) exit;;
|
||||||
|
*[Yya]* ) if $isroot; then echo -e "\033[1mRemoving unused apt packages...\033[0m";apt -y autoremove;fi;;&
|
||||||
|
*[Yyf]* ) if $issudo; then echo -e "\033[1mRemoving unused flatpak packages...\033[0m";sudo -u $SUDO_USER flatpak uninstall -y --unused;else flatpak uninstall -y --unused;fi;;&
|
||||||
|
*[p]* ) echo -e "\033[1mUnable to clean pipx packages\033[0m";;&
|
||||||
|
*[Yyafp]* ) break;;
|
||||||
|
* ) yn=""; echo "Please select a valid option.";;
|
||||||
|
esac
|
||||||
|
done
|
48
usr/bin/spm_search
Executable file
48
usr/bin/spm_search
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
isroot=false
|
||||||
|
issudo=false
|
||||||
|
if [ "$EUID" -eq 0 ];then isroot=true;fi
|
||||||
|
if [ -n "$SUDO_USER" ]; then issudo=true;suggestsudo="sudo ";fi
|
||||||
|
|
||||||
|
usage(){
|
||||||
|
echo -n "spm "
|
||||||
|
cat ./usr/share/doc/spm/spm_search
|
||||||
|
}
|
||||||
|
|
||||||
|
yn=""
|
||||||
|
while getopts 'hafp' flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
[afp] ) yn="${yn}${flag}" ;;
|
||||||
|
h|* ) usage
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND - 1))
|
||||||
|
if [ -z "$yn" ];then
|
||||||
|
yn="Y"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${1}" ];then
|
||||||
|
echo -e "\033[1mYou must specific a package name!\033[0m"
|
||||||
|
usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $yn in
|
||||||
|
*[Nn]* ) exit;;
|
||||||
|
*[Yya]* ) if $isroot; then
|
||||||
|
echo -e "\033[1mUpdating apt sources...\033[0m"
|
||||||
|
apt -qqq update
|
||||||
|
echo -e "\033[1mSearching for apt packages...\033[0m"
|
||||||
|
dpkg-query --show --showformat='${Package;-35}\t${Version;-15}\t${binary:Synopsis}\n' *"${1}"*
|
||||||
|
echo -e "\033[1mApt packages can be installed with \`\033[0m${suggestsudo}apt install [Package Name]\033[1m\`. A package's name can be found in the left column\033[0m"
|
||||||
|
fi;;&
|
||||||
|
*[Yyf]* ) echo -e "\033[1mSearching for flatpak packages...\033[0m"
|
||||||
|
flatpak search --columns=application,version,description ${1}
|
||||||
|
echo -e "\033[1mFlatpak packages can be installed with \`\033[0m${suggestsudo}flatpak install [Application ID]\033[1m\'. A package's Application ID can be found in the left column.\033[0m";;&
|
||||||
|
*[p]* ) echo -e "\033[1mUnable to search for pipx packages\033[0m";;&
|
||||||
|
*[Yyafp]* ) exit 0;;
|
||||||
|
* ) echo "bad search options";exit 1;;
|
||||||
|
esac
|
||||||
|
|
57
usr/bin/spm_upgrade
Executable file
57
usr/bin/spm_upgrade
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
isroot=false
|
||||||
|
issudo=false
|
||||||
|
if [ "$EUID" -eq 0 ];then isroot=true;fi
|
||||||
|
if [ -n "$SUDO_USER" ]; then issudo=true;fi
|
||||||
|
|
||||||
|
usage(){
|
||||||
|
echo -n "spm "
|
||||||
|
cat ./usr/share/doc/spm/spm_upgrade
|
||||||
|
}
|
||||||
|
|
||||||
|
yn=""
|
||||||
|
while getopts 'hYyNnafp' flag; do
|
||||||
|
case "${flag}" in
|
||||||
|
[YyNnafp] ) yn="${yn}${flag}" ;;
|
||||||
|
h|* ) usage
|
||||||
|
exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if $isroot; then
|
||||||
|
echo -e "\033[1mUpdating apt sources...\033[0m"
|
||||||
|
apt -qqq update
|
||||||
|
echo -e "\033[1mapt upgrade summary:\033[0m"
|
||||||
|
apt -qq upgrade --dry-run
|
||||||
|
fi
|
||||||
|
echo -e "\033[1mWill check and install updates for the following pipx packages:\033[0m"
|
||||||
|
if $issudo;then
|
||||||
|
sudo -u $SUDO_USER pipx list --short
|
||||||
|
else
|
||||||
|
pipx list --short
|
||||||
|
fi
|
||||||
|
echo -e "\033[1mFlatpak update summary:\033[0m"
|
||||||
|
if $issudo;then
|
||||||
|
sudo -u $SUDO_USER flatpak remote-ls --updates
|
||||||
|
else
|
||||||
|
flatpak remote-ls --updates
|
||||||
|
fi
|
||||||
|
while true; do
|
||||||
|
if [ -z "$yn" ];then
|
||||||
|
echo "Yy: Update All"
|
||||||
|
echo "Nn: Update nothing"
|
||||||
|
if $isroot; then echo "a: Upgrade apt packages";fi
|
||||||
|
echo "f: Update flatpak packages"
|
||||||
|
echo "p: Update pipx packages"
|
||||||
|
read -p "Install updates? " yn
|
||||||
|
fi
|
||||||
|
case $yn in
|
||||||
|
*[Nn]* ) exit;;
|
||||||
|
*[Yya]* ) if $isroot; then echo -e "\033[1mUpgrading apt packages...\033[0m";apt -y upgrade;fi;;&
|
||||||
|
*[Yyf]* ) if $issudo; then echo -e "\033[1mUpdating flatpak packages...\033[0m";sudo -u $SUDO_USER flatpak update -y;else flatpak update -y;fi;;&
|
||||||
|
*[Yyp]* ) if $issudo; then echo -e "\033[1mUpgrading pipx packages...\033[0m";sudo -u $SUDO_USER pipx upgrade-all;else pipx upgrade-all;fi;;&
|
||||||
|
*[Yyafp]* ) break;;
|
||||||
|
* ) yn=""; echo "Please select a valid option.";;
|
||||||
|
esac
|
||||||
|
done
|
6
usr/share/doc/spm/spm
Normal file
6
usr/share/doc/spm/spm
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
Usage: spm command [options]
|
||||||
|
|
||||||
|
Sapphic Package Manager is not a package manager- it is a congregate frontend for apt, flatpak, and pipx intended for use on Sapphian Linux
|
||||||
|
|
||||||
|
Commands:
|
||||||
|
usage: Print this dialogue
|
9
usr/share/doc/spm/spm_clean
Normal file
9
usr/share/doc/spm/spm_clean
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
clean: Remove unused packages that were previously installed via apt and flatpak
|
||||||
|
usage:
|
||||||
|
spm clean -[h|Nn|Yyaf]
|
||||||
|
options:
|
||||||
|
-Yy: Skip confirmation and approve all cleanup
|
||||||
|
-Nn: Skip confirmation and approve no cleanup
|
||||||
|
-a: Requires root, skip confirmation and approve apt cleanup. Redundant when used with -Yy
|
||||||
|
-f: Skip confirmation and approve flatpak cleanup. Redundant when used with -Yy
|
||||||
|
-h: Print usage dialogue
|
7
usr/share/doc/spm/spm_search
Normal file
7
usr/share/doc/spm/spm_search
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
search: Search for packages available via apt or flatpak
|
||||||
|
usage:
|
||||||
|
spm search -[h|af] query
|
||||||
|
options:
|
||||||
|
-a: Disable default search-all behavior and whitelist apt for search
|
||||||
|
-f: Disable default search-all behavior and whitelist flatpak for search
|
||||||
|
-h: Print usage dialogue
|
10
usr/share/doc/spm/spm_upgrade
Normal file
10
usr/share/doc/spm/spm_upgrade
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
upgrade: Update packages installed via apt, flatpak, and pipx
|
||||||
|
usage:
|
||||||
|
spm upgrade -[h|Nn|Yyafp]
|
||||||
|
options:
|
||||||
|
-Yy: Skip confirmation and approve all upgrades
|
||||||
|
-Nn: Skip confirmation and approve no upgrades
|
||||||
|
-a: Requires root, skip confirmation and approve apt upgrades. Redundant when used with -Yy
|
||||||
|
-f: Skip confirmation and approve flatpak updates. Redundant when used with -Yy
|
||||||
|
-p: Skip confirmation and approve pipx updates. Redundant when used with -Yy
|
||||||
|
-h: Print usage dialogue
|
Loading…
Add table
Reference in a new issue