Conditional machine specific hostname sourcing
This commit is contained in:
parent
4c0987e55a
commit
4dbdef1865
@ -1 +1 @@
|
|||||||
Subproject commit 19c231b2518efe71cb6dade3ad4cf573377902c3
|
Subproject commit 6d4584f01dec0143a169186df1608860d1aa1ef0
|
2
.zshrc
2
.zshrc
@ -50,4 +50,4 @@ alias gl="git log"
|
|||||||
alias sbcl="rlwrap sbcl"
|
alias sbcl="rlwrap sbcl"
|
||||||
|
|
||||||
# Machine specific config
|
# Machine specific config
|
||||||
source ~/scripts/machine-specific-zsh/$(hostname).zsh
|
[ -f ~/scripts/machine-specific-zsh/$(hostname).zsh ] && source ~/scripts/machine-specific-zsh/$(hostname).zsh
|
||||||
|
26
scripts/guestbook/guestbook.lisp
Normal file
26
scripts/guestbook/guestbook.lisp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
(ql:quickload :woo)
|
||||||
|
|
||||||
|
(defparameter *icon-file* "~/scripts/guestbook/icon.png")
|
||||||
|
(defparameter *message-list-file* "~/scripts/guestbook/list.txt")
|
||||||
|
|
||||||
|
(defparameter *routes* (make-hash-table :test 'equal))
|
||||||
|
(defparameter *rate-limits* (make-hash-table :test 'equal))
|
||||||
|
(defparameter *not-seen-messages* '())
|
||||||
|
|
||||||
|
(defun send-alert (msg)
|
||||||
|
(uiop:run-program `("notify-send" "--icon" ,*icon-file* ,msg)))
|
||||||
|
|
||||||
|
|
||||||
|
(defun add-message (env)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(woo:run
|
||||||
|
(lambda (env)
|
||||||
|
(let* ((path-info (getf env :path-info))
|
||||||
|
(req-method (getf env :request-method))
|
||||||
|
(ip (getf env :remote-addr))
|
||||||
|
(route-fn (getf *routes* path-info
|
||||||
|
|
||||||
|
'(200 (:content-type "text/plain") ("Hello, World")))
|
||||||
|
:worker-num 1)
|
BIN
scripts/guestbook/icon.png
Normal file
BIN
scripts/guestbook/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 640 KiB |
BIN
scripts/jalarm/alarm.wav
Normal file
BIN
scripts/jalarm/alarm.wav
Normal file
Binary file not shown.
69
scripts/jalarm/jar.py
Normal file
69
scripts/jalarm/jar.py
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
jar = {
|
||||||
|
"lineSkips": 1, # Skip the base of the jar
|
||||||
|
"height": 11, # Height you want filled to, 12 will be the very top of the jar
|
||||||
|
"width": 20,
|
||||||
|
"fillLines": [(3,16),(2,17),(2,17),(2,17),(2,17),(2,17),(2,17),(2,17),(2,17),(2,17),(2,17),(3,16)],
|
||||||
|
"text":""" | |
|
||||||
|
| |
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
|| ||
|
||||||
|
\\\\ //
|
||||||
|
--------------"""}
|
||||||
|
|
||||||
|
class AwesomeJar:
|
||||||
|
def __init__(self, jarObject):
|
||||||
|
self.jarObject = jarObject
|
||||||
|
self.progress = 0.00
|
||||||
|
self.dropletLine = 0
|
||||||
|
self.dropletDelta = 1
|
||||||
|
|
||||||
|
def drawJar(self):
|
||||||
|
jarRepresentation = self.jarObject["text"].split("\n")
|
||||||
|
linesToFill = int(self.progress * self.jarObject["height"])
|
||||||
|
|
||||||
|
dropletX = self.jarObject["width"] // 2
|
||||||
|
if (self.progress < 1):
|
||||||
|
jarRepresentation[self.dropletLine] = jarRepresentation[self.dropletLine][0:dropletX] + "O" + jarRepresentation[self.dropletLine][(dropletX+1):]
|
||||||
|
|
||||||
|
for y_fill in range(self.jarObject["height"] - linesToFill + self.jarObject["lineSkips"], self.jarObject["height"]+self.jarObject["lineSkips"]):
|
||||||
|
jarRepresentation[y_fill] = "".join(list(map(lambda x:
|
||||||
|
"X" if x in range(self.jarObject["fillLines"][y_fill][0],self.jarObject["fillLines"][y_fill][1]+1)
|
||||||
|
else jarRepresentation[y_fill][x], range(len(jarRepresentation[y_fill])))))
|
||||||
|
|
||||||
|
return jarRepresentation
|
||||||
|
|
||||||
|
def setProgress(self, progress):
|
||||||
|
linesToFill = int(self.progress * self.jarObject["height"])
|
||||||
|
self.dropletLine += self.dropletDelta
|
||||||
|
if self.dropletLine > self.jarObject["height"]-linesToFill:
|
||||||
|
self.progress = progress
|
||||||
|
self.dropletLine = 0
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return "".join([x + "\n" for x in self.drawJar()])
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
newJar = AwesomeJar(jar)
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
newJar.setProgress(0.2)
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
||||||
|
print(newJar.drawJar())
|
99
scripts/jalarm/take
Executable file
99
scripts/jalarm/take
Executable file
@ -0,0 +1,99 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import re
|
||||||
|
import time as t
|
||||||
|
import curses
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import jar
|
||||||
|
|
||||||
|
def formatTime(time):
|
||||||
|
return ((str(time[0]).zfill(2) + ":") if time[0] else "") + ((str(time[1]).zfill(2) + ":") if time[1] or time[0] else "") + (str(time[2]).zfill(2))
|
||||||
|
|
||||||
|
def timeToSeconds(time):
|
||||||
|
return time[2] + 60*time[1] + 3600*time[0]
|
||||||
|
|
||||||
|
def secondsToTime(seconds):
|
||||||
|
return [seconds // 3600, (seconds - (seconds // 3600) * 3600) // 60, seconds % 60]
|
||||||
|
|
||||||
|
def decrementTime(time):
|
||||||
|
return secondsToTime(timeToSeconds(time) - 1)
|
||||||
|
|
||||||
|
class MyTimerWindow:
|
||||||
|
def __init__(self, message="Timer"):
|
||||||
|
self.message = message
|
||||||
|
self.screen = curses.initscr()
|
||||||
|
curses.noecho()
|
||||||
|
curses.cbreak()
|
||||||
|
self.dimensions = self.screen.getmaxyx()
|
||||||
|
self.screen.keypad(True)
|
||||||
|
self.jar = jar.AwesomeJar(jar.jar)
|
||||||
|
|
||||||
|
def update(self, time, beginningTime):
|
||||||
|
self.jar.setProgress((timeToSeconds(beginningTime) - timeToSeconds(time))/timeToSeconds(beginningTime))
|
||||||
|
|
||||||
|
def step(self, time):
|
||||||
|
self.screen.clear()
|
||||||
|
self.screen.addstr(1, self.dimensions[1]//2 - len(self.message)//2, self.message)
|
||||||
|
self.screen.addstr(3, self.dimensions[1]//2 - len(formatTime(time))//2, formatTime(time))
|
||||||
|
list(map(lambda x: self.screen.addstr(8+x, self.dimensions[1]//2 - self.jar.jarObject["width"]//2, self.jar.drawJar()[x]), range(0, len(self.jar.drawJar()))))
|
||||||
|
self.screen.addstr(25,0,"")
|
||||||
|
self.screen.refresh()
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
curses.nocbreak()
|
||||||
|
self.screen.keypad(False)
|
||||||
|
curses.echo()
|
||||||
|
curses.endwin()
|
||||||
|
os.system("aplay alarm.wav")
|
||||||
|
|
||||||
|
def main():
|
||||||
|
p = re.compile('(^[0-9]*)(?::|^)([0-9]*(?=:)):([0-9]*$)')
|
||||||
|
beginning_time = list(map(lambda x: int(x) if x else 0, p.match(sys.argv[1]).groups()))
|
||||||
|
time = beginning_time.copy()
|
||||||
|
|
||||||
|
iteration_time = t.time()
|
||||||
|
if not "file" in sys.argv:
|
||||||
|
timer = MyTimerWindow() if len(sys.argv) < 3 else MyTimerWindow(sys.argv[2])
|
||||||
|
timer.update(time, beginning_time)
|
||||||
|
while any(time):
|
||||||
|
try:
|
||||||
|
timer.step(time)
|
||||||
|
t.sleep(1)
|
||||||
|
if (t.time() - iteration_time >= 1):
|
||||||
|
iteration_time = t.time()
|
||||||
|
time = decrementTime(time)
|
||||||
|
timer.update(time, beginning_time)
|
||||||
|
timer.step(time)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
break
|
||||||
|
timer.stop()
|
||||||
|
print("\nDONE")
|
||||||
|
else:
|
||||||
|
iteration_time = t.time()
|
||||||
|
try:
|
||||||
|
pid = open("/home/logan/scripts/state-files/take/pid.txt", "r")
|
||||||
|
os.system(f"kill -9 {pid.read()} 2> /dev/null")
|
||||||
|
pid.close()
|
||||||
|
except:
|
||||||
|
os.system("mkdir -p /home/logan/scripts/state-files/take")
|
||||||
|
pass
|
||||||
|
pid = open("/home/logan/scripts/state-files/take/pid.txt", "w")
|
||||||
|
pid.write(str(os.getpid()))
|
||||||
|
pid.close()
|
||||||
|
while any(time):
|
||||||
|
t.sleep(.1)
|
||||||
|
try:
|
||||||
|
if (t.time() - iteration_time >= 1):
|
||||||
|
iteration_time = t.time()
|
||||||
|
file = open("/home/logan/scripts/state-files/take/current-time.txt", "w")
|
||||||
|
file.write(formatTime(time))
|
||||||
|
file.close()
|
||||||
|
time = decrementTime(time)
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
break
|
||||||
|
file = open("/home/logan/scripts/state-files/take/current-time.txt", "w")
|
||||||
|
file.write("Not Timing")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user