From a6f953749b0e8ae10c7b4b14efbbf87c651ad24b Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Mon, 11 Mar 2024 07:08:48 +0700 Subject: [PATCH] network/gemget-bin: Added (CLI for gemini protocol). Signed-off-by: Willy Sudiarto Raharjo --- network/gemget-bin/README | 12 ++++ network/gemget-bin/docs/LICENSE | 21 ++++++ network/gemget-bin/docs/README.md | 91 ++++++++++++++++++++++++ network/gemget-bin/gemget-bin.SlackBuild | 71 ++++++++++++++++++ network/gemget-bin/gemget-bin.info | 10 +++ network/gemget-bin/slack-desc | 19 +++++ 6 files changed, 224 insertions(+) create mode 100644 network/gemget-bin/README create mode 100644 network/gemget-bin/docs/LICENSE create mode 100644 network/gemget-bin/docs/README.md create mode 100644 network/gemget-bin/gemget-bin.SlackBuild create mode 100644 network/gemget-bin/gemget-bin.info create mode 100644 network/gemget-bin/slack-desc diff --git a/network/gemget-bin/README b/network/gemget-bin/README new file mode 100644 index 0000000000..831f8e22ba --- /dev/null +++ b/network/gemget-bin/README @@ -0,0 +1,12 @@ +gemget-bin (file downloader for gemini protocol) + +gemget is a command line downloader for the Gemini protocol. It works +well with streams and can print headers for debugging as well. It's +basically the equivalent of wget, for gemini:// URLs. + +Since this is a binary repack, only i586/i686, x86_64, and aarch64 are +supported. For aarch64, download the file here: + +https://github.com/makew0rld/gemget/releases/download/v1.9.0/gemget_1.9.0_linux_arm64 + +Its md5sum is a3e858cb4d08729bba30d8ade5e313cf. diff --git a/network/gemget-bin/docs/LICENSE b/network/gemget-bin/docs/LICENSE new file mode 100644 index 0000000000..ee7b3fc619 --- /dev/null +++ b/network/gemget-bin/docs/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 makeworld + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/network/gemget-bin/docs/README.md b/network/gemget-bin/docs/README.md new file mode 100644 index 0000000000..952e51add4 --- /dev/null +++ b/network/gemget-bin/docs/README.md @@ -0,0 +1,91 @@ +# gemget + +A command line downloader for the [Gemini protocol](https://gemini.circumlunar.space/). +It works well with streams and can print headers for debugging as well. + +``` +gemget [option]... URL... + +Usage of ./gemget: + -e, --add-extension Add .gmi extensions to gemini files that don't have it, like directories. + + --cert string Path to a PEM encoded TLS client certificate to be sent with the request. + + --connect-timeout uint Max time allowed to form a connection and get the header, in seconds. + Set to 0 for no timeout. (default 15) + -d, --directory string + The directory where downloads go (default ".") + --header + Print out (even with --quiet) the response header to stdout in the format: + Header: + + -f, --input-file string Input file with a single URL on each line. Empty lines or lines starting + with # are ignored. URLs on the command line will be processed first. + + -i, --insecure Skip checking the cert + + --key string Path to a PEM encoded TLS key for the provided client cert. + + -m, --max-size string Set the file size limit. Any download that exceeds this size will + cause an Info output and be deleted. + Leaving it blank or setting to zero bytes will result in no limit. + This flag is ignored when outputting to stdout. + Format: + Examples: 423, 3.2KiB, '2.5 MB', '22 MiB', '10gib', 3M + + -t, --max-time uint Set the downloading time limit, in seconds. Any download that + takes longer will cause an Info output and be deleted. + + --no-progress-bar Disable the progress bar output. + + -o, --output string Output path, for when there is only one URL. + '-' means stdout and implies --quiet. + It overrides --directory. + + -p, --proxy string A proxy that can requests are sent to instead. + Can be a domain or IP with port. Port 1965 is assumed otherwise. + + -q, --quiet Neither info strings or the progress bar will be printed. + Note that normally infos are printed to stderr, not stdout. + + -r, --redirects uint How many redirects to follow before erroring out. (default 5) + -s, --skip Move to the next URL when one fails. + --socks string Host/address for a SOCKS5 proxy + --socks-pass string Password for a SOCKS5 proxy (optional) + --socks-user string Username for a SOCKS5 proxy (optional) + + -v, --version Find out what version of gemget you're running. +``` + +## Project Status + +gemget is in maintenance mode. See my [blog post](https://www.makeworld.space/2023/08/bye_gemini.html) for details. + +## Installation +Install a binary of the most recent release from the [releases page](https://github.com/makeworld-the-better-one/gemget/releases/). On Unix-based systems you will have to make the file executable with `chmod +x `. You can rename the file to just `gemget` for easy access, and move it to `/usr/local/bin/`. + +If you have Go installed, you can also install it using the Makefile. Make sure to use GNU Make. + +```shell +git clone https://github.com/makeworld-the-better-one/gemget +cd gemget +# git checkout v1.2.3 # Optionally pin to a specific version instead of the latest commit +make +sudo make install +``` + +## Arch Linux + +Arch Linux users can install gemget from AUR. It has the package name `gemget`, and is maintained by @dalz. + +```shell +yay -S gemget +``` + + +## Features to add +- [x] Support client certificates +- [ ] Support interactive input for status code 10 & 11 + +## License +This project is under the [MIT License](./LICENSE). diff --git a/network/gemget-bin/gemget-bin.SlackBuild b/network/gemget-bin/gemget-bin.SlackBuild new file mode 100644 index 0000000000..ad8e24fcdb --- /dev/null +++ b/network/gemget-bin/gemget-bin.SlackBuild @@ -0,0 +1,71 @@ +#!/bin/bash + +# Slackware build script for gemget-bin + +# Written by B. Watson (urchlay@slackware.uk) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=gemget-bin +SRCNAM=gemget +VERSION=${VERSION:-1.9.0} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +EXE="" +case "$ARCH" in + i?86) EXE=${SRCNAM}_${VERSION}_linux_32-bit ;; + x86_64) EXE=${SRCNAM}_${VERSION}_linux_64-bit ;; + aarch64) EXE=${SRCNAM}_${VERSION}_linux_arm64 ;; +esac + +if [ "$EXE" = "" ]; then + cat < $PKGDOC/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/network/gemget-bin/gemget-bin.info b/network/gemget-bin/gemget-bin.info new file mode 100644 index 0000000000..0a6b959c23 --- /dev/null +++ b/network/gemget-bin/gemget-bin.info @@ -0,0 +1,10 @@ +PRGNAM="gemget-bin" +VERSION="1.9.0" +HOMEPAGE="https://github.com/makew0rld/gemget/" +DOWNLOAD="https://github.com/makew0rld/gemget/releases/download/v1.9.0/gemget_1.9.0_linux_32-bit" +MD5SUM="6e5d9c6d38abee20ad4dccedafe978a7" +DOWNLOAD_x86_64="https://github.com/makew0rld/gemget/releases/download/v1.9.0/gemget_1.9.0_linux_64-bit" +MD5SUM_x86_64="d0bfc8118c379c4dfaf6872ff32eef3a" +REQUIRES="" +MAINTAINER="B. Watson" +EMAIL="urchlay@slackware.uk" diff --git a/network/gemget-bin/slack-desc b/network/gemget-bin/slack-desc new file mode 100644 index 0000000000..ffc39ee66a --- /dev/null +++ b/network/gemget-bin/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +gemget-bin: gemget-bin (file downloader for gemini protocol) +gemget-bin: +gemget-bin: gemget is a command line downloader for the Gemini protocol. It works +gemget-bin: well with streams and can print headers for debugging as well. It's +gemget-bin: basically the equivalent of wget, for gemini:// URLs. +gemget-bin: +gemget-bin: +gemget-bin: +gemget-bin: +gemget-bin: +gemget-bin: