mirror of
https://codeberg.org/muon/home.git
synced 2026-03-08 03:25:16 +00:00
100 lines
2.1 KiB
Bash
100 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
if [ "$1" = "py" ] && [ "$2" = "init" ]; then
|
|
echo "Initializing python devenv..."
|
|
|
|
# 1. Init devenv
|
|
if [ -f .gitignore ]; then
|
|
cp .gitignore .gitignore.bak
|
|
fi
|
|
|
|
if command -v devenv >/dev/null; then
|
|
devenv init
|
|
echo "Direnv allowed"
|
|
else
|
|
echo "Error: devenv not found in path."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f .gitignore.bak ]; then
|
|
mv .gitignore.bak .gitignore
|
|
elif [ -f .gitignore ]; then
|
|
rm .gitignore
|
|
fi
|
|
|
|
# 2. Replace devenv.nix
|
|
cat <<EOF >devenv.nix
|
|
{pkgs, ...}: {
|
|
packages = [ pkgs.google-cloud-sdk ];
|
|
|
|
languages.python = {
|
|
enable = true;
|
|
venv.enable = true;
|
|
uv = {
|
|
enable = true;
|
|
sync.enable = false;
|
|
};
|
|
};
|
|
|
|
# We use the named index "google" defined in uv.toml
|
|
env.UV_INDEX_GOOGLE_USERNAME = "oauth2accesstoken";
|
|
|
|
enterShell = ''
|
|
if ! gcloud auth print-access-token >/dev/null 2>&1; then
|
|
echo "⚠️ gcloud not authenticated. Run 'gcloud auth login' to access Google Artifact Registry."
|
|
else
|
|
export UV_INDEX_GOOGLE_PASSWORD=\$(gcloud auth print-access-token)
|
|
fi
|
|
uv sync
|
|
'';
|
|
}
|
|
EOF
|
|
|
|
cat <<EOF >uv.toml
|
|
[[index]]
|
|
name = "google"
|
|
url = "https://europe-west1-python.pkg.dev/mk2-prod/python-packages/simple/"
|
|
EOF
|
|
|
|
# 3. Add to local git exclude
|
|
if git rev-parse --git-dir >/dev/null 2>&1; then
|
|
EXCLUDE_FILE=$(git rev-parse --git-path info/exclude)
|
|
mkdir -p "$(dirname "$EXCLUDE_FILE")"
|
|
|
|
IGNORES=(
|
|
".devenv*"
|
|
".direnv"
|
|
"devenv.nix"
|
|
"devenv.yaml"
|
|
"devenv.lock"
|
|
"uv.lock"
|
|
"uv.toml"
|
|
".envrc"
|
|
)
|
|
|
|
for file in "${IGNORES[@]}"; do
|
|
if ! grep -Fxq "$file" "$EXCLUDE_FILE" 2>/dev/null; then
|
|
echo "$file" >>"$EXCLUDE_FILE"
|
|
echo "Added $file to local git exclude ($EXCLUDE_FILE)"
|
|
fi
|
|
done
|
|
else
|
|
echo "Warning: Not a git repository. Skipping git ignore setup."
|
|
fi
|
|
|
|
# 4. Allow direnv
|
|
if command -v direnv >/dev/null; then
|
|
direnv allow
|
|
echo "Direnv allowed"
|
|
else
|
|
echo "Error: direnv not found in path."
|
|
exit 1
|
|
fi
|
|
|
|
else
|
|
echo "Usage: hr py init"
|
|
echo " py init Initialize a python devenv environment (git-ignored)"
|
|
exit 1
|
|
fi
|