# Generates a simple web view of open TODOs in the depot. # # Only TODOs that match the form 'TODO($username)' are considered, and # only for users that are known to us. { depot, lib, ... }: with depot.nix.yants; let inherit (depot.third_party) jq ripgrep runCommandNoCC writeText ; inherit (builtins) elem filter fromJSON head readFile ; inherit (lib) concatStringsSep; # We should extract this from TVL slapd, but that data is not easily # accessible right now. knownUsers = [ "tazjin" "riking" "Profpatsch" "grfn" "lukegb" ]; todo = struct { file = string; line = int; todo = string; user = string; }; allTodos = fromJSON (readFile (runCommandNoCC "depot-todos.json" {} '' ${ripgrep}/bin/rg --json 'TODO\(\w+\):.*$' ${depot.depotPath} | \ ${jq}/bin/jq -s -f ${./extract-todos.jq} > $out '')); knownUserTodos = filter (todos: elem (head todos).user knownUsers) allTodos; fileLink = defun [ todo string ] (t: '' //${t.file}:${toString t.line}''); todoElement = defun [ todo string ] (t: ''
At ${fileLink t}:
${t.todo}''); userParagraph = todos: let user = (head todos).user; in ''