Rewrite fallback script to common lisp (#3)
* wip: lay out skeleton for fallback script
Signed-off-by: Amy <amy+git@amogus.cloud>
* wip(fallback): implement DID resolution and git cmd wrappers
DID resolution works with both DID methods outlined in
https://atproto.com/specs/did#blessed-did-methods
The resolve-pds method allows more DID methods to be implemented when they are needed.
Signed-off-by: Amy <amy+git@amogus.cloud>
* wip: xrpc requests
Took a bit to lay out a good API, but it works well.
Next up is generating HTML elements & writing to the index.html page
inside the noscript block. I assume it's going to take a while to get
as good as possible, but things have been going smoothly so far, so I
don't think it will take me a long time.
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: get-in-plist macro
Convenience macro that automatically creates getf chains for accessing
deep nested plists.
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: remove debug logging for resolve-pds method
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: fill in values related to configuration options
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: update Depends on section in script information
Signed-off-by: Amy <amy+git@amogus.cloud>
* feat: generate html using spinneret
Datetime parsing is done by local-time. Last thing to do is to safely
replace the noscript block in the index.html file.
Emacs made this easy because it works with buffers directly, so
modifying files was trivial. However, this is not the case with common lisp.
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: make get-in macro generic, make html gen more robust
Also removes the publish function as this script will just run once
everything has been evaluated.
Signed-off-by: Amy <amy+git@amogus.cloud>
* feat: fallback generation script written in common lisp
The script has a few dependencies (namely, quicklisp) that need to be
handled in a CI environment but otherwise it's pretty lightweight and
removes the emacs dependency.
closes #1 and partialy solves #2
Signed-off-by: Amy <amy+git@amogus.cloud>
* fix: git-push not working due to malformed expression
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: gracefully handle git commit-ing
Signed-off-by: Amy <amy+git@amogus.cloud>
* chore: replace unwind-protect with handler-case
also return exit code 1 on fail!
Signed-off-by: Amy <amy+git@amogus.cloud>
* feat: support multiple publications
Now leaflet and offprint can co-exist together!
Signed-off-by: Amy <amy+git@amogus.cloud>
* feat(js): support multiple standard.site publications
Both sides are hardcoded to have as much control as I could possibly
get, just because I don't feel like making a second request to poll
publications is worth it.
Signed-off-by: Amy <amy+git@amogus.cloud>
---------
Signed-off-by: Amy <amy+git@amogus.cloud>