forked from malobeo/infrastructure
Compare commits
11 Commits
hydra_inte
...
1937fcf50b
| Author | SHA1 | Date | |
|---|---|---|---|
|
1937fcf50b
|
|||
| 84844323b2 | |||
|
bd016c481c
|
|||
|
eacf71655e
|
|||
|
4e8d5e7938
|
|||
|
b1cc1f6588
|
|||
| b6cd2b57f8 | |||
|
c80628a1a9
|
|||
|
8cd2eafaa5
|
|||
|
ed19426eb7
|
|||
| 7ff64a5c16 |
75
.hydra/declarative-jobsets.nix
Normal file
75
.hydra/declarative-jobsets.nix
Normal file
@@ -0,0 +1,75 @@
|
||||
{ nixpkgs, pulls, ... }:
|
||||
|
||||
let
|
||||
pkgs = import nixpkgs { };
|
||||
|
||||
prs = builtins.fromJSON (builtins.readFile pulls);
|
||||
prJobsets = pkgs.lib.mapAttrs (num: info: {
|
||||
enabled = 1;
|
||||
hidden = false;
|
||||
description = "PR ${num}: ${info.title}";
|
||||
checkinterval = 300;
|
||||
schedulingshares = 20;
|
||||
enableemail = false;
|
||||
emailoverride = "";
|
||||
keepnr = 1;
|
||||
type = 1;
|
||||
flake = "${info.head.repo.html_url}/archive/${info.head.ref}.tar.gz";
|
||||
inputs = {
|
||||
gitea_repo_name = {
|
||||
type = "string";
|
||||
value = "${info.head.repo.name}";
|
||||
emailresponsible = false;
|
||||
};
|
||||
gitea_repo_owner = {
|
||||
type = "string";
|
||||
value = "${info.head.repo.owner.username}";
|
||||
emailresponsible = false;
|
||||
};
|
||||
gitea_http_url = {
|
||||
type = "string";
|
||||
value = "https://git.dynamicdiscord.de";
|
||||
emailresponsible = false;
|
||||
};
|
||||
gitea_status_repo = {
|
||||
type = "string";
|
||||
value = "${info.head.ref}";
|
||||
emailresponsible = false;
|
||||
};
|
||||
};
|
||||
}) prs;
|
||||
mkFlakeJobset = branch: {
|
||||
description = "Build ${branch} branch of the Malobeo Infrastructure repo";
|
||||
checkinterval = 300;
|
||||
enabled = "1";
|
||||
schedulingshares = 100;
|
||||
enableemail = false;
|
||||
emailoverride = "";
|
||||
keepnr = 3;
|
||||
hidden = false;
|
||||
type = 1;
|
||||
flake = "https://git.dynamicdiscord.de/malobeo/infrastructure/archive/${branch}.tar.gz";
|
||||
};
|
||||
|
||||
desc = prJobsets // {
|
||||
"master" = mkFlakeJobset "master";
|
||||
};
|
||||
|
||||
log = {
|
||||
pulls = prs;
|
||||
jobsets = desc;
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
jobsets = pkgs.runCommand "spec-jobsets.json" { } ''
|
||||
cat >$out <<'EOF'
|
||||
${builtins.toJSON desc}
|
||||
EOF
|
||||
# This is to get nice .jobsets build logs on Hydra
|
||||
cat >tmp <<'EOF'
|
||||
${builtins.toJSON log}
|
||||
EOF
|
||||
${pkgs.jq}/bin/jq . tmp
|
||||
'';
|
||||
}
|
||||
30
.hydra/spec.json
Normal file
30
.hydra/spec.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"enabled": 1,
|
||||
"hidden": false,
|
||||
"description": "Malobeo infrastructure repo",
|
||||
"nixexprinput": "nixexpr",
|
||||
"nixexprpath": ".hydra/declarative-jobsets.nix",
|
||||
"checkinterval": 60,
|
||||
"schedulingshares": 100,
|
||||
"enableemail": false,
|
||||
"emailoverride": "",
|
||||
"keepnr": 5,
|
||||
"type": 0,
|
||||
"inputs": {
|
||||
"nixexpr": {
|
||||
"value": "https://git.dynamicdiscord.de/ahtlon/infrastructure master",
|
||||
"type": "git",
|
||||
"emailresponsible": false
|
||||
},
|
||||
"nixpkgs": {
|
||||
"value": "https://github.com/NixOS/nixpkgs nixos-25.11",
|
||||
"type": "git",
|
||||
"emailresponsible": false
|
||||
},
|
||||
"pulls": {
|
||||
"type": "path",
|
||||
"value": "http://127.0.0.1:27364/gitea-pulls-sorted.json",
|
||||
"emailresponsible": false
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@
|
||||
- [musik](./projekte/musik.md)
|
||||
- [TODO](./todo.md)
|
||||
- [Modules]()
|
||||
- [Gitea-translator](./module/gitea-translator.md)
|
||||
- [Initrd-ssh](./module/initssh.md)
|
||||
- [Disks](./module/disks.md)
|
||||
- [How-to]()
|
||||
|
||||
21
doc/src/module/gitea-translator.md
Normal file
21
doc/src/module/gitea-translator.md
Normal file
@@ -0,0 +1,21 @@
|
||||
# Gitea-tanslator
|
||||
The module can be used by importing `inputs.self.nixosModules.malobeo.gitea-translator`
|
||||
|
||||
This module starts a python server that fetches the gitea pull request api and translates it to a file that hydra understands.
|
||||
To use, just set the parameters of the gitea server, then send a GET request to either `http://${host}:${port}/` or `http://${host}:${port}/gitea-pulls-sorted.json`
|
||||
|
||||
## Module config
|
||||
##### enable (default = false) - enables the module
|
||||
##### baseurl (default = "git.dynamicdiscord.de") - Base URL of the Gitea instance
|
||||
##### owner (default = "malobeo") - Repository owner
|
||||
##### repo (default = "infrastructure") - Repository name
|
||||
##### host (default = "127.0.0.1") - Address the server binds to
|
||||
##### port (default = 27364) - Port the server listens on
|
||||
|
||||
## Hydra config
|
||||
If you change the default port or host, the file `.hydra/spec.json` has to be modified accordingly.
|
||||
With the module running on the hydra host, create a new hydra project, then:
|
||||
|
||||
- Set `Declarative spec file` to `.hydra/spec.json`
|
||||
- Change declaritive input type to `Git checkout`
|
||||
- Set your git repo location in the field below that
|
||||
350
dont merge this/gitea2.json
Normal file
350
dont merge this/gitea2.json
Normal file
@@ -0,0 +1,350 @@
|
||||
{
|
||||
"allow_maintainer_edit": false,
|
||||
"assignee": null,
|
||||
"assignees": null,
|
||||
"base": {
|
||||
"label": "master",
|
||||
"ref": "master",
|
||||
"repo": {
|
||||
"allow_fast_forward_only_merge": false,
|
||||
"allow_manual_merge": false,
|
||||
"allow_merge_commits": true,
|
||||
"allow_rebase": true,
|
||||
"allow_rebase_explicit": true,
|
||||
"allow_rebase_update": true,
|
||||
"allow_squash_merge": true,
|
||||
"archived": false,
|
||||
"archived_at": "1970-01-01T01:00:00+01:00",
|
||||
"autodetect_manual_merge": false,
|
||||
"avatar_url": "",
|
||||
"clone_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
|
||||
"created_at": "2024-10-24T19:38:14+02:00",
|
||||
"default_allow_maintainer_edit": false,
|
||||
"default_branch": "master",
|
||||
"default_delete_branch_after_merge": false,
|
||||
"default_merge_style": "merge",
|
||||
"description": "",
|
||||
"empty": false,
|
||||
"fork": true,
|
||||
"forks_count": 0,
|
||||
"full_name": "ahtlon/infrastructure",
|
||||
"has_actions": true,
|
||||
"has_code": true,
|
||||
"has_issues": false,
|
||||
"has_packages": false,
|
||||
"has_projects": false,
|
||||
"has_pull_requests": true,
|
||||
"has_releases": false,
|
||||
"has_wiki": false,
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure",
|
||||
"id": 29,
|
||||
"ignore_whitespace_conflicts": false,
|
||||
"internal": false,
|
||||
"language": "",
|
||||
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure/languages",
|
||||
"licenses": [],
|
||||
"link": "",
|
||||
"mirror": false,
|
||||
"mirror_interval": "",
|
||||
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||
"name": "infrastructure",
|
||||
"object_format_name": "sha1",
|
||||
"open_issues_count": 0,
|
||||
"open_pr_counter": 5,
|
||||
"original_url": "",
|
||||
"owner": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
|
||||
"created": "2024-10-23T17:19:18+02:00",
|
||||
"description": "",
|
||||
"email": "ahtlon@noreply.git.dynamicdiscord.de",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon",
|
||||
"id": 8,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "ahtlon",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "ahtlon",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
},
|
||||
"parent": {
|
||||
"allow_fast_forward_only_merge": false,
|
||||
"allow_manual_merge": false,
|
||||
"allow_merge_commits": true,
|
||||
"allow_rebase": true,
|
||||
"allow_rebase_explicit": true,
|
||||
"allow_rebase_update": true,
|
||||
"allow_squash_merge": true,
|
||||
"archived": false,
|
||||
"archived_at": "1970-01-01T01:00:00+01:00",
|
||||
"autodetect_manual_merge": false,
|
||||
"avatar_url": "",
|
||||
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
|
||||
"created_at": "2022-10-04T18:35:43+02:00",
|
||||
"default_allow_maintainer_edit": false,
|
||||
"default_branch": "master",
|
||||
"default_delete_branch_after_merge": false,
|
||||
"default_merge_style": "merge",
|
||||
"description": "",
|
||||
"empty": false,
|
||||
"fork": false,
|
||||
"forks_count": 1,
|
||||
"full_name": "malobeo/infrastructure",
|
||||
"has_actions": true,
|
||||
"has_code": true,
|
||||
"has_issues": true,
|
||||
"has_packages": false,
|
||||
"has_projects": true,
|
||||
"has_pull_requests": true,
|
||||
"has_releases": true,
|
||||
"has_wiki": true,
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
|
||||
"id": 15,
|
||||
"ignore_whitespace_conflicts": false,
|
||||
"internal": false,
|
||||
"internal_tracker": {
|
||||
"allow_only_contributors_to_track_time": true,
|
||||
"enable_issue_dependencies": true,
|
||||
"enable_time_tracker": true
|
||||
},
|
||||
"language": "",
|
||||
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
|
||||
"licenses": [],
|
||||
"link": "",
|
||||
"mirror": false,
|
||||
"mirror_interval": "",
|
||||
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||
"name": "infrastructure",
|
||||
"object_format_name": "sha1",
|
||||
"open_issues_count": 40,
|
||||
"open_pr_counter": 4,
|
||||
"original_url": "",
|
||||
"owner": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
|
||||
"created": "2023-03-29T17:26:16+02:00",
|
||||
"description": "",
|
||||
"email": "",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo",
|
||||
"id": 7,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "malobeo",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "malobeo",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
},
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"pull": true,
|
||||
"push": false
|
||||
},
|
||||
"private": false,
|
||||
"projects_mode": "",
|
||||
"release_counter": 0,
|
||||
"size": 2878,
|
||||
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
|
||||
"stars_count": 1,
|
||||
"template": false,
|
||||
"topics": [],
|
||||
"updated_at": "2026-03-12T01:11:13+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
|
||||
"watchers_count": 2,
|
||||
"website": ""
|
||||
},
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"pull": true,
|
||||
"push": false
|
||||
},
|
||||
"private": false,
|
||||
"projects_mode": "all",
|
||||
"release_counter": 0,
|
||||
"size": 14507,
|
||||
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/ahtlon/infrastructure.git",
|
||||
"stars_count": 0,
|
||||
"template": false,
|
||||
"topics": [],
|
||||
"updated_at": "2026-03-12T01:05:43+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure",
|
||||
"watchers_count": 1,
|
||||
"website": ""
|
||||
},
|
||||
"repo_id": 29,
|
||||
"sha": "dacdb2214ea6ff645c444ce0eaab68c317f0a616"
|
||||
},
|
||||
"body": "",
|
||||
"closed_at": null,
|
||||
"comments": 0,
|
||||
"created_at": "2026-03-11T17:29:55+01:00",
|
||||
"diff_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.diff",
|
||||
"draft": false,
|
||||
"due_date": null,
|
||||
"head": {
|
||||
"label": "nixpkgs_bump_20260305",
|
||||
"ref": "nixpkgs_bump_20260305",
|
||||
"repo": {
|
||||
"allow_fast_forward_only_merge": false,
|
||||
"allow_manual_merge": false,
|
||||
"allow_merge_commits": true,
|
||||
"allow_rebase": true,
|
||||
"allow_rebase_explicit": true,
|
||||
"allow_rebase_update": true,
|
||||
"allow_squash_merge": true,
|
||||
"archived": false,
|
||||
"archived_at": "1970-01-01T01:00:00+01:00",
|
||||
"autodetect_manual_merge": false,
|
||||
"avatar_url": "",
|
||||
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
|
||||
"created_at": "2022-10-04T18:35:43+02:00",
|
||||
"default_allow_maintainer_edit": false,
|
||||
"default_branch": "master",
|
||||
"default_delete_branch_after_merge": false,
|
||||
"default_merge_style": "merge",
|
||||
"description": "",
|
||||
"empty": false,
|
||||
"fork": false,
|
||||
"forks_count": 1,
|
||||
"full_name": "malobeo/infrastructure",
|
||||
"has_actions": true,
|
||||
"has_code": true,
|
||||
"has_issues": true,
|
||||
"has_packages": false,
|
||||
"has_projects": true,
|
||||
"has_pull_requests": true,
|
||||
"has_releases": true,
|
||||
"has_wiki": true,
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
|
||||
"id": 15,
|
||||
"ignore_whitespace_conflicts": false,
|
||||
"internal": false,
|
||||
"internal_tracker": {
|
||||
"allow_only_contributors_to_track_time": true,
|
||||
"enable_issue_dependencies": true,
|
||||
"enable_time_tracker": true
|
||||
},
|
||||
"language": "",
|
||||
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
|
||||
"licenses": [],
|
||||
"link": "",
|
||||
"mirror": false,
|
||||
"mirror_interval": "",
|
||||
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||
"name": "infrastructure",
|
||||
"object_format_name": "sha1",
|
||||
"open_issues_count": 40,
|
||||
"open_pr_counter": 4,
|
||||
"original_url": "",
|
||||
"owner": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
|
||||
"created": "2023-03-29T17:26:16+02:00",
|
||||
"description": "",
|
||||
"email": "",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo",
|
||||
"id": 7,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "malobeo",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "malobeo",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
},
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"pull": true,
|
||||
"push": false
|
||||
},
|
||||
"private": false,
|
||||
"projects_mode": "",
|
||||
"release_counter": 0,
|
||||
"size": 2878,
|
||||
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
|
||||
"stars_count": 1,
|
||||
"template": false,
|
||||
"topics": [],
|
||||
"updated_at": "2026-03-12T01:11:13+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
|
||||
"watchers_count": 2,
|
||||
"website": ""
|
||||
},
|
||||
"repo_id": 15,
|
||||
"sha": "7c66a24563d0e95c292aafeaa08056effc6152d9"
|
||||
},
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
|
||||
"id": 66,
|
||||
"is_locked": false,
|
||||
"labels": [],
|
||||
"merge_base": "344eeb437b0aa29baee1227e48878f987e21e296",
|
||||
"merge_commit_sha": null,
|
||||
"mergeable": true,
|
||||
"merged": false,
|
||||
"merged_at": null,
|
||||
"merged_by": null,
|
||||
"milestone": null,
|
||||
"number": 8,
|
||||
"patch_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.patch",
|
||||
"pin_order": 0,
|
||||
"requested_reviewers": null,
|
||||
"requested_reviewers_teams": null,
|
||||
"state": "open",
|
||||
"target_repo_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
|
||||
"title": "Update flake.lock",
|
||||
"updated_at": "2026-03-11T17:29:55+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
|
||||
"user": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
|
||||
"created": "2024-10-23T17:19:18+02:00",
|
||||
"description": "",
|
||||
"email": "ahtlon@noreply.git.dynamicdiscord.de",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon",
|
||||
"id": 8,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "ahtlon",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "ahtlon",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
}
|
||||
}
|
||||
1668
dont merge this/gitea_out.json
Normal file
1668
dont merge this/gitea_out.json
Normal file
File diff suppressed because it is too large
Load Diff
1888
dont merge this/gitlab-pulls-sorted.json
Normal file
1888
dont merge this/gitlab-pulls-sorted.json
Normal file
File diff suppressed because it is too large
Load Diff
1864
dont merge this/pretty_gl_api_out.json
Normal file
1864
dont merge this/pretty_gl_api_out.json
Normal file
File diff suppressed because it is too large
Load Diff
1
dont merge this/raw_gl_api_out.txt
Normal file
1
dont merge this/raw_gl_api_out.txt
Normal file
File diff suppressed because one or more lines are too long
38
flake.lock
generated
38
flake.lock
generated
@@ -126,11 +126,11 @@
|
||||
"spectrum": "spectrum"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772055583,
|
||||
"narHash": "sha256-iPIm1orqkhsxqju6EVODOrV1BmyA5HNTZ8a1o812bFM=",
|
||||
"lastModified": 1773018425,
|
||||
"narHash": "sha256-fpgZBmZpKoEXEowBK/6m8g9FcOLWQ4UxhXHqCw2CpSM=",
|
||||
"owner": "astro",
|
||||
"repo": "microvm.nix",
|
||||
"rev": "f6dcfb7c16cc3775536c825dc0698d4ede13d063",
|
||||
"rev": "25ebda3c558e923720c965832dc9a04f559a055c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -177,11 +177,11 @@
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1771969195,
|
||||
"narHash": "sha256-qwcDBtrRvJbrrnv1lf/pREQi8t2hWZxVAyeMo7/E9sw=",
|
||||
"lastModified": 1772972630,
|
||||
"narHash": "sha256-mUJxsNOrBMNOUJzN0pfdVJ1r2pxeqm9gI/yIKXzVVbk=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "41c6b421bdc301b2624486e11905c9af7b8ec68e",
|
||||
"rev": "3966ce987e1a9a164205ac8259a5fe8a64528f72",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -209,11 +209,11 @@
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1771848320,
|
||||
"narHash": "sha256-0MAd+0mun3K/Ns8JATeHT1sX28faLII5hVLq0L3BdZU=",
|
||||
"lastModified": 1773282481,
|
||||
"narHash": "sha256-b/GV2ysM8mKHhinse2wz+uP37epUrSE+sAKXy/xvBY4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2fc6539b481e1d2569f25f8799236694180c0993",
|
||||
"rev": "fe416aaedd397cacb33a610b33d60ff2b431b127",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -225,11 +225,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1771903837,
|
||||
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=",
|
||||
"lastModified": 1773375660,
|
||||
"narHash": "sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951",
|
||||
"rev": "3e20095fe3c6cbb1ddcef89b26969a69a1570776",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -264,11 +264,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772048434,
|
||||
"narHash": "sha256-/wA0OaH6kZ/pFA+nXR/tvg5oupOmEDmMS5us79JT60o=",
|
||||
"lastModified": 1773096132,
|
||||
"narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "334daa7c273dd8bf7a0cd370e4e16022b64e55e9",
|
||||
"rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -280,11 +280,11 @@
|
||||
"spectrum": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1759482047,
|
||||
"narHash": "sha256-H1wiXRQHxxPyMMlP39ce3ROKCwI5/tUn36P8x6dFiiQ=",
|
||||
"lastModified": 1772189877,
|
||||
"narHash": "sha256-i1p90Rgssb//aNiTDFq46ZG/fk3LmyRLChtp/9lddyA=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "c5d5786d3dc938af0b279c542d1e43bce381b4b9",
|
||||
"revCount": 996,
|
||||
"rev": "fe39e122d898f66e89ffa17d4f4209989ccb5358",
|
||||
"revCount": 1255,
|
||||
"type": "git",
|
||||
"url": "https://spectrum-os.org/git/spectrum"
|
||||
},
|
||||
|
||||
350
gitea2.json
Normal file
350
gitea2.json
Normal file
@@ -0,0 +1,350 @@
|
||||
AAAAAA{
|
||||
"allow_maintainer_edit": false,
|
||||
"assignee": null,
|
||||
"assignees": null,
|
||||
"base": {
|
||||
"label": "master",
|
||||
"ref": "master",dd
|
||||
"repo": {
|
||||
"allow_fast_ddasdad_only_merge": false,
|
||||
"allow_manual_merge": false,
|
||||
"allow_merge_commits": true,
|
||||
"allow_rebase": true,
|
||||
"allow_rebase_explicit": true,
|
||||
"allow_rebase_update": true,
|
||||
"allow_squash_merge": true,
|
||||
"archived": false,
|
||||
"archived_at": "1970-01-01T01:00:00+01:00",
|
||||
"autodetect_manual_merge": false,
|
||||
"avatar_url": "",
|
||||
"clone_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
|
||||
"created_at": "2024-10-24T19:38:14+02:00",
|
||||
"default_allow_maintainer_edit": false,
|
||||
"default_branch": "master",
|
||||
"default_delete_branch_after_merge": false,
|
||||
"default_merge_style": "merge",
|
||||
"description": "",
|
||||
"empty": false,
|
||||
"fork": true,
|
||||
"forks_count": 0,
|
||||
"full_name": "ahtlon/infrastructure",
|
||||
"has_actions": true,
|
||||
"has_code": true,
|
||||
"has_issues": false,
|
||||
"has_packages": false,
|
||||
"has_projects": false,
|
||||
"has_pull_requests": true,
|
||||
"has_releases": false,
|
||||
"has_wiki": false,
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure",
|
||||
"id": 29,
|
||||
"ignore_whitespace_conflicts": false,
|
||||
"internal": false,
|
||||
"language": "",
|
||||
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure/languages",
|
||||
"licenses": [],
|
||||
"link": "",
|
||||
"mirror": false,
|
||||
"mirror_interval": "",
|
||||
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||
"name": "infrastructure",
|
||||
"object_format_name": "sha1",
|
||||
"open_issues_count": 0,
|
||||
"open_pr_counter": 6,
|
||||
"original_url": "",
|
||||
"owner": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
|
||||
"created": "2024-10-23T17:19:18+02:00",
|
||||
"description": "",
|
||||
"email": "ahtlon@noreply.git.dynamicdiscord.de",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon",
|
||||
"id": 8,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "ahtlon",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "ahtlon",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
},
|
||||
"parent": {
|
||||
"allow_fast_forward_only_merge": false,
|
||||
"allow_manual_merge": false,
|
||||
"allow_merge_commits": true,
|
||||
"allow_rebase": true,
|
||||
"allow_rebase_explicit": true,
|
||||
"allow_rebase_update": true,
|
||||
"allow_squash_merge": true,
|
||||
"archived": false,
|
||||
"archived_at": "1970-01-01T01:00:00+01:00",
|
||||
"autodetect_manual_merge": false,
|
||||
"avatar_url": "",
|
||||
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
|
||||
"created_at": "2022-10-04T18:35:43+02:00",
|
||||
"default_allow_maintainer_edit": false,
|
||||
"default_branch": "master",
|
||||
"default_delete_branch_after_merge": false,
|
||||
"default_merge_style": "merge",
|
||||
"description": "",
|
||||
"empty": false,
|
||||
"fork": false,
|
||||
"forks_count": 1,
|
||||
"full_name": "malobeo/infrastructure",
|
||||
"has_actions": true,
|
||||
"has_code": true,
|
||||
"has_issues": true,
|
||||
"has_packages": false,
|
||||
"has_projects": true,
|
||||
"has_pull_requests": true,
|
||||
"has_releases": true,
|
||||
"has_wiki": true,
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
|
||||
"id": 15,
|
||||
"ignore_whitespace_conflicts": false,
|
||||
"internal": false,
|
||||
"internal_tracker": {
|
||||
"allow_only_contributors_to_track_time": true,
|
||||
"enable_issue_dependencies": true,
|
||||
"enable_time_tracker": true
|
||||
},
|
||||
"language": "",
|
||||
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
|
||||
"licenses": [],
|
||||
"link": "",
|
||||
"mirror": false,
|
||||
"mirror_interval": "",
|
||||
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||
"name": "infrastructure",
|
||||
"object_format_name": "sha1",
|
||||
"open_issues_count": 40,
|
||||
"open_pr_counter": 4,
|
||||
"original_url": "",
|
||||
"owner": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
|
||||
"created": "2023-03-29T17:26:16+02:00",
|
||||
"description": "",
|
||||
"email": "",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo",
|
||||
"id": 7,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "malobeo",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "malobeo",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
},
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"pull": true,
|
||||
"push": false
|
||||
},
|
||||
"private": false,
|
||||
"projects_mode": "",
|
||||
"release_counter": 0,
|
||||
"size": 2878,
|
||||
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
|
||||
"stars_count": 1,
|
||||
"template": false,
|
||||
"topics": [],
|
||||
"updated_at": "2026-03-12T01:11:13+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
|
||||
"watchers_count": 2,
|
||||
"website": ""
|
||||
},
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"pull": true,
|
||||
"push": false
|
||||
},
|
||||
"private": false,
|
||||
"projects_mode": "all",
|
||||
"release_counter": 0,
|
||||
"size": 14584,
|
||||
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/ahtlon/infrastructure.git",
|
||||
"stars_count": 0,
|
||||
"template": false,
|
||||
"topics": [],
|
||||
"updated_at": "2026-03-13T16:33:51+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/api/v1/repos/ahtlon/infrastructure",
|
||||
"watchers_count": 1,
|
||||
"website": ""
|
||||
},
|
||||
"repo_id": 29,
|
||||
"sha": "e73516fbe79022d12608e9616b75b3a388bd0e5f"
|
||||
},
|
||||
"body": "",
|
||||
"closed_at": null,
|
||||
"comments": 0,
|
||||
"created_at": "2026-03-11T17:29:55+01:00",
|
||||
"diff_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.diff",
|
||||
"draft": false,
|
||||
"due_date": null,
|
||||
"head": {
|
||||
"label": "nixpkgs_bump_20260305",
|
||||
"ref": "nixpkgs_bump_20260305",
|
||||
"repo": {
|
||||
"allow_fast_forward_only_merge": false,
|
||||
"allow_manual_merge": false,
|
||||
"allow_merge_commits": true,
|
||||
"allow_rebase": true,
|
||||
"allow_rebase_explicit": true,
|
||||
"allow_rebase_update": true,
|
||||
"allow_squash_merge": true,
|
||||
"archived": false,
|
||||
"archived_at": "1970-01-01T01:00:00+01:00",
|
||||
"autodetect_manual_merge": false,
|
||||
"avatar_url": "",
|
||||
"clone_url": "https://git.dynamicdiscord.de/malobeo/infrastructure.git",
|
||||
"created_at": "2022-10-04T18:35:43+02:00",
|
||||
"default_allow_maintainer_edit": false,
|
||||
"default_branch": "master",
|
||||
"default_delete_branch_after_merge": false,
|
||||
"default_merge_style": "merge",
|
||||
"description": "",
|
||||
"empty": false,
|
||||
"fork": false,
|
||||
"forks_count": 1,
|
||||
"full_name": "malobeo/infrastructure",
|
||||
"has_actions": true,
|
||||
"has_code": true,
|
||||
"has_issues": true,
|
||||
"has_packages": false,
|
||||
"has_projects": true,
|
||||
"has_pull_requests": true,
|
||||
"has_releases": true,
|
||||
"has_wiki": true,
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo/infrastructure",
|
||||
"id": 15,
|
||||
"ignore_whitespace_conflicts": false,
|
||||
"internal": false,
|
||||
"internal_tracker": {
|
||||
"allow_only_contributors_to_track_time": true,
|
||||
"enable_issue_dependencies": true,
|
||||
"enable_time_tracker": true
|
||||
},
|
||||
"language": "",
|
||||
"languages_url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure/languages",
|
||||
"licenses": [],
|
||||
"link": "",
|
||||
"mirror": false,
|
||||
"mirror_interval": "",
|
||||
"mirror_updated": "0001-01-01T00:00:00Z",
|
||||
"name": "infrastructure",
|
||||
"object_format_name": "sha1",
|
||||
"open_issues_count": 40,
|
||||
"open_pr_counter": 4,
|
||||
"original_url": "",
|
||||
"owner": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/9ea8af20ca015cb078b2971cd4e91e6d",
|
||||
"created": "2023-03-29T17:26:16+02:00",
|
||||
"description": "",
|
||||
"email": "",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/malobeo",
|
||||
"id": 7,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "malobeo",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "malobeo",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
},
|
||||
"permissions": {
|
||||
"admin": false,
|
||||
"pull": true,
|
||||
"push": false
|
||||
},
|
||||
"private": false,
|
||||
"projects_mode": "",
|
||||
"release_counter": 0,
|
||||
"size": 2878,
|
||||
"ssh_url": "ssh://gitea@git.dynamicdiscord.de:23428/malobeo/infrastructure.git",
|
||||
"stars_count": 1,
|
||||
"template": false,
|
||||
"topics": [],
|
||||
"updated_at": "2026-03-12T01:11:13+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/api/v1/repos/malobeo/infrastructure",
|
||||
"watchers_count": 2,
|
||||
"website": ""
|
||||
},
|
||||
"repo_id": 15,
|
||||
"sha": "7c66a24563d0e95c292aafeaa08056effc6152d9"
|
||||
},
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
|
||||
"id": 66,
|
||||
"is_locked": false,
|
||||
"labels": [],
|
||||
"merge_base": "344eeb437b0aa29baee1227e48878f987e21e296",
|
||||
"merge_commit_sha": null,
|
||||
"mergeable": true,
|
||||
"merged": false,
|
||||
"merged_at": null,
|
||||
"merged_by": null,
|
||||
"milestone": null,
|
||||
"number": 8,
|
||||
"patch_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8.patch",
|
||||
"pin_order": 0,
|
||||
"requested_reviewers": null,
|
||||
"requested_reviewers_teams": null,
|
||||
"state": "open",
|
||||
"target_repo_url": "https://git.dynamicdiscord.de/ahtlon/infrastructure.git",
|
||||
"title": "Update flake.lock",
|
||||
"updated_at": "2026-03-11T17:29:55+01:00",
|
||||
"url": "https://git.dynamicdiscord.de/ahtlon/infrastructure/pulls/8",
|
||||
"user": {
|
||||
"active": false,
|
||||
"avatar_url": "https://git.dynamicdiscord.de/avatars/7399d018a0bcee0f2da113bdeeafec029316d8e8ce774b829de4125b026c0599",
|
||||
"created": "2024-10-23T17:19:18+02:00",
|
||||
"description": "",
|
||||
"email": "ahtlon@noreply.git.dynamicdiscord.de",
|
||||
"followers_count": 0,
|
||||
"following_count": 0,
|
||||
"full_name": "",
|
||||
"html_url": "https://git.dynamicdiscord.de/ahtlon",
|
||||
"id": 8,
|
||||
"is_admin": false,
|
||||
"language": "",
|
||||
"last_login": "0001-01-01T00:00:00Z",
|
||||
"location": "",
|
||||
"login": "ahtlon",
|
||||
"login_name": "",
|
||||
"prohibit_login": false,
|
||||
"restricted": false,
|
||||
"source_id": 0,
|
||||
"starred_repos_count": 0,
|
||||
"username": "ahtlon",
|
||||
"visibility": "public",
|
||||
"website": ""
|
||||
}
|
||||
}
|
||||
78
machines/modules/malobeo/gitea_translator.nix
Normal file
78
machines/modules/malobeo/gitea_translator.nix
Normal file
@@ -0,0 +1,78 @@
|
||||
{ config, self, lib, inputs, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.malobeo.gitea-translator;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.malobeo.gitea-translator = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = lib.mdDoc "Start a webserver for hydra to use the gitea pull request api.";
|
||||
};
|
||||
|
||||
baseurl = mkOption {
|
||||
type = types.str;
|
||||
default = "git.dynamicdiscord.de";
|
||||
description = lib.mdDoc "Base URL of the Gitea instance.";
|
||||
};
|
||||
|
||||
owner = mkOption {
|
||||
type = types.str;
|
||||
default = "malobeo";
|
||||
description = lib.mdDoc "Repository owner on the Gitea instance.";
|
||||
};
|
||||
|
||||
repo = mkOption {
|
||||
type = types.str;
|
||||
default = "infrastructure";
|
||||
description = lib.mdDoc "Repository name on the Gitea instance.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = lib.mdDoc "Address the server binds to.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 27364;
|
||||
description = lib.mdDoc "Port the server listens on.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.gitea-translator = {
|
||||
description = "Gitea Pull Request Translator for Hydra";
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.python3}/bin/python3 ${inputs.self + /scripts/gitea_hydra_server.py} \
|
||||
--baseurl ${cfg.baseurl} \
|
||||
--owner ${cfg.owner} \
|
||||
--repo ${cfg.repo} \
|
||||
--host ${cfg.host} \
|
||||
--port ${toString cfg.port}
|
||||
'';
|
||||
Restart = "on-failure";
|
||||
RestartSec = 5;
|
||||
|
||||
# Hardening because why not
|
||||
DynamicUser = true;
|
||||
NoNewPrivileges = true;
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
"hetzner" = {
|
||||
role = "client";
|
||||
address = "10.100.0.6";
|
||||
address = "10.100.0.7";
|
||||
allowedIPs = [ "10.100.0.6/32" ];
|
||||
publicKey = "csRzgwtnzmSLeLkSwTwEOrdKq55UOxZacR5D3GopCTQ=";
|
||||
};
|
||||
|
||||
107
scripts/gitea_hydra_server.py
Normal file
107
scripts/gitea_hydra_server.py
Normal file
@@ -0,0 +1,107 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
#imports
|
||||
import os
|
||||
import json
|
||||
import argparse
|
||||
from http.server import BaseHTTPRequestHandler, HTTPServer
|
||||
import urllib.request
|
||||
|
||||
def _get_api_response(baseurl, owner, repo):
|
||||
###https://docs.gitea.com/api/1.21/#tag/repository/operation/repoListPullRequests
|
||||
###GET /api/v1/repos/{owner}/{repo}/pulls
|
||||
url=(f"https://{baseurl}/api/v1/repos/{owner}/{repo}/pulls?state=open")
|
||||
headers={"Accept": "application/json"}
|
||||
req=urllib.request.Request(url, headers=headers)
|
||||
with urllib.request.urlopen(req) as resp:
|
||||
return json.loads(resp.read().decode("utf-8"))
|
||||
|
||||
def _parse_response(baseurl, owner, repo):
|
||||
target_repo_url=f"https://{baseurl}/{owner}/{repo}.git"
|
||||
pulls: dict={}
|
||||
response=_get_api_response(baseurl, owner, repo)
|
||||
for pr in response:
|
||||
pr["target_repo_url"]=target_repo_url
|
||||
pulls[str(pr["number"])]=pr
|
||||
return pulls
|
||||
|
||||
class PullsHandler(BaseHTTPRequestHandler):
|
||||
_VALID_PATHS={"/", "/gitea-pulls-sorted.json"}
|
||||
|
||||
# Class variables to store configuration
|
||||
baseurl = None
|
||||
owner = None
|
||||
repo = None
|
||||
|
||||
def do_GET(self):
|
||||
if self.path not in self._VALID_PATHS:
|
||||
self.send_error(404, "Not Found")
|
||||
return
|
||||
|
||||
answer=dict(_parse_response(self.baseurl, self.owner, self.repo))
|
||||
|
||||
body=json.dumps(answer, indent=2, sort_keys=True).encode("utf-8")
|
||||
|
||||
self.send_response(200)
|
||||
self.send_header("Content-Type", "application/json; charset=utf-8")
|
||||
self.send_header("Content-Length", str(len(body)))
|
||||
self.end_headers()
|
||||
self.wfile.write(body)
|
||||
|
||||
def log_message(self, fmt, *args):
|
||||
print(
|
||||
f"[gitea-translator] {self.address_string()} - {fmt % args}",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Hydra Server to Gitea-pull-request translator"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--baseurl",
|
||||
default="git.dynamicdiscord.de",
|
||||
help="Base URL of Gitea instance (default: git.dynamicdiscord.de)"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--owner",
|
||||
default="malobeo",
|
||||
help="Repository owner (default: malobeo)"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--repo",
|
||||
default="infrastructure",
|
||||
help="Repository name (default: infrastructure)"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--host",
|
||||
default="127.0.0.1",
|
||||
help="Host to bind to (default: 127.0.0.1)"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--port",
|
||||
type=int,
|
||||
default=27364,
|
||||
help="Port to bind to (default: 27364)"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Set class variables so they're accessible in request handlers
|
||||
PullsHandler.baseurl = args.baseurl
|
||||
PullsHandler.owner = args.owner
|
||||
PullsHandler.repo = args.repo
|
||||
|
||||
print(
|
||||
f"[gitea-translator] Starting, pulling from {args.baseurl}/{args.owner}/{args.repo}",
|
||||
flush=True,
|
||||
)
|
||||
server=HTTPServer((args.host, args.port), PullsHandler)
|
||||
print(
|
||||
f"[gitea-translator] online @ {args.host}:{args.port}",
|
||||
flush=True,
|
||||
)
|
||||
server.serve_forever()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user