From 4c3b506937c07752c066529db3c60906682467b4 Mon Sep 17 00:00:00 2001
From: Andrea Ciceri <andrea.ciceri@autistici.org>
Date: Fri, 22 Nov 2024 16:44:00 +0100
Subject: [PATCH] Test CI

---
 .forgejo/workflows/build.yaml                 |  5 ++-
 packages/forgejo-report-checks/default.nix    | 39 +++++++++++++++++++
 .../forgejo-report-checks.py                  | 30 ++++++++++++++
 3 files changed, 73 insertions(+), 1 deletion(-)
 create mode 100644 packages/forgejo-report-checks/default.nix
 create mode 100644 packages/forgejo-report-checks/forgejo-report-checks.py

diff --git a/.forgejo/workflows/build.yaml b/.forgejo/workflows/build.yaml
index f75f6df..df040c1 100644
--- a/.forgejo/workflows/build.yaml
+++ b/.forgejo/workflows/build.yaml
@@ -10,4 +10,7 @@ jobs:
       - name: Attic login
         run: attic login sisko http://10.100.0.1:8081 ${{secrets.ATTIC_SISKO_TOKEN}}
       - name: Build with nix
-        run: nix-fast-build --no-nom --skip-cached --systems "x86_64-linux aarch64-linux" --attic-cache "sisko"
+        run: nix-fast-build --no-nom --skip-cached --systems "x86_64-linux aarch64-linux" --attic-cache "sisko" --result-file result.json || true
+      - name: Report checks
+        run: report-checks
+        
diff --git a/packages/forgejo-report-checks/default.nix b/packages/forgejo-report-checks/default.nix
new file mode 100644
index 0000000..038d2ca
--- /dev/null
+++ b/packages/forgejo-report-checks/default.nix
@@ -0,0 +1,39 @@
+{
+  writers,
+  python3Packages,
+  fetchFromGitea,
+  ...
+}:
+let
+  pyforgejo = python3Packages.buildPythonPackage rec {
+    pname = "pyforgejo";
+    version = "1.0.4";
+
+    pyproject = true;
+    build-system = [ python3Packages.poetry-core ];
+
+    src = fetchFromGitea {
+      domain = "codeberg.org";
+      owner = "harabat";
+      repo = "pyforgejo";
+      rev = "3dba949bea41140a47e4dd422a84a6da9fd394e9";
+      hash = "sha256-qVXlfhKrc7yBnRvL/65bLZFW9fDjC+8FNz7yA6iMPp4=";
+    };
+
+    pythonRelaxDeps = [
+      "httpx"
+    ];
+
+    dependencies = with python3Packages; [
+      attrs
+      httpx
+      python-dateutil
+    ];
+
+    pythonImportsCheck = [ "pyforgejo" ];
+  };
+in
+writers.writePython3Bin "report-checks" {
+  libraries = [ pyforgejo ];
+  flakeIgnore = [ "E501" ];
+} (builtins.readFile ./forgejo-report-checks.py)
diff --git a/packages/forgejo-report-checks/forgejo-report-checks.py b/packages/forgejo-report-checks/forgejo-report-checks.py
new file mode 100644
index 0000000..7ea3f2c
--- /dev/null
+++ b/packages/forgejo-report-checks/forgejo-report-checks.py
@@ -0,0 +1,30 @@
+from pyforgejo import AuthenticatedClient
+from pyforgejo.api.repository import repo_create_status
+from pyforgejo.models.create_status_option import CreateStatusOption
+import json
+from os import environ
+
+client = AuthenticatedClient(base_url=environ["GITHUB_API_URL"], token=environ["GITHUB_TOKEN"])
+
+print("hello")
+
+with open('result.json', 'r') as file:
+    data = json.load(file)
+
+for result in data['results']:
+    attr = result['attr']
+    success = result['success']
+    type = result['type']
+    print(attr)
+    response = repo_create_status.sync_detailed(
+        owner="aciceri",
+        repo="nixfleet",
+        sha=environ["GITHUB_SHA"],
+        client=client,
+        body=CreateStatusOption(
+            context=type,
+            description=attr,
+            target_url="https://google.com",
+            state="success" if success else "failure"  # ma be pending,success,failure,error_message
+        )
+    )