Total rewrite #15
							
								
								
									
										86
									
								
								xdg-sanity
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								xdg-sanity
									
									
									
									
									
								
							| @ -1,47 +1,45 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # Copyright (c) 2022–2023 Emma Tebibyte | ||||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| # | ||||
| # This program is free software: you can redistribute it and/or modify it under | ||||
| # the terms of the GNU Affero 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 Affero General Public License for more | ||||
| # details. | ||||
| # | ||||
| # You should have received a copy of the GNU Affero General Public License along | ||||
| # with this program. If not, see https://www.gnu.org/licenses/. | ||||
| 
 | ||||
| set -e | ||||
| 
 | ||||
| argv0="$0" | ||||
| 
 | ||||
| # grabs configuration files | ||||
| CONFIG="$XDG_CONFIG_HOME"/xdg-sanity.toml | ||||
| if ! test -e "$CONFIG"; then | ||||
|   touch "$CONFIG" | ||||
| fi | ||||
| 
 | ||||
| # check if usage is valid | ||||
| if ! test -n "$1"; then | ||||
| if test -z "$1"; then | ||||
|   printf "Usage: %s [resource...]\n" "$argv0" 1>&2 | ||||
|   exit 64 # sysexits(3) EX_USAGE | ||||
| fi | ||||
| 
 | ||||
| # check if we have curl(1) | ||||
| if ! command -v curl >/dev/null 2>&1; then | ||||
|   printf "%s: Missing dependency: curl(1)\n" "$argv0" 1>&2 | ||||
|   exit 69 # sysexits(3) EX_UNAVAILABLE | ||||
| fi | ||||
| 
 | ||||
| # check if we have tomcat(1) | ||||
| if ! command -v tomcat >/dev/null 2>&1; then | ||||
|   printf "%s: Missing dependency: tomcat(1)\n" "$argv0" 1>&2 | ||||
|   exit 69 # sysexits(3) EX_UNAVAILABLE | ||||
| fi | ||||
| 
 | ||||
| # set the XDG_COMMAND | ||||
| test -n "$XDG_COMMAND" || XDG_COMMAND="$(tomcat tools.xdg "$CONFIG")" | ||||
| ! command -v handlr >/dev/null 2>&1 && ! command -v xdg-open >/dev/null 2>&1 \ | ||||
|     && XDG_COMMAND=false \ | ||||
|     || true | ||||
| for dep in \ | ||||
|   curl \ | ||||
|   handlr \ | ||||
|   tomcat | ||||
| do | ||||
|   if ! command -v "$dep" >/dev/null 2>&1; then | ||||
|     printf "%s: Missing dependency: %s(1)\n" "$argv0" "$dep" 1>&2 | ||||
|     exit 69 # sysexits(3) EX_UNAVAILABLE | ||||
|   fi | ||||
| done | ||||
| 
 | ||||
| # check if we have a BROWSER | ||||
| test -n "$BROWSER" || BROWSER="$(tomcat tools.browser "$CONFIG")" | ||||
| if ! test -n "$BROWSER"; then | ||||
|   printf "\ | ||||
| %s: \$BROWSER not filled. | ||||
|   Please place the path to your preferred browser's executable in | ||||
|   $XDG_CONFIG_HOME/xdg-sanity.toml | ||||
| " "$argv0" 1>&2 | ||||
| if test -z "$BROWSER"; then | ||||
|   printf "%s: \$BROWSER not filled.\n" "$argv0" 1>&2 | ||||
|   exit 71 # sysexits(3) EX_OSERR | ||||
| fi | ||||
| 
 | ||||
| @ -51,12 +49,12 @@ while test -n "$1"; do | ||||
|   # use curl(1) to write out the request header's content_type, | ||||
|   # strip everything after the first semicolon, | ||||
|   # chop off any weird whitespace remnants | ||||
|   MIME="$(curl -Ls -o /dev/null -w '%{content_type}' "$1" | sed 's/\;.*//' |\ | ||||
|     xargs echo)" | ||||
|   MIME="$(curl -Ls -o /dev/null -w '%{content_type}' "$1" | sed 's/\;.*//' \ | ||||
|     | xargs echo)" | ||||
| 
 | ||||
|   # get the pattern for the extensions to MATCH | ||||
|   MATCH="$(printf "%s\n" "$URL" | sed -ne 's/^h.\+\/\///p' |\ | ||||
|     sed -e 's/\/.*\+//g')" | ||||
|   MATCH="$(printf "%s\n" "$URL" | sed -ne 's/^h.\+\/\///p' \ | ||||
|     | sed -e 's/\/.*\+//g')" | ||||
|    | ||||
|   # run through MIME extensions | ||||
|   for file in \ | ||||
| @ -70,7 +68,7 @@ while test -n "$1"; do | ||||
|         if [ "$MATCH" = "$(tomcat replace.urls["$i"] "$file")" ]; then | ||||
|           MIME="$(tomcat with.mime "$file")" | ||||
|         fi | ||||
|         i="$(dc -e "$i 1 - p")" | ||||
|         i="$(printf "%s-1\n" "$i" | bc)" | ||||
|       done | ||||
|     fi | ||||
|   done | ||||
| @ -85,9 +83,9 @@ while test -n "$1"; do | ||||
|       i="$(tomcat replace.urls "$file" | sed 's/	/\n/g' | wc -l)" | ||||
|       while ! [ "$i" = 0 ]; do | ||||
|         if [ "$MATCH" = "$(tomcat replace.urls["$i"] "$file")" ]; then | ||||
|             URL="$(tomcat with.url "$file")" | ||||
|           URL="$(tomcat with.url "$file")" | ||||
|         fi | ||||
|         i="$(dc -e "$i 1 - p")" | ||||
|         i="$(printf "%s-1\n" "$i" | bc)" | ||||
|       done | ||||
|     fi | ||||
|   done | ||||
| @ -96,17 +94,7 @@ while test -n "$1"; do | ||||
|   if [ "$MIME" = "text/html" ]; then | ||||
|     "$BROWSER" "$URL" | ||||
|   else | ||||
|     case "$(command -v $XDG_COMMAND)" in | ||||
|       */handlr ) | ||||
|         handlr launch "$MIME" -- "$URL" | ||||
|         ;; | ||||
|       */xdg-open ) | ||||
|         "$(xdg-mime query default "$MIME")" "$URL" | ||||
|         ;; | ||||
|       false ) | ||||
|         exit 69 # sysexits(3) EX_UNAVAILABLE | ||||
|         ;; | ||||
|     esac | ||||
|     handlr launch "$MIME" -- "$URL" | ||||
|   fi | ||||
|   shift | ||||
| done | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user