Commit d3c778fbfa6a23addabaf0bbaf37c075a5ac67c2

Thomas de Grivel 2025-04-07T20:59:06

ci

diff --git a/home/ci/app/controllers/rbpkg_controller.kc3 b/home/ci/app/controllers/rbpkg_controller.kc3
new file mode 100644
index 0000000..2301deb
--- /dev/null
+++ b/home/ci/app/controllers/rbpkg_controller.kc3
@@ -0,0 +1,35 @@
+defmodule RbpkgController do
+
+  def show_repo = fn (repo) {
+    puts("RbpkgController.show_repo(#{inspect(repo)})")
+  }
+
+  def route = fn (request) {
+    if Str.starts_with?(request.url, "/rbpkg/") do
+      url = Str.slice(request.url, 7, -1)
+      if Str.ends_with?(url, "/") do
+        url = Str.slice(url, 0, -2)
+      end
+      list = Str.split(url, "/")
+      if request.method == GET ||
+         request.method == HEAD do
+        if url == "" || ([] = ^ list) do
+          index()
+        else
+          if [repo, tree, "host", host] = ^ list do
+            proxy(repo, tree, host)
+          else
+            if [repo, tree] = ^ list do
+              show_tree(repo, tree)
+            else
+              if [repo] = ^ list do
+                show_repo(repo)
+              end
+            end
+          end
+        end
+      end
+    end
+  }
+
+end
diff --git a/home/ci/app/models/rbpkg_package.kc3 b/home/ci/app/models/rbpkg_package.kc3
new file mode 100644
index 0000000..d3f2d22
--- /dev/null
+++ b/home/ci/app/models/rbpkg_package.kc3
@@ -0,0 +1,4 @@
+defmodule Rbpkg.Package do
+
+
+end
diff --git a/home/ci/config/mime.types b/home/ci/config/mime.types
new file mode 100644
index 0000000..c6cc75a
--- /dev/null
+++ b/home/ci/config/mime.types
@@ -0,0 +1,102 @@
+
+types {
+    text/html                                        html htm shtml;
+    text/css                                         css;
+    text/xml                                         xml;
+    image/gif                                        gif;
+    image/jpeg                                       jpeg jpg;
+    application/javascript                           js;
+    application/atom+xml                             atom;
+    application/rss+xml                              rss;
+
+    text/mathml                                      mml;
+    text/plain                                       txt;
+    text/vnd.sun.j2me.app-descriptor                 jad;
+    text/vnd.wap.wml                                 wml;
+    text/x-component                                 htc;
+
+    image/avif                                       avif;
+    image/png                                        png;
+    image/svg+xml                                    svg svgz;
+    image/tiff                                       tif tiff;
+    image/vnd.wap.wbmp                               wbmp;
+    image/webp                                       webp;
+    image/x-icon                                     ico;
+    image/x-jng                                      jng;
+    image/x-ms-bmp                                   bmp;
+
+    font/woff                                        woff;
+    font/woff2                                       woff2;
+
+    application/java-archive                         jar war ear;
+    application/json                                 json;
+    application/mac-binhex40                         hqx;
+    application/msword                               doc;
+    application/pdf                                  pdf;
+    application/postscript                           ps eps ai;
+    application/rtf                                  rtf;
+    application/vnd.apple.mpegurl                    m3u8;
+    application/vnd.google-earth.kml+xml             kml;
+    application/vnd.google-earth.kmz                 kmz;
+    application/vnd.ms-excel                         xls;
+    application/vnd.ms-fontobject                    eot;
+    application/vnd.ms-powerpoint                    ppt;
+    application/vnd.oasis.opendocument.graphics      odg;
+    application/vnd.oasis.opendocument.presentation  odp;
+    application/vnd.oasis.opendocument.spreadsheet   ods;
+    application/vnd.oasis.opendocument.text          odt;
+    application/vnd.openxmlformats-officedocument.presentationml.presentation
+                                                     pptx;
+    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
+                                                     xlsx;
+    application/vnd.openxmlformats-officedocument.wordprocessingml.document
+                                                     docx;
+    application/vnd.wap.wmlc                         wmlc;
+    application/wasm                                 wasm;
+    application/x-7z-compressed                      7z;
+    application/x-cocoa                              cco;
+    application/x-java-archive-diff                  jardiff;
+    application/x-java-jnlp-file                     jnlp;
+    application/x-makeself                           run;
+    application/x-ns-proxy-autoconfig                pac;
+    application/x-perl                               pl pm;
+    application/x-pilot                              prc pdb;
+    application/x-rar-compressed                     rar;
+    application/x-redhat-package-manager             rpm;
+    application/x-sea                                sea;
+    application/x-shockwave-flash                    swf;
+    application/x-stuffit                            sit;
+    application/x-tcl                                tcl tk;
+    application/x-x509-ca-cert                       der pem crt;
+    application/x-xpinstall                          xpi;
+    application/xhtml+xml                            xhtml;
+    application/xspf+xml                             xspf;
+    application/zip                                  zip;
+
+    application/octet-stream                         bin exe dll;
+    application/octet-stream                         deb;
+    application/octet-stream                         dmg;
+    application/octet-stream                         iso img;
+    application/octet-stream                         msi msp msm;
+
+    audio/basic                                      au snd;
+    audio/midi                                       mid midi kar;
+    audio/mpeg                                       mp3;
+    audio/ogg                                        ogg;
+    audio/x-m4a                                      m4a;
+    audio/x-realaudio                                ra;
+
+    video/3gpp                                       3gpp 3gp;
+    video/mp2t                                       ts;
+    video/mp4                                        mp4;
+    video/mpeg                                       mpeg mpg;
+    video/quicktime                                  mov;
+    video/webm                                       webm;
+    video/x-flv                                      flv;
+    video/x-m4v                                      m4v;
+    video/x-matroska                                 mkv;
+    video/x-mng                                      mng;
+    video/x-ms-asf                                   asx asf;
+    video/x-ms-wmv                                   wmv;
+    video/x-msvideo                                  avi;
+}
diff --git a/home/ci/config/routes.kc3 b/home/ci/config/routes.kc3
new file mode 100644
index 0000000..4b7c42e
--- /dev/null
+++ b/home/ci/config/routes.kc3
@@ -0,0 +1,19 @@
+def HTTPd.routes = []
+
+def_route("/rbpkg/", RbpkgController.route)
+
+#def_route("/sitemap.xml", SitemapController.route)
+
+HTTPd.Route.def_static_route("", "./static/", 0)
+
+defmodule Route do
+
+  def rbpkg = fn {
+    () { "/rbpkg" }
+    (repo) { "/rbpkg/#{URL.escape(repo)}" }
+    (repo, tree) { "/rbpkg/#{URL.escape(repo)}/#{URL.escape(tree)}" }
+    (repo, tree, host) { "/rbpkg/#{URL.escape(repo)}/#{URL.escape(tree)}/host/#{URL.escape(host)}" }
+    (repo, tree, host, query) { "/rbpkg/#{URL.escape(repo)}/#{URL.escape(tree)}/host/#{URL.escape(host)}/#{URL.escape(query)}" }
+  }
+
+end