aboutsummaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorXe Iaso <me@xeiaso.net>2023-06-19 12:29:26 -0400
committerXe Iaso <me@xeiaso.net>2023-06-19 12:35:08 -0400
commit65686860aedc94393d70c6b0fd1261792c492b20 (patch)
tree209487c2a3a23d5344c80b01e8ffbd1433c0dcfc /misc
parent673f8325e2116f5645eeada3727b81f6c37982ab (diff)
downloadx-65686860aedc94393d70c6b0fd1261792c492b20.tar.xz
x-65686860aedc94393d70c6b0fd1261792c492b20.zip
reorg the tree again
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'misc')
-rw-r--r--misc/pla-tracker/.gitignore1
-rw-r--r--misc/pla-tracker/import.py27
-rw-r--r--misc/pla-tracker/main.py48
-rw-r--r--misc/pla-tracker/pokemans.json1
-rw-r--r--misc/s6/signal.go37
5 files changed, 114 insertions, 0 deletions
diff --git a/misc/pla-tracker/.gitignore b/misc/pla-tracker/.gitignore
new file mode 100644
index 0000000..98e6ef6
--- /dev/null
+++ b/misc/pla-tracker/.gitignore
@@ -0,0 +1 @@
+*.db
diff --git a/misc/pla-tracker/import.py b/misc/pla-tracker/import.py
new file mode 100644
index 0000000..7b4f5b5
--- /dev/null
+++ b/misc/pla-tracker/import.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -p python310 -i python
+
+import json
+import sqlite3
+
+con = sqlite3.connect("pokemans.db")
+
+cur = con.cursor()
+cur.execute("""
+CREATE TABLE pokemon
+ ( dex_id TEXT PRIMARY KEY
+ , name TEXT UNIQUE
+ , seen BOOLEAN NOT NULL DEFAULT FALSE
+ , caught BOOLEAN NOT NULL DEFAULT FALSE
+ , complete BOOLEAN NOT NULL DEFAULT FALSE
+ );""")
+
+with open("./pokemans.json", "r") as fin:
+ data = fin.read().rstrip()
+ mans = json.loads(data)
+
+ for man in mans:
+ cur.execute("INSERT INTO pokemon(dex_id, name) VALUES (?1, ?2)", (man["id"], man["name"]))
+
+con.commit()
+con.close()
diff --git a/misc/pla-tracker/main.py b/misc/pla-tracker/main.py
new file mode 100644
index 0000000..97b10b9
--- /dev/null
+++ b/misc/pla-tracker/main.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -p python310 -i python
+
+import json
+import sqlite3
+
+con = sqlite3.connect("pokemans.db")
+
+help_text = """Pokemon Legends Arceus Pokedex Tracker from Within
+
+Commands:
+ catch <id|name>
+ complete <id|name>
+ see <id|name>
+ whatsleft [seen|catch|complete]
+"""
+
+print(help_text)
+
+while True:
+ command = input("> ")
+ command = command.split()
+
+ match command[0]:
+ case "help":
+ print(help_text)
+ case "catch":
+ names = map(lambda x: (x,),command[1:])
+ cur = con.cursor()
+ cur.executemany("UPDATE pokemon SET seen=true, caught=true WHERE name = ?1 COLLATE NOCASE", names)
+ con.commit()
+ case "complete":
+ names = map(lambda x: (x,),command[1:])
+ cur = con.cursor()
+ cur.executemany("UPDATE pokemon SET seen=true, caught=true, complete=true WHERE name = ?1 COLLATE NOCASE", names)
+ con.commit()
+ case "see":
+ names = map(lambda x: (x,),command[1:])
+ cur = con.cursor()
+ cur.executemany("UPDATE pokemon SET seen=true WHERE name = ?1 COLLATE NOCASE", names)
+ con.commit()
+ case "whatsleft":
+ if len(command) == 1:
+ cur = con.cursor()
+ for pokemon in cur.execute("SELECT dex_id, name FROM pokemon WHERE caught = 0"):
+ print("%s: %s" % (pokemon[0], pokemon[1]))
+ continue
+ kind = command[1]
diff --git a/misc/pla-tracker/pokemans.json b/misc/pla-tracker/pokemans.json
new file mode 100644
index 0000000..e898f79
--- /dev/null
+++ b/misc/pla-tracker/pokemans.json
@@ -0,0 +1 @@
+[{"id":"#001","name":"Rowlet"},{"id":"#002","name":"Dartrix"},{"id":"#003","name":"Decidueye"},{"id":"#004","name":"Cyndaquil"},{"id":"#005","name":"Quilava"},{"id":"#006","name":"Typhlosion"},{"id":"#007","name":"Oshawott"},{"id":"#008","name":"Dewott"},{"id":"#009","name":"Samurott"},{"id":"#010","name":"Bidoof"},{"id":"#011","name":"Bibarel"},{"id":"#012","name":"Starly"},{"id":"#013","name":"Staravia"},{"id":"#014","name":"Staraptor"},{"id":"#015","name":"Shinx"},{"id":"#016","name":"Luxio"},{"id":"#017","name":"Luxray"},{"id":"#018","name":"Wurmple"},{"id":"#019","name":"Silcoon"},{"id":"#020","name":"Beautifly"},{"id":"#021","name":"Cascoon"},{"id":"#022","name":"Dustox"},{"id":"#023","name":"Ponyta"},{"id":"#024","name":"Rapidash"},{"id":"#025","name":"Eevee"},{"id":"#026","name":"Vaporeon"},{"id":"#027","name":"Jolteon"},{"id":"#028","name":"Flareon"},{"id":"#029","name":"Espeon"},{"id":"#030","name":"Umbreon"},{"id":"#031","name":"Leafeon"},{"id":"#032","name":"Glaceon"},{"id":"#033","name":"Sylveon"},{"id":"#034","name":"Zubat"},{"id":"#035","name":"Golbat"},{"id":"#036","name":"Crobat"},{"id":"#037","name":"Drifloon"},{"id":"#038","name":"Drifblim"},{"id":"#039","name":"Kricketot"},{"id":"#040","name":"Kricketune"},{"id":"#041","name":"Buizel"},{"id":"#042","name":"Floatzel"},{"id":"#043","name":"Burmy"},{"id":"#044","name":"Wormadam"},{"id":"#045","name":"Mothim"},{"id":"#046","name":"Geodude"},{"id":"#047","name":"Graveler"},{"id":"#048","name":"Golem"},{"id":"#049","name":"Stantler"},{"id":"#050","name":"Wyrdeer"},{"id":"#051","name":"Munchlax"},{"id":"#052","name":"Snorlax"},{"id":"#053","name":"Paras"},{"id":"#054","name":"Parasect"},{"id":"#055","name":"Pichu"},{"id":"#056","name":"Pikachu"},{"id":"#057","name":"Raichu"},{"id":"#058","name":"Abra"},{"id":"#059","name":"Kadabra"},{"id":"#060","name":"Alakazam"},{"id":"#061","name":"Chimchar"},{"id":"#062","name":"Monferno"},{"id":"#063","name":"Infernape"},{"id":"#064","name":"Buneary"},{"id":"#065","name":"Lopunny"},{"id":"#066","name":"Cherubi"},{"id":"#067","name":"Cherrim"},{"id":"#068","name":"Psyduck"},{"id":"#069","name":"Golduck"},{"id":"#070","name":"Combee"},{"id":"#071","name":"Vespiquen"},{"id":"#072","name":"Scyther"},{"id":"#073","name":"Kleavor"},{"id":"#074","name":"Scizor"},{"id":"#075","name":"Heracross"},{"id":"#076","name":"Mime Jr."},{"id":"#077","name":"Mr. Mime"},{"id":"#078","name":"Aipom"},{"id":"#079","name":"Ambipom"},{"id":"#080","name":"Magikarp"},{"id":"#081","name":"Gyarados"},{"id":"#082","name":"Shellos"},{"id":"#083","name":"Gastrodon"},{"id":"#084","name":"Qwilfish"},{"id":"#085","name":"Overqwil"},{"id":"#086","name":"Happiny"},{"id":"#087","name":"Chansey"},{"id":"#088","name":"Blissey"},{"id":"#089","name":"Budew"},{"id":"#090","name":"Roselia"},{"id":"#091","name":"Roserade"},{"id":"#092","name":"Carnivine"},{"id":"#093","name":"Petilil"},{"id":"#094","name":"Lilligant"},{"id":"#095","name":"Tangela"},{"id":"#096","name":"Tangrowth"},{"id":"#097","name":"Barboach"},{"id":"#098","name":"Whiscash"},{"id":"#099","name":"Croagunk"},{"id":"#100","name":"Toxicroak"},{"id":"#101","name":"Ralts"},{"id":"#102","name":"Kirlia"},{"id":"#103","name":"Gardevoir"},{"id":"#104","name":"Gallade"},{"id":"#105","name":"Yanma"},{"id":"#106","name":"Yanmega"},{"id":"#107","name":"Hippopotas"},{"id":"#108","name":"Hippowdon"},{"id":"#109","name":"Pachirisu"},{"id":"#110","name":"Stunky"},{"id":"#111","name":"Skuntank"},{"id":"#112","name":"Teddiursa"},{"id":"#113","name":"Ursaring"},{"id":"#114","name":"Ursaluna"},{"id":"#115","name":"Goomy"},{"id":"#116","name":"Sliggoo"},{"id":"#117","name":"Goodra"},{"id":"#118","name":"Onix"},{"id":"#119","name":"Steelix"},{"id":"#120","name":"Rhyhorn"},{"id":"#121","name":"Rhydon"},{"id":"#122","name":"Rhyperior"},{"id":"#123","name":"Bonsly"},{"id":"#124","name":"Sudowoodo"},{"id":"#125","name":"Lickitung"},{"id":"#126","name":"Lickilicky"},{"id":"#127","name":"Togepi"},{"id":"#128","name":"Togetic"},{"id":"#129","name":"Togekiss"},{"id":"#130","name":"Turtwig"},{"id":"#131","name":"Grotle"},{"id":"#132","name":"Torterra"},{"id":"#133","name":"Porygon"},{"id":"#134","name":"Porygon2"},{"id":"#135","name":"Porygon-Z"},{"id":"#136","name":"Gastly"},{"id":"#137","name":"Haunter"},{"id":"#138","name":"Gengar"},{"id":"#139","name":"Spiritomb"},{"id":"#140","name":"Murkrow"},{"id":"#141","name":"Honchkrow"},{"id":"#142","name":"Unown"},{"id":"#143","name":"Spheal"},{"id":"#144","name":"Sealeo"},{"id":"#145","name":"Walrein"},{"id":"#146","name":"Remoraid"},{"id":"#147","name":"Octillery"},{"id":"#148","name":"Skorupi"},{"id":"#149","name":"Drapion"},{"id":"#150","name":"Growlithe"},{"id":"#151","name":"Arcanine"},{"id":"#152","name":"Glameow"},{"id":"#153","name":"Purugly"},{"id":"#154","name":"Machop"},{"id":"#155","name":"Machoke"},{"id":"#156","name":"Machamp"},{"id":"#157","name":"Chatot"},{"id":"#158","name":"Duskull"},{"id":"#159","name":"Dusclops"},{"id":"#160","name":"Dusknoir"},{"id":"#161","name":"Piplup"},{"id":"#162","name":"Prinplup"},{"id":"#163","name":"Empoleon"},{"id":"#164","name":"Mantyke"},{"id":"#165","name":"Mantine"},{"id":"#166","name":"Basculin"},{"id":"#167","name":"Basculegion"},{"id":"#168","name":"Vulpix"},{"id":"#169","name":"Ninetales"},{"id":"#170","name":"Tentacool"},{"id":"#171","name":"Tentacruel"},{"id":"#172","name":"Finneon"},{"id":"#173","name":"Lumineon"},{"id":"#174","name":"Magby"},{"id":"#175","name":"Magmar"},{"id":"#176","name":"Magmortar"},{"id":"#177","name":"Magnemite"},{"id":"#178","name":"Magneton"},{"id":"#179","name":"Magnezone"},{"id":"#180","name":"Bronzor"},{"id":"#181","name":"Bronzong"},{"id":"#182","name":"Elekid"},{"id":"#183","name":"Electabuzz"},{"id":"#184","name":"Electivire"},{"id":"#185","name":"Gligar"},{"id":"#186","name":"Gliscor"},{"id":"#187","name":"Gible"},{"id":"#188","name":"Gabite"},{"id":"#189","name":"Garchomp"},{"id":"#190","name":"Nosepass"},{"id":"#191","name":"Probopass"},{"id":"#192","name":"Voltorb"},{"id":"#193","name":"Electrode"},{"id":"#194","name":"Rotom"},{"id":"#195","name":"Chingling"},{"id":"#196","name":"Chimecho"},{"id":"#197","name":"Misdreavus"},{"id":"#198","name":"Mismagius"},{"id":"#199","name":"Cleffa"},{"id":"#200","name":"Clefairy"},{"id":"#201","name":"Clefable"},{"id":"#202","name":"Sneasel"},{"id":"#203","name":"Sneasler"},{"id":"#204","name":"Weavile"},{"id":"#205","name":"Snorunt"},{"id":"#206","name":"Glalie"},{"id":"#207","name":"Froslass"},{"id":"#208","name":"Cranidos"},{"id":"#209","name":"Rampardos"},{"id":"#210","name":"Shieldon"},{"id":"#211","name":"Bastiodon"},{"id":"#212","name":"Swinub"},{"id":"#213","name":"Piloswine"},{"id":"#214","name":"Mamoswine"},{"id":"#215","name":"Bergmite"},{"id":"#216","name":"Avalugg"},{"id":"#217","name":"Snover"},{"id":"#218","name":"Abomasnow"},{"id":"#219","name":"Zorua"},{"id":"#220","name":"Zoroark"},{"id":"#221","name":"Rufflet"},{"id":"#222","name":"Braviary"},{"id":"#223","name":"Riolu"},{"id":"#224","name":"Lucario"},{"id":"#225","name":"Uxie"},{"id":"#226","name":"Mesprit"},{"id":"#227","name":"Azelf"},{"id":"#228","name":"Heatran"},{"id":"#229","name":"Regigigas"},{"id":"#230","name":"Cresselia"},{"id":"#231","name":"Tornadus"},{"id":"#232","name":"Thundurus"},{"id":"#233","name":"Landorus"},{"id":"#234","name":"Enamorus"},{"id":"#235","name":"Dialga"},{"id":"#236","name":"Palkia"},{"id":"#237","name":"Giratina"},{"id":"#238","name":"Arceus"},{"id":"#239","name":"Phione"},{"id":"#240","name":"Manaphy"},{"id":"#241","name":"Shaymin"},{"id":"#242","name":"Darkrai"}] \ No newline at end of file
diff --git a/misc/s6/signal.go b/misc/s6/signal.go
new file mode 100644
index 0000000..f754bbe
--- /dev/null
+++ b/misc/s6/signal.go
@@ -0,0 +1,37 @@
+// Package s6 allows Go programs to signal readiness to the s6[1] suite of system
+// supervision tools. This should be run in func main.
+//
+// [1]: http://skarnet.org/software/s6/index.html
+package s6
+
+import (
+ "errors"
+ "flag"
+ "os"
+)
+
+var (
+ ErrCantFindNotificationFD = errors.New("s6: can't find notification file descriptor")
+ notificationFD = flag.Int("notification-fd", 0, "notification file descriptor")
+)
+
+// Signal signals readiness to s6.
+//
+// See: http://skarnet.org/software/s6/notifywhenup.html
+func Signal() error {
+ var err error
+
+ // If this is unset, we probably don't care about notifying s6.
+ if *notificationFD == 0 {
+ return nil
+ }
+
+ fout := os.NewFile(uintptr(*notificationFD), "s6-notification")
+ if fout == nil {
+ return ErrCantFindNotificationFD
+ }
+ defer fout.Close()
+
+ _, err = fout.Write([]byte("\n"))
+ return err
+}