diff --git a/.devcontainer.json b/.devcontainer.json index f01b2c96..d416d61d 100755 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -10,7 +10,7 @@ "--no-cache" ] }, - "initializeCommand": ".devcontainer/get_env.sh", + "initializeCommand": ".devcontainer/init_env.sh", "name": "dbgpt", "workspaceFolder": "/app", "workspaceMount": "source=${localWorkspaceFolder},target=/app,type=bind", @@ -41,7 +41,7 @@ "source=${localEnv:SSH_AUTH_SOCK},target=/run/host-services/ssh-auth.sock,type=bind", // mount to local models // Persist the model to avoid redundant downloads. - "source=${localWorkspaceFolder}/models/text2vec-large-chinese,target=/app/models/text2vec-large-chinese,type=bind" + "source=${localWorkspaceFolder}/models,target=/app/models,type=bind" ], "containerEnv": { "SSH_AUTH_SOCK": "/run/host-services/ssh-auth.sock" diff --git a/.devcontainer/get_env.sh b/.devcontainer/get_env.sh deleted file mode 100755 index 3ba41ae0..00000000 --- a/.devcontainer/get_env.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -OS=$(uname -s) -USERNAME="$USER" -USER_UID=$(id -u "$USER") - -if [ "$OS" = "Linux" ]; then - GROUPNAME=$(id -gn "$USER") - USER_GID=$(id -g "$USER") -else - GROUPNAME="root" - USER_GID="0" -fi - - -printf "OS=%s\nUSERNAME=%s\nUSER_UID=%s\nGROUPNAME=%s\nUSER_GID=%s\n" \ - "$OS" \ - "$USERNAME" \ - "$USER_UID" \ - "$GROUPNAME" \ - "$USER_GID" > .devcontainer/.env diff --git a/.devcontainer/init_env.sh b/.devcontainer/init_env.sh new file mode 100755 index 00000000..221ee6c8 --- /dev/null +++ b/.devcontainer/init_env.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +OS=$(uname -s) +USERNAME="$USER" +USER_UID=$(id -u "$USER") + +if [ "$OS" = "Linux" ]; then + GROUPNAME=$(id -gn "$USER") + USER_GID=$(id -g "$USER") +else + GROUPNAME="root" + USER_GID="0" +fi + +printf "OS=%s\nUSERNAME=%s\nUSER_UID=%s\nGROUPNAME=%s\nUSER_GID=%s\n" \ + "$OS" \ + "$USERNAME" \ + "$USER_UID" \ + "$GROUPNAME" \ + "$USER_GID" > .devcontainer/.env + +# sharing-git-credentials see https://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials +init_ssh_agent(){ +# Define code block to insert (with unique identifier comment) +SSH_AGENT_CODE='# SSH Agent Auto Management[ID:ssh_agent_v1] +if [ -z "$SSH_AUTH_SOCK" ]; then + RUNNING_AGENT="$(ps -ax | grep '\''ssh-agent -s'\'' | grep -v grep | wc -l | tr -d '\''[:space:]'\'')" + if [ "$RUNNING_AGENT" = "0" ]; then + ssh-agent -s &> $HOME/.ssh/ssh-agent + fi + eval $(cat $HOME/.ssh/ssh-agent) > /dev/null + ssh-add 2> /dev/null +fi +# END_SSH_AGENT_CODE' + +# Auto detect shell type +TARGET_FILE="$HOME/.bashrc" +if [[ "$SHELL" == *"zsh"* ]]; then + TARGET_FILE="$HOME/.zshrc" +fi + +# Create .ssh directory if not exists +mkdir -p "$HOME/.ssh" + +# Check for existing code block +if ! grep -q 'END_SSH_AGENT_CODE' "$TARGET_FILE"; then + echo "Adding SSH agent management code to ${TARGET_FILE}..." + echo "$SSH_AGENT_CODE" >> "$TARGET_FILE" + echo "Code added successfully. Please run source ${TARGET_FILE} to apply changes immediately" +else + echo "Existing SSH agent code detected, no need to add again" +fi +} +init_ssh_agent +mkdir -p models \ No newline at end of file