feat(fun/uggc): create a rot13 url handler

Example usage:
$ /nix/store/9kgpv4n62vhxs971jkvwvvl3msm4wpm8-uggc/bin/uggc 'uggcf://gjvggre.pbz/alnabgrpu/fgnghf/1272363652679524352'

Change-Id: I8fd5f77416116ce1a6ab7f96d3f2c726ef663677
Reviewed-on: https://cl.tvl.fyi/c/depot/+/386
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: eta <eta@theta.eu.org>
This commit is contained in:
Kane York 2020-06-15 10:20:09 -07:00 committed by riking
parent 9885b70b7a
commit 2237a51d10
5 changed files with 94 additions and 0 deletions

14
fun/uggc/default.nix Normal file
View file

@ -0,0 +1,14 @@
{ depot, ... }@args:
let
gopkgs = depot.third_party.gopkgs;
in
depot.nix.buildGo.program {
name = "uggc";
srcs = [
./main.go
];
deps = [
gopkgs."github.com".pkg.browser.gopkg
];
}

38
fun/uggc/main.go Normal file
View file

@ -0,0 +1,38 @@
package main
import (
"fmt"
"os"
"strings"
"github.com/pkg/browser"
)
func rot13(r rune) rune {
if 'a' <= r && r <= 'm' {
return r + ('n' - 'a')
} else if 'n' <= r && r <= 'z' {
return r - ('n' - 'a')
}
if 'A' <= r && r <= 'M' {
return r + ('N' - 'A')
} else if 'N' <= r && r <= 'Z' {
return r - ('N' - 'A')
}
return r
}
func main() {
if len(os.Args) == 0 {
fmt.Println("usage: uggc [rot13-encoded URL]")
return
}
urlText := strings.Join(os.Args[1:], " ")
corrected := strings.Map(rot13, urlText)
err := browser.OpenURL(corrected)
if err != nil {
fmt.Println("could not launch browser:", err)
}
}

7
fun/uggc/uggc.desktop Normal file
View file

@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Rot13 URL Handler
Exec=uggc %u
StartupNotify=false
MimeType=x-scheme-handler/uggc;
MimeType=x-scheme-handler/uggcf;

23
fun/uggc/uggc.reg Normal file
View file

@ -0,0 +1,23 @@
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\uggc]
"URL Protocol"=""
@="URL:Rot13 HTTP URL Protocol"
[HKEY_CLASSES_ROOT\uggcf]
"URL Protocol"=""
@="URL:Rot13 HTTPS URL Protocol"
[HKEY_CLASSES_ROOT\uggc\shell]
[HKEY_CLASSES_ROOT\uggcf\shell]
[HKEY_CLASSES_ROOT\uggc\shell\open]
[HKEY_CLASSES_ROOT\uggcf\shell\open]
[HKEY_CLASSES_ROOT\uggc\shell\open\command]
@="\"C:\\Program Files\\uggc\\uggc.exe\" \"%1\""
[HKEY_CLASSES_ROOT\uggcf\shell\open\command]
@="\"C:\\Program Files\\uggc\\uggc.exe\" \"%1\""

View file

@ -0,0 +1,12 @@
{ depot, ... }:
depot.buildGo.external {
path = "github.com/pkg/browser";
src = depot.third_party.fetchFromGitHub {
owner = "pkg";
repo = "browser";
rev = "0a3d74bf9ce488f035cf5bc36f753a711bc74334";
sha256 = "0lv6kwvm31n79mh14a63zslaf4l9bspi2q0i8i9im4njfl42iv1c";
};
}