From f50caf66be6be84e44164474d368cfd4b0c8d0ef Mon Sep 17 00:00:00 2001 From: speedie Date: Tue, 27 Jun 2023 13:40:48 +0200 Subject: [PATCH] Initial commit --- Makefile | 37 +++++++++++++++ PKGBUILD | 36 +++++++++++++++ README.md | 19 +++++++- nsfetch | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++ options.mk | 3 ++ 5 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 PKGBUILD create mode 100755 nsfetch create mode 100644 options.mk diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..62614a1 --- /dev/null +++ b/Makefile @@ -0,0 +1,37 @@ +include options.mk + +help: + @echo "make install Install ${NAME}." + @echo "make uninstall Uninstall ${NAME}." + @echo "make clean: Remove tarballs." + @echo "make dist Create distro package for ${NAME}." + @echo "make pkg_arch Create Arch package ${NAME}." + +install: clean + cp ${NAME} ${PREFIX}${DESTDIR}/bin + chmod +x ${PREFIX}${DESTDIR}/bin/${NAME} + +uninstall: + rm -rf ~/.config/${NAME} + rm -f ${PREFIX}${DESTDIR}/bin/${NAME} + +clean: + rm -f *.tar* *zst* *${NAME}-${VER}.PKGBUILD + +dist: clean + mkdir -p ${NAME}-${VER} + cp ${NAME} README.md LICENSE Makefile *.mk ${NAME}-${VER} + [ -f "PKGBUILD" ] && cp -f PKGBUILD ${NAME}-${VER} || : + tar -cf ${NAME}-${VER}.tar ${NAME}-${VER} + gzip ${NAME}-${VER}.tar + rm -rf ${NAME}-${VER}.tar ${NAME}-${VER} + gpg --detach-sign --yes --local-user $$(whoami) ${NAME}-${VER}.tar.gz || : + +pkg_arch: dist + command -v makepkg > /dev/null || exit 1 + [ -f PKGBUILD ] || exit 1 + cp -f PKGBUILD PKGBUILD.orig + sed -i "s/VERSION/${VER}/g; s/MD5SUM/$$(md5sum *.tar.gz | cut -d ' ' -f 1)/g" PKGBUILD + makepkg -sfr --sign || exit 1 + rm -rf src/ pkg/ + cp PKGBUILD ${NAME}-${VER}.PKGBUILD; mv PKGBUILD.orig PKGBUILD diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..6a6653a --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=neosfetch +pkgver=VERSION +pkgrel=1 +epoch= +pkgdesc="Minimal user-centric fetch script, successor to sfetch" +arch=(x86_64) +url="https://git.speedie.site/speedie/neosfetch" +license=('GPL') +groups=() + +depends=( + binutils +) + +makedepends=() +checkdepends=() +optdepends=() +provides=(neosfetch nsfetch) +conflicts=() +replaces=() +backup=() +options=() +install= +changelog= +source=( + "$pkgname-$pkgver.tar.gz" + #"https://ls.speedie.gq/releases/$pkgname/$pkgname-$pkgver.tar.gz" +) +noextract=() +md5sums=(MD5SUM) +validpgpkeys=() + +package() { + cd "$pkgname-$pkgver" + install -Dm755 ${pkgname} "${pkgdir}"/usr/bin/${pkgname} +} diff --git a/README.md b/README.md index 5919534..18ca7ed 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,20 @@ # neosfetch -Minimal user-centric fetch script, successor to sfetch \ No newline at end of file +Minimal user-centric fetch script, successor to sfetch + +# License + +Copyright (C) 2023 speedie + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . diff --git a/nsfetch b/nsfetch new file mode 100755 index 0000000..a15cf1f --- /dev/null +++ b/nsfetch @@ -0,0 +1,130 @@ +#!/bin/sh +# neosfetch +# Minimal user-centric fetch script +# +# Copyright (C) 2023 speedie +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +NSFETCH_CONFIG="${NSFETCH_CONFIG:-${XDG_CONFIG_HOME:-${HOME}/.config}/nsfetch/nsfetchrc}" +NSFETCH_V="${NSFETCH_V:-0.1}" + +d_user() { printf "%s" "$(whoami)"; } +d_hostname() { [ -f "${ETC_DIR}/hostname" ] && cat /etc/hostname; } +d_tram() { printf "%d" "$(($(grep MemTotal /proc/meminfo | awk '{ print $2 }') / ${MEMDIV:-1024}))"; } +d_fram() { printf "%d" "$(($(grep MemFree /proc/meminfo | awk '{ print $2 }') / ${MEMDIV:-1024}))"; } +d_uram() { printf "%d" "$(($(d_tram) - $(d_fram)))"; } +d_kernel() { uname -s; } +d_kernelv() { uname -r; } +d_cpu_model() { lscpu | sed -nr '/Model name/ s/.*:\s*(.*) @ .*/\1/p'; } +d_cores() { printf "%d" "$(($(grep -c "cores" /proc/cpuinfo) / 2))"; } +d_threads() { grep -c "cores" /proc/cpuinfo; } +rc() { + mkdir -p "$(dirname "${NSFETCH_CONFIG}")" +[ ! -f "${NSFETCH_CONFIG}" ] && cat << EOF > "${NSFETCH_CONFIG}" +# neosfetch default configuration file +# See https://git.speedie.site/speedie/neosfetch for more information. + +ETC_DIR="\${ETC_DIR:-/etc}" # Path to your /etc directory +MEMDIV="1024" # Number to divide RAM count in KB with + +ns_pf() { + p "\$(d_user)@\$(d_hostname)" + p "RAM: \$(d_tram) MiB" + p "CPU: \$(d_cpu_model)" + p "KERNEL: \$(d_kernel)" + a +} + +d_pkgc() { + case "\$dist" in + "arch") pkgc="\$(pacman -Q | grep -c "")" ;; + "debian") pkgc="\$(dpkg --get-selections | grep -c "")" ;; + "void") pkgc="\$(xbps-query -s | grep -c "")" ;; + gentoo|funtoo) pkgc="\$(ls -d /var/db/pkg/*/* | grep -c "")" ;; + *) pkgc="0" ;; + esac + + printf "%d" "\${pkgc:-0}" +} + +d_dist() { + case "\$dist" in + "arch") printf "Arch Linux\n" ;; + "debian") printf "Debian GNU/Linux\n" ;; + "void") printf "Void Linux\n" ;; + "gentoo") printf "Gentoo Linux\n" ;; + "funtoo") printf "Funtoo Linux\n" ;; + *) printf "Unknown\n" ;; + esac +} + +rs() { + [ ! -f "\${ETC_DIR}/os-release" ] && printf "%s: %s/os-release not found. Is %s set up properly?\n" "\$(basename "\$0")" "\${ETC_DIR}" "\${ETC_DIR}" >> /dev/stderr && return 1 + + case "\$(cat "\${ETC_DIR}/os-release")" in + *Arch*|*arch*) dist="arch" ;; + *Artix*|*artix*) dist="arch" ;; + *Debian*|*debian*) dist="debian" ;; + *Gentoo*|*gentoo*) dist="gentoo" ;; + *Funtoo*|*funtoo*) dist="funtoo" ;; + *Void*|*void*) dist="void" ;; + *) dist="unknown" ;; + esac + + return 0 +} + +p() { + i="\${i:-1}" + printf "%s %s\n" "\$(printf "%s" "\${art:-NULL}" | head -n \$i | tail -1)" "\${1:-NULL}" >> /tmp/nsf_buf + i="\$((i+1))" +} + +a() { + cat "/tmp/nsf_buf"; rm -f "/tmp/nsf_buf" +} +EOF +[ ! -f "${NSFETCH_CONFIG}" ] && printf "%s: failed to create config file '%s'\n" "$(basename "$0")" "${NSFETCH_CONFIG}" >> /dev/stderr && exit 1 +. "${NSFETCH_CONFIG}" +} + +ra() { + for v in "$@"; do + case "$v" in + "") continue ;; + -h|--help) printf "usage: %s [-h] [-v]\n" "$(basename "$0")" ;; + -v|--version) printf "%s %s\n" "$(basename $0)" "${NSFETCH_V:-0}" && exit 0 ;; + *) printf "%s: Invalid argument: '%s'\n" "$(basename "$0")" "$v" >> /dev/stderr && return 1 + esac + done + [ -z "$v" ] && return 0 +} + +pf() { + [ -z "$(command -v ns_pf)" ] && printf "%s: ns_pf func not found in '%s'\n" "$(basename "$0")" "${NSFETCH_CONFIG}" >> /dev/stderr && return 1 + ns_pf +} + +r() { + ra "$@" || exit $? + rc || exit $? + rs || exit $? + + pf || exit $? + + return 0 +} + +r "$@"; exit $? diff --git a/options.mk b/options.mk new file mode 100644 index 0000000..518bca2 --- /dev/null +++ b/options.mk @@ -0,0 +1,3 @@ +VER = 0.1 +PREFIX = "/usr" +NAME = nsfetch