/ github-profile / filter.jq
filter.jq
1 [ 2 "Defelo/nixpkgs-review-gha", 3 "nixos", 4 "deploy-sh", 5 "Defelo/sandkasten", 6 "AdventOfCode" 7 ] as $pins | 8 9 [ 10 "Defelo/renovate", 11 "Defelo/Defelo", 12 "Defelo/github-profile", 13 "archive" 14 ] as $hidden | 15 16 { 17 "Defelo/nixpkgs-review-gha": "GitHub Actions", 18 "nginx-oidc": "Rust", 19 "radicle-nix-adapter": "Bash", 20 "kvm.nix": "Nix", 21 "nfnix": "Nix", 22 "aocbot": "Rust", 23 "AdventOfCode": "Rust, Uiua", 24 "deploy-sh": "Bash", 25 "nixos": "Nix", 26 } as $language_overrides | 27 28 { 29 radicle: "https://radicle.xyz/assets/images/radicle.svg", 30 forgejo: "https://code.forgejo.org/avatars/f820feb83e74d55da9a0edc013de4f990a643aa8909f9c7f01b557582ce39763", 31 github: "https://avatars.githubusercontent.com/u/9919?v=4", 32 } as $forge_icon_urls | 33 34 def inline_img: 35 if . != null then "<img src=\"\(.)\" height=12>" else "" end; 36 37 def in($list): 38 . as $x | $list | any(. == $x); 39 40 def normalize($forge): 41 { 42 $forge, 43 name, 44 full_name, 45 description, 46 updated_at: (if .archived and $forge == "forgejo" then .archived_at else .updated_at end) | fromdate, 47 html_url, 48 language: $language_overrides[.full_name] // .language, 49 fork, 50 archived, 51 mirror: { forgejo: .mirror, github: false }[$forge], 52 avatar_url: [ .avatar_url, .owner.avatar_url ] | map(select(. and .!="")) | first, 53 public: { forgejo: .private | not, github: .visibility == "public" }[$forge], 54 } 55 ; 56 57 def normalize_radicle: 58 .payloads["xyz.radicle.project"].data as $data | 59 { 60 forge: "radicle", 61 name: $data.name, 62 full_name: $data.name, 63 description: $data.description, 64 updated_at: infinite, 65 html_url: "https://radicle.defelo.de/nodes/radicle.defelo.de/\(.rid)", 66 language: $language_overrides[$data.name], 67 fork: false, 68 archived: false, 69 mirror: false, 70 avatar_url: null, 71 public: .visibility.type == "public", 72 } 73 ; 74 75 def make_repo_table: 76 sort_by( 77 . as { $full_name, $description } | 78 [ ($pins | index($full_name) // infinite), ($description // "" | startswith("[DEPRECATED]")), -.updated_at ] 79 ) 80 | map("| \($forge_icon_urls[.forge] | inline_img) [\(.full_name)](\(.html_url)) | \(.description // "") | \(.language // "") |") 81 | join("\n") 82 | "| Name | Description | Language | 83 |-|-|-| 84 \(.)" 85 ; 86 87 (.[0] | map(normalize_radicle)) + (.[1] | map(normalize("forgejo"))) + (.[2] | map(normalize("github"))) 88 | map(select( 89 .public 90 and (.fork or .mirror | not) 91 and (.description // "" | startswith("moved to https://git.defelo.de/") | not) 92 and (.full_name | in($hidden) | not) 93 )) 94 | map(select(.archived)) as $archived 95 | "### Public Repositories 96 97 Most of my public repositories are hosted on \($forge_icon_urls.radicle | inline_img) [Radicle](https://radicle.defelo.de/nodes/radicle.defelo.de/users/did:key:z6Mkondm5dgAxsQnV3iuvZBCGMAQgfAg4zSdJWoNVJr7i7wp). 98 99 \(map(select(.archived | not)) | make_repo_table) 100 101 \(if ($archived | length) != 0 then "<details><summary>+\($archived | length) archived repositories</summary> 102 103 \($archived | make_repo_table) 104 105 </details>" else "" end) 106 "