This commit is contained in:
Luciano Laratelli 2025-04-11 13:36:52 -04:00
parent e90e323c17
commit 5fc2a3820d
25 changed files with 518 additions and 106 deletions

View file

@ -18,3 +18,11 @@ repl: storage/site.db
jar: db jar: db
clojure -T:build uberjar clojure -T:build uberjar
mv target/*.jar . mv target/*.jar .
run-jar: jar
java -jar score-the-pigs.jar
.PHONY: deploy
deploy:
fly deploy --local-only

View file

@ -35,6 +35,7 @@
com.github.seancorfield/honeysql {:mvn/version "2.6.1126"} com.github.seancorfield/honeysql {:mvn/version "2.6.1126"}
migratus/migratus {:mvn/version "1.5.6"} migratus/migratus {:mvn/version "1.5.6"}
babashka/fs {:mvn/version "0.5.24"}
babashka/process {:mvn/version "0.6.23"}} babashka/process {:mvn/version "0.6.23"}}
:aliases :aliases

View file

@ -6,7 +6,7 @@
:default "0.0.0.0"} :default "0.0.0.0"}
:biff/port 8080 :biff/port 8080
:example/db-url #profile {:prod "jdbc:sqlite:/storage/site.db" :example/db-url #profile {:prod "jdbc:sqlite:/app/storage/site.db"
:default "jdbc:sqlite:storage/site.db"} :default "jdbc:sqlite:storage/site.db"}
:biff.beholder/enabled #profile {:dev true :biff.beholder/enabled #profile {:dev true
@ -18,7 +18,6 @@
:biff.refresh/enabled #profile {:dev true :biff.refresh/enabled #profile {:dev true
:default false} :default false}
:biff.nrepl/port #or [#biff/env NREPL_PORT "7888"] :biff.nrepl/port #or [#biff/env NREPL_PORT "7888"]
:biff.nrepl/args ["--port" #ref [:biff.nrepl/port] :biff.nrepl/args ["--port" #ref [:biff.nrepl/port]
"--middleware" "[cider.nrepl/cider-middleware,refactor-nrepl.middleware/wrap-refactor]"] "--middleware" "[cider.nrepl/cider-middleware,refactor-nrepl.middleware/wrap-refactor]"]

View file

@ -0,0 +1 @@
PRAGMA journal_mode=WAL;

View file

@ -1,90 +0,0 @@
(ns com.biffweb.my-project
(:require
[clojure.test :as test]
[com.biffweb :as biff]
[com.score-the-pigs.app :as app]
[com.score-the-pigs.middleware :as mid]
[com.score-the-pigs.ui :as ui]
[migratus.core :as migratus]
[next.jdbc :as jdbc]
[nrepl.cmdline :as nrepl-cmd]
[taoensso.telemere.timbre :as log])
(:gen-class))
(set! *warn-on-reflection* true)
(def modules
[app/module])
(def routes [["" {:middleware [mid/wrap-site-defaults]}
(keep :routes modules)]
["" {:middleware [mid/wrap-api-defaults]}
(keep :api-routes modules)]])
(def handler (-> (biff/reitit-handler {:routes routes})
mid/wrap-base-defaults))
(def static-pages (apply biff/safe-merge (map :static modules)))
(defn generate-assets! [_ctx]
(biff/export-rum static-pages "target/resources/public")
(biff/delete-old-files {:dir "target/resources/public"
:exts [".html"]}))
(defn on-save [ctx]
(biff/add-libs)
(biff/eval-files! ctx)
(generate-assets! ctx)
(biff/catchall (require 'com.biffweb.my-project-test))
(test/run-all-tests #"com.biffweb.my-project.*-test"))
(def initial-system
{:biff/modules #'modules
:biff/merge-context-fn identity
:biff/handler #'handler
:biff.beholder/on-save #'on-save
:biff.middleware/on-error #'ui/on-error
:example/chat-clients (atom {})})
(defonce system (atom {}))
(defn ctx->migratus-config [ctx]
{:store :database
:migration-dir "migrations/"
:db {:connection (jdbc/get-connection (:example/db-url ctx))
:managed-connection? true}})
(defn use-sqlite [ctx]
(let [db-url (get ctx :example/db-url)
ds (jdbc/get-datasource db-url)
migration-config (ctx->migratus-config ctx)]
(migratus/init migration-config)
(migratus/migrate migration-config)
(assoc ctx :example/ds ds)))
(def components
[biff/use-aero-config
use-sqlite
biff/use-queues
biff/use-htmx-refresh
biff/use-jetty
biff/use-chime
biff/use-beholder])
(defn start []
(let [new-system (reduce (fn [system component]
(log/info "starting:" (str component))
(component system))
initial-system
components)]
(reset! system new-system)
(generate-assets! new-system)
(log/info "System started.")
(log/info "Go to" (:biff/base-url new-system))
new-system))
(defn -main []
(let [{:keys [biff.nrepl/args]} (start)]
(apply nrepl-cmd/-main args)))

View file

@ -1,7 +1,5 @@
(ns com.score-the-pigs (ns com.score-the-pigs
(:require (:require
[babashka.process :as process]
[clojure.string :as str]
[clojure.test :as test] [clojure.test :as test]
[com.biffweb :as biff] [com.biffweb :as biff]
[com.score-the-pigs.app :as app] [com.score-the-pigs.app :as app]
@ -61,14 +59,10 @@
(defn use-sqlite [ctx] (defn use-sqlite [ctx]
(let [db-url (get ctx :example/db-url) (let [db-url (get ctx :example/db-url)
ds (jdbc/get-datasource db-url) ds (jdbc/get-datasource db-url)
migration-config (ctx->migratus-config ctx) migration-config (ctx->migratus-config ctx)]
db-loc (last (str/split db-url #":"))]
(process/shell (str "rm -rf " db-loc "*"))
(process/shell (str "sqlite3 " db-loc " 'PRAGMA journal_mode=WAL;'"))
(migratus/init migration-config) (migratus/init migration-config)
(migratus/reset migration-config) (migratus/migrate migration-config)
(assoc ctx :example/ds ds))) (assoc ctx :example/ds ds)))
(defn use-jetty [{:biff/keys [host port handler] (defn use-jetty [{:biff/keys [host port handler]

View file

@ -0,0 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Apr 11 12:29:29 EDT 2025
fs-0.4.18.jar>clojars=
fs-0.4.18.pom>clojars=

View file

@ -0,0 +1 @@
496a5bdcc1b6266590229c22397a7e3b62b83873

83
vendor/babashka/fs/0.4.18/fs-0.4.18.pom vendored Normal file
View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>babashka</groupId>
<artifactId>fs</artifactId>
<packaging>jar</packaging>
<version>0.4.18</version>
<name>fs</name>
<description>Babashka file system utilities.</description>
<url>https://github.com/babashka/fs</url>
<licenses>
<license>
<name>Eclipse Public License 1.0</name>
<url>http://opensource.org/licenses/eclipse-1.0.php</url>
</license>
</licenses>
<scm>
<url>https://github.com/babashka/fs</url>
<connection>scm:git:git://github.com/babashka/fs.git</connection>
<developerConnection>scm:git:ssh://git@github.com/babashka/fs.git</developerConnection>
<tag>867977ab344221cf3b6839ae658aa015d052f985</tag>
</scm>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>resources</directory>
</testResource>
</testResources>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<plugins/>
</build>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>clojars</id>
<url>https://repo.clojars.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<dependencyManagement>
<dependencies/>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>clj-commons</groupId>
<artifactId>conch</artifactId>
<version>0.9.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<!-- This file was autogenerated by Leiningen.
Please do not edit it directly; instead edit project.clj and regenerate it.
It should not be considered canonical data. For more information see
https://codeberg.org/leiningen/leiningen -->

View file

@ -0,0 +1 @@
dc8dd38568b9ec718e5bbfe5d076484318d7e094

View file

@ -0,0 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Apr 11 10:53:11 EDT 2025
fs-0.5.24.jar>clojars=
fs-0.5.24.pom>clojars=

View file

@ -0,0 +1 @@
b8b8045cac15c83db6b2e47187b83f2f378d7e56

83
vendor/babashka/fs/0.5.24/fs-0.5.24.pom vendored Normal file
View file

@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>babashka</groupId>
<artifactId>fs</artifactId>
<packaging>jar</packaging>
<version>0.5.24</version>
<name>fs</name>
<description>Babashka file system utilities.</description>
<url>https://github.com/babashka/fs</url>
<licenses>
<license>
<name>Eclipse Public License 1.0</name>
<url>http://opensource.org/licenses/eclipse-1.0.php</url>
</license>
</licenses>
<scm>
<url>https://github.com/babashka/fs</url>
<connection>scm:git:git://github.com/babashka/fs.git</connection>
<developerConnection>scm:git:ssh://git@github.com/babashka/fs.git</developerConnection>
<tag>063e00b2d24f99e77b7c62556eab1930b7b1e2fc</tag>
</scm>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>resources</directory>
</testResource>
</testResources>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<plugins/>
</build>
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<repository>
<id>clojars</id>
<url>https://repo.clojars.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<dependencyManagement>
<dependencies/>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>clj-commons</groupId>
<artifactId>conch</artifactId>
<version>0.9.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
<!-- This file was autogenerated by Leiningen.
Please do not edit it directly; instead edit project.clj and regenerate it.
It should not be considered canonical data. For more information see
https://codeberg.org/leiningen/leiningen -->

View file

@ -0,0 +1 @@
698b87f2cd474875a48f6a2c4282c7e5d446a2a1

View file

@ -0,0 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Apr 11 12:42:32 EDT 2025
antq-2.11.1276.jar>clojars=
antq-2.11.1276.pom>clojars=

View file

@ -0,0 +1 @@
e59d97f8497bfa83553b4393576b4db7ebabcaec

View file

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<groupId>com.github.liquidz</groupId>
<artifactId>antq</artifactId>
<version>2.11.1276</version>
<name>antq</name>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>data.json</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.12.0</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>tools.cli</artifactId>
<version>1.1.230</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>data.zip</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>rewrite-clj</groupId>
<artifactId>rewrite-clj</artifactId>
<version>1.1.49</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>data.xml</artifactId>
<version>0.2.0-alpha9</version>
</dependency>
<dependency>
<groupId>pogonos</groupId>
<artifactId>pogonos</artifactId>
<version>0.2.1</version>
</dependency>
<dependency>
<groupId>clj-commons</groupId>
<artifactId>clj-yaml</artifactId>
<version>1.0.29</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>tools.deps</artifactId>
<version>0.23.1512</version>
</dependency>
<dependency>
<groupId>version-clj</groupId>
<artifactId>version-clj</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>com.github.liquidz</groupId>
<artifactId>rewrite-indented</artifactId>
<version>0.2.44</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>core.async</artifactId>
<version>1.7.701</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
</build>
<repositories>
<repository>
<id>clojars</id>
<url>https://repo.clojars.org/</url>
</repository>
</repositories>
<scm>
<connection>scm:git:git://github.com/liquidz/antq.git</connection>
<developerConnection>scm:git:ssh://git@github.com/liquidz/antq.git</developerConnection>
<tag>2.11.1276</tag>
<url>https://github.com/liquidz/antq</url>
</scm>
<description>Point out your outdated dependencies</description>
<licenses>
<license>
<name>Eclipse Public License - v 2.0</name>
<url>https://www.eclipse.org/legal/epl-2.0/</url>
</license>
</licenses>
</project>

View file

@ -0,0 +1 @@
1b6d50eba16f8e6d5ccd2c71107e4b2ea27dc789

View file

@ -3,7 +3,7 @@
<groupId>com.github.liquidz</groupId> <groupId>com.github.liquidz</groupId>
<artifactId>antq</artifactId> <artifactId>antq</artifactId>
<versioning> <versioning>
<release>2.11.1269</release> <release>2.11.1276</release>
<versions> <versions>
<version>0.12.0</version> <version>0.12.0</version>
<version>0.12.1</version> <version>0.12.1</version>
@ -89,7 +89,8 @@
<version>2.11.1260</version> <version>2.11.1260</version>
<version>2.11.1264</version> <version>2.11.1264</version>
<version>2.11.1269</version> <version>2.11.1269</version>
<version>2.11.1276</version>
</versions> </versions>
<lastUpdated>20250223221714</lastUpdated> <lastUpdated>20250315015136</lastUpdated>
</versioning> </versioning>
</metadata> </metadata>

View file

@ -1 +1 @@
1214ea103d285c51fbf352af898be19a8ce4f52d 6248cbf312ed6c60ee409774476cc028addc3543

View file

@ -1,5 +1,5 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice. #NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Mar 14 19:37:39 EDT 2025 #Fri Apr 11 12:42:31 EDT 2025
maven-metadata-central.xml.error= maven-metadata-central.xml.error=
maven-metadata-central.xml.lastUpdated=1741995459679 maven-metadata-central.xml.lastUpdated=1744389750995
maven-metadata-clojars.xml.lastUpdated=1741995459689 maven-metadata-clojars.xml.lastUpdated=1744389751000

View file

@ -0,0 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Apr 11 12:42:31 EDT 2025
tools.deps-0.23.1512.jar>central=
tools.deps-0.23.1512.pom>central=

View file

@ -0,0 +1 @@
d8945858b805409f82983aa5a23db1e7447f7f4a

View file

@ -0,0 +1,215 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>tools.deps</artifactId>
<version>0.23.1512</version>
<name>tools.deps</name>
<parent>
<groupId>org.clojure</groupId>
<artifactId>pom.contrib</artifactId>
<version>1.2.0</version>
</parent>
<developers>
<developer>
<id>puredanger</id>
<name>Alex Miller</name>
</developer>
</developers>
<properties>
<!-- used for build -->
<clojure.warnOnReflection>true</clojure.warnOnReflection>
<clojure.version>1.12.0</clojure.version>
<resolverVersion>1.8.2</resolverVersion>
<mavenVersion>3.8.8</mavenVersion>
<!-- default published in install deps.edn -->
<clojure.default>1.12.0</clojure.default>
</properties>
<dependencies>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>${clojure.version}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-api</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-spi</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-impl</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-util</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-connector-basic</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-file</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-http</artifactId>
<version>${resolverVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-resolver-provider</artifactId>
<version>${mavenVersion}</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>${mavenVersion}</version>
<exclusions>
<exclusion> <!-- CVE-2020-8908 -->
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.36</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>data.xml</artifactId>
<version>0.2.0-alpha9</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>tools.gitlibs</artifactId>
<version>2.6.206</version>
</dependency>
<dependency>
<groupId>org.clojure</groupId>
<artifactId>tools.cli</artifactId>
<version>1.1.230</version>
</dependency>
<dependency>
<groupId>com.cognitect.aws</groupId>
<artifactId>api</artifactId>
<version>0.8.723</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency> <!-- override for CVE fixes -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-http</artifactId>
<version>9.4.56.v20240826</version>
</dependency>
<dependency> <!-- override for CVE fixes -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>9.4.56.v20240826</version>
</dependency>
<dependency> <!-- override for CVE fixes -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>9.4.56.v20240826</version>
</dependency>
<dependency>
<groupId>com.cognitect.aws</groupId>
<artifactId>endpoints</artifactId>
<version>871.2.29.39</version>
</dependency>
<dependency>
<groupId>com.cognitect.aws</groupId>
<artifactId>s3</artifactId>
<version>871.2.29.35</version>
</dependency>
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<!-- By default, compile everything as a sanity check, but do
not include any AOT-compiled .class files in the
JAR. Projects may override as needed. -->
<groupId>com.theoryinpractise</groupId>
<artifactId>clojure-maven-plugin</artifactId>
<version>1.7.1</version>
<extensions>true</extensions>
<configuration>
<warnOnReflection>${clojure.warnOnReflection}</warnOnReflection>
<temporaryOutputDirectory>true</temporaryOutputDirectory>
</configuration>
<executions>
<execution>
<id>clojure-compile</id>
<phase>none</phase>
</execution>
<execution>
<id>clojure-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<scm>
<connection>scm:git:git@github.com:clojure/tools.deps.git</connection>
<developerConnection>scm:git:git@github.com:clojure/tools.deps.git</developerConnection>
<url>git@github.com:clojure/tools.deps.git</url>
<tag>v0.23.1512</tag>
</scm>
<repositories>
<repository>
<id>clojars</id>
<url>https://clojars.org/repo/</url>
</repository>
</repositories>
</project>

View file

@ -0,0 +1 @@
2628e81c8120d032b1cb08f049e02c0abb54149c