#! /usr/bin/mawk -Wi,e
# gemcat - a simple AWK-based gemini client that can utilize either ncat(1)
#          or openssl-s_client(1) for SSL/TLS retrieval of Gemini content.
#

BEGIN {
   # show usage if no args or arg matches [-*|help]:
   if (! ARGV[1] || ARGV[1] ~ /(^-|help)/) {
       print "\n gemcat - a simple CLI Gemini client for Unix.\n" \
             "\n   use: gemcat [-h|Gemini_URL]\n" \
             "\n    ex: gemcat gemini://geminiprotocol.net/ |fold -s " \
             "\n        gemcat geminiprotocol.net/news/ |less\n" \
             "\n   fyi: requires openssl(1); uses ncat(1) if installed.\n"
       exit 0
   }

   # conditionally construct Host & Gurl from ARGV[1]:
   split (ARGV[1], arr, "[:]*[/]+")
   Host = (arr[1] == "gemini") ? arr[2] : arr[1]
   Gurl = (arr[1] == "gemini") ? ARGV[1] : "gemini://" ARGV[1]

   # conditionally construct Network retrieval Cmd (ncat preferred):
   Echo = "echo '" Gurl "'"
   Tail = "tail -n +2"
   if (system ("which ncat >/dev/null") == 0)
       Ncat = "ncat --ssl " Host " 1965 2>/dev/null"
   else
       Ncat = "openssl s_client -quiet " Host ":1965 2>/dev/null"
   NCmd = Echo " | " Ncat " | " Tail

   # retrieve Gemini content and print:
   while (NCmd | getline > 0)
       print $0
   close (NCmd)
}