Compare commits

..

No commits in common. "a361274b27f7db57a2f461a6ec206bcb3405728f" and "0fa3b79bd9b1b992ff2435530a5298db511e64da" have entirely different histories.

4 changed files with 49 additions and 120 deletions

View file

@ -26,7 +26,7 @@ def to_cells(sizes): to_cells(sizes; null);
def to_line(left; joiner; right):
[left, .[1], (.[1:] | map([joiner, .]) ), right] | flatten | join("");
def create(data; header_callback; cell_callback):
def to_table(data; header_callback; cell_callback):
(data[0] | to_entries | map(.key)) as $keys
| ([$keys]) as $header
| (data | map(to_entries | map(.value))) as $rows
@ -55,5 +55,5 @@ def create(data; header_callback; cell_callback):
| join("\n")
);
def create(data; header_callback): create(data; header_callback; null);
def create(data): create(data; _::style(_::BOLD); null);
def to_table(data; header_callback): to_table(data; header_callback; null);
def to_table(data): to_table(data; _::style(_::BOLD); null);

View file

@ -6,16 +6,17 @@ _default:
[script]
list:
cd .. && just vars get ulmo zitadel/users | jq -r -C '
import ".jq/table" as table;
import ".jq/format" as f;
cd .. && just vars get ulmo zitadel/users \
| jq fromjson \
| jq -r -C '
include ".jq/table";
include ".jq/format";
fromjson
| to_entries
to_entries
| sort_by(.key)
| map(
(.key|f::to_title) + ":\n"
+ table::create(
(.key|to_title) + ":\n"
+ to_table(
.value
| to_entries
| sort_by(.key)
@ -23,76 +24,4 @@ list:
)
)
| join("\n\n┄┄┄\n\n")
';
[script]
add:
exec 5>&1
pad () { [ "$#" -gt 1 ] && [ -n "$2" ] && printf "%$2.${2#-}s" "$1"; }
input() {
local label=$1
local value=$2
local res=$(gum input --header "$label" --value "$value")
echo -e "\e[2m$(pad "$label" -11)\e[0m$res" >&5
echo $res
}
data=`cd .. && just vars get ulmo zitadel/users | jq 'fromjson'`
# Gather inputs
org=`
jq -r 'to_entries | map(.key)[]' <<< "$data" \
| gum choose --header 'Which organisation to save to?' --select-if-one
`
username=`input 'user name' 'new-user'`
email=`input 'email' 'new.user@example.com'`
first_name=`input 'first name' 'John'`
last_name=`input 'last name' 'Doe'`
user_exists=`jq --arg 'org' "$org" --arg 'username' "$username" '.[$org][$username]? | . != null' <<< "$data"`
if [ "$user_exists" == "true" ]; then
gum confirm 'User already exists, overwrite it?' --padding="1 1" || exit 0
fi
next=`
jq \
--arg 'org' "$org" \
--arg 'username' "$username" \
--arg 'email' "$email" \
--arg 'first_name' "$first_name" \
--arg 'last_name' "$last_name" \
--compact-output \
'.[$org] += { $username: { email: $email, firstName: $first_name, lastName: $last_name } }' \
<<< $data
`
gum spin --title "saving..." -- echo "$(cd .. && just vars set ulmo 'zitadel/users' "$next")"
[script]
remove:
data=`cd .. && just vars get ulmo zitadel/users | jq fromjson`
# Gather inputs
org=`
jq -r 'to_entries | map(.key)[]' <<< "$data" \
| gum choose --header 'Which organisation?' --select-if-one
`
user=`
jq -r --arg org "$org" '.[$org] | to_entries | map(.key)[]' <<< "$data" \
| gum choose --header 'Which user?' --select-if-one
`
next=`
jq \
--arg 'org' "$org" \
--arg 'user' "$user" \
--compact-output \
'del(.[$org][$user])' \
<<< $data
`
gum spin --title "saving..." -- echo "$(cd .. && just vars set ulmo 'zitadel/users' "$next")"
'

68
flake.lock generated
View file

@ -84,11 +84,11 @@
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1765483630,
"narHash": "sha256-4nLng3hXTHuJF1xeMXWVyK26r0O407YG7aEfkWVD3Jg=",
"rev": "b500c2e4c8f50961e976b7a78991d2fd4f96c423",
"lastModified": 1765346666,
"narHash": "sha256-UR8bVZF12rA7yI3jdqvlTA50NUXf3F8H6GZvLYiDqYM=",
"rev": "7c9a2e4fb9d90f213f3bf3782ee460e669231bca",
"type": "tarball",
"url": "https://git.clan.lol/api/v1/repos/clan/clan-core/archive/b500c2e4c8f50961e976b7a78991d2fd4f96c423.tar.gz"
"url": "https://git.clan.lol/api/v1/repos/clan/clan-core/archive/7c9a2e4fb9d90f213f3bf3782ee460e669231bca.tar.gz"
},
"original": {
"type": "tarball",
@ -170,11 +170,11 @@
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1765435813,
"narHash": "sha256-C6tT7K1Lx6VsYw1BY5S3OavtapUvEnDQtmQB5DSgbCc=",
"lastModified": 1765252472,
"narHash": "sha256-byMt/uMi7DJ8tRniFopDFZMO3leSjGp6GS4zWOFT+uQ=",
"owner": "nix-community",
"repo": "fenix",
"rev": "6399553b7a300c77e7f07342904eb696a5b6bf9d",
"rev": "8456b985f6652e3eef0632ee9992b439735c5544",
"type": "github"
},
"original": {
@ -190,11 +190,11 @@
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1765448647,
"narHash": "sha256-y29oz4/jfs7TEGR1+pKlcQn5pBsTZGM8TOhVDJEAtXg=",
"lastModified": 1765370621,
"narHash": "sha256-3gAVH9nYc2E82tIXKFv2lMe4JohglxJtPgs0ZmXkx9c=",
"owner": "nix-community",
"repo": "flake-firefox-nightly",
"rev": "63947e060742f3b023c87e225c3f327befbbd6a3",
"rev": "ea98c8041dad75efc80ec036643a32b12467c8b7",
"type": "github"
},
"original": {
@ -594,11 +594,11 @@
]
},
"locked": {
"lastModified": 1765480374,
"narHash": "sha256-HlbvQAqLx7WqZFFQZ8nu5UUJAVlXiV/kqKbyueA8srw=",
"lastModified": 1765337252,
"narHash": "sha256-HuWQp8fM25fyWflbuunQkQI62Hg0ecJxWD52FAgmxqY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "39cb677ed9e908e90478aa9fe5f3383dfc1a63f3",
"rev": "13cc1efd78b943b98c08d74c9060a5b59bf86921",
"type": "github"
},
"original": {
@ -810,11 +810,11 @@
},
"nixos-facter-modules": {
"locked": {
"lastModified": 1765442039,
"narHash": "sha256-k3lYQ+A1F7aTz8HnlU++bd9t/x/NP2A4v9+x6opcVg0=",
"lastModified": 1764252389,
"narHash": "sha256-3bbuneTKZBkYXlm0bE36kUjiDsasoIC1GWBw/UEJ9T4=",
"owner": "nix-community",
"repo": "nixos-facter-modules",
"rev": "9dd775ee92de63f14edd021d59416e18ac2c00f1",
"rev": "5ea68886d95218646d11d3551a476d458df00778",
"type": "github"
},
"original": {
@ -852,11 +852,11 @@
]
},
"locked": {
"lastModified": 1765483419,
"narHash": "sha256-w6wznH1lBzlSH3+pWDkE+L6xA0F02drFAzu2E7PD/Jo=",
"lastModified": 1765376994,
"narHash": "sha256-dsgdFdj8+qh81XPB/9SlwvuhJMHPjqsf7Zk0AnsdVpY=",
"owner": "nix-community",
"repo": "nixos-wsl",
"rev": "0c040f28b44b18e0d4240e027096078e34dbb029",
"rev": "30f6a14293df4938c35173a73efdeba450653d0a",
"type": "github"
},
"original": {
@ -914,11 +914,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1765403794,
"narHash": "sha256-bOk4vZjzk419pIkmMWrr8PTg0fK2Oph/owZUAPHWwIE=",
"lastModified": 1765357816,
"narHash": "sha256-Uh7y3tL9SUzMjM8eO9CMqf30pPpa1i+P3asBijc32lY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6f313d8e9be4d7db523962ecc3ce97c951bacb1f",
"rev": "004943ed3cf9de5805a0da377599d1bfdd47a98a",
"type": "github"
},
"original": {
@ -946,11 +946,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1765491281,
"narHash": "sha256-adRTsIAzAiMUP40dPHhcAq69+iRcSV93XJdg8YO7lYw=",
"lastModified": 1765380834,
"narHash": "sha256-MUMk4DZ0V+gU7yee7DdiPwieRclS2uMNvLQGLWwew4M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d21f5e3178bdfce2e894e0bd9b6535ac6593a734",
"rev": "bf83174d5ab54f384b1ec5068b3280241dbb849f",
"type": "github"
},
"original": {
@ -1139,11 +1139,11 @@
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1765400135,
"narHash": "sha256-D3+4hfNwUhG0fdCpDhOASLwEQ1jKuHi4mV72up4kLQM=",
"lastModified": 1765120009,
"narHash": "sha256-nG76b87rkaDzibWbnB5bYDm6a52b78A+fpm+03pqYIw=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "fface27171988b3d605ef45cf986c25533116f7e",
"rev": "5e3e9c4e61bba8a5e72134b9ffefbef8f531d008",
"type": "github"
},
"original": {
@ -1254,11 +1254,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1765474444,
"narHash": "sha256-sDG+c73xEnIw1pFNRWffKDnTWiTuyZiEP+Iub0D3mWA=",
"lastModified": 1765377959,
"narHash": "sha256-MsvpqrovI+iveyVam6sIPlSsUVVcmmhTxpD9w3OOsvw=",
"owner": "nix-community",
"repo": "stylix",
"rev": "dd14de4432a94e93e10d0159f1d411487e435e1e",
"rev": "54fcd2f342c6417548cc56f53e401224dcade639",
"type": "github"
},
"original": {
@ -1519,11 +1519,11 @@
]
},
"locked": {
"lastModified": 1765491669,
"narHash": "sha256-LjMIEOyIT5AMvbz/RYRcZPTJ7FB6vnEmeaid9vkIp0k=",
"lastModified": 1765344150,
"narHash": "sha256-RoGBKQglbF19aINeV8F7DHCXxF7FrMRLgL2yjl9vOiQ=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "85feeba579822e7e30cccf549d805f24b86d7235",
"rev": "1adab25828578301037855c59849e9bbecf8948b",
"type": "github"
},
"original": {

View file

@ -4,7 +4,7 @@ email:
zitadel:
masterKey: ENC[AES256_GCM,data:4MPvBo407qrS7NF4oUTf84tZoPkSRmiHdD7qpkYeHME=,iv:H2NIAN0xBUDqnyco9gA3zYAsKtSeA/JpqYrPhc1eqc0=,tag:6OFGDfsucG5gDerImgpuXA==,type:str]
nix: {}
users: ENC[AES256_GCM,data:pMSK3Re/DZeMnFNCEgjTGWWMYYX5eLOoZwGg3oO7WQ0Sx7z7sLRPpqlGVw384G6uYjR19MpnVud6hHPkGY/FoTO0vsJ+a2anFpmLjLsPNehiQ57rnvnWJCeVJyTz0kqKt7vS1kGpdtjH5d98PerNzxR0FvTrjJhQCfHyP/S8/G6vD6cLmeBXaStpKJ6TM0UIPcWSTzrpV3O292xAFooWYv19hkM4C6IJtbej8zTmY8pEsHk5OY3w,iv:r3603xOtSE1CEdMR9epaWclbO3PXjMWpnJT7HEbF57o=,tag:HAPUlIuumY0IjL0P4Q1aFA==,type:str]
users: ENC[AES256_GCM,data:xkjm0+PBt6gmZyfi3n3OIEe5b+d4OtN0Y3UfmdcbcJHbJZuiz+60oUjlAN0vjtsi0muufoAqtGJTIpm9nDZzzN7b7LK43TAhcuSlIm5LpbZFp1U3H4laRbTwauAT6wA0aDCfAkwTozxAuEUk1jAu+65ktJNJb7b0PR7s/I/wf7IgW2+K4Jv3LIOZIipUwfuvXuTzsxCElYRvGZXmIuXrYq1EaymksHHggemrKeMWLAae7mzz5v3aBbwxiVjQNkQkS4ApsO/5nZUat0oqXA==,iv:fptZn4NmX3iYKSEPLJAOFpt+KQ6TR1w9KaY9IF4p/Wk=,tag:UKvMOSIT5/mhfZA3usbLhQ==,type:str]
forgejo:
action_runner_token: ENC[AES256_GCM,data:yJ6OnRq5kinbuhvH06K5o3l86EafuBoojMwg/qhP+cgeH+BwPeE+Ng==,iv:IeXJahPxgLNIUFmkgp495tLVh8UyQBmJ2SnVEUhlhHs=,tag:XYQi613CxSp8AQeilJMrsg==,type:str]
synapse:
@ -54,7 +54,7 @@ sops:
TTRWaHhpNWlkVDFmMFN4ZTNHMUxyNVkKV693pzTKRkZboQCMPr9IyMGSgxfuHXcb
Y6BNcp6Qg6PWtX5QI7wRkPNINAK1TEbRBba+b8h6gMmVU4DliQyFiQ==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-11T22:19:26Z"
mac: ENC[AES256_GCM,data:J1RVA3s9qemyLGo4svCofqIA4XNYgDWDc3JRbfynGLtAocOQPtXOLKoEauplDWMQ8hFIGRznIzv5XkCH6hfxQhjNI0UCuR0WhFZtnQU59hS+Qg4AQKVukRdjY136RpNiBMCMNhiXs8NAbuVxrFramgFClFQgVO+b6+Q3w2JspNE=,iv:hPUnwDUg+Wbx/YDugY8TjFIJqUzJE75tv4vzc2NHdrQ=,tag:xwqb7I315SbAlK7MlT9uBA==,type:str]
lastmodified: "2025-12-11T07:34:59Z"
mac: ENC[AES256_GCM,data:wEi918sFOHyo1QE50ce9CffDnxlno6UAGOGduM3GCR33LOsK/brPsQaV79k2EbLOdb2/vOy8A3SYAtmVs7s7tVIpukTyUjOLYL17Zu8DVKiQ5GHnJG+A564hj4kN4vS9fUStkpj+HiaBnkXUvIDRUGmXPkWhomwl8FvQca44ipk=,iv:bjAup4SJI62kQnjU0jzZMjwHJFJgkmtpp601rpl7aqM=,tag:aBrxrysJ/xCvEtM7OoJ1NA==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0