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:
parent
9885b70b7a
commit
2237a51d10
5 changed files with 94 additions and 0 deletions
14
fun/uggc/default.nix
Normal file
14
fun/uggc/default.nix
Normal 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
38
fun/uggc/main.go
Normal 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
7
fun/uggc/uggc.desktop
Normal 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
23
fun/uggc/uggc.reg
Normal 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\""
|
12
third_party/gopkgs/github.com/pkg/browser/default.nix
vendored
Normal file
12
third_party/gopkgs/github.com/pkg/browser/default.nix
vendored
Normal 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";
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue