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