-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathactivate
More file actions
executable file
·114 lines (98 loc) · 4.08 KB
/
activate
File metadata and controls
executable file
·114 lines (98 loc) · 4.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env bash
# =============================================================================
# BLOOM LIMS - Environment Activation Script
# =============================================================================
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
echo "Error: This script must be sourced, not executed."
echo "Usage: source ./activate <deploy-name>"
exit 1
fi
_bloom_script_path() {
if [[ -n "${ZSH_VERSION:-}" ]]; then
printf '%s\n' "${(%):-%x}"
elif [[ -n "${BASH_SOURCE[0]:-}" ]]; then
printf '%s\n' "${BASH_SOURCE[0]}"
else
printf '%s\n' "$0"
fi
}
_BLOOM_SCRIPT_PATH="$(_bloom_script_path)"
BLOOM_ROOT="$(cd "$(dirname "${_BLOOM_SCRIPT_PATH}")" && pwd)"
unset -f _bloom_script_path
unset _BLOOM_SCRIPT_PATH
_GREEN='\033[0;32m'
_YELLOW='\033[1;33m'
_BLUE='\033[0;34m'
_CYAN='\033[0;36m'
_NC='\033[0m'
if [[ "$#" -ne 1 ]]; then
echo -e " ${_YELLOW}⚠${_NC} Bloom activation requires exactly one positional deploy-name."
echo "Usage: source ./activate <deploy-name>"
return 1
fi
_BLOOM_DEPLOYMENT_CODE="$1"
if [[ ! "$_BLOOM_DEPLOYMENT_CODE" =~ ^[A-Za-z0-9-]{2,8}$ ]]; then
echo -e " ${_YELLOW}⚠${_NC} deploy-name must match ^[A-Za-z0-9-]{2,8}$"
return 1
fi
_BLOOM_CONDA_ENV_BASE="BLOOM"
_BLOOM_CONDA_ENV_NAME="${_BLOOM_CONDA_ENV_BASE}-${_BLOOM_DEPLOYMENT_CODE}"
_BLOOM_CONDA_ENV_CREATED="0"
unset _BLOOM_DEPLOYMENT_CODE
echo -e "${_BLUE}Activating BLOOM LIMS environment (${_BLOOM_CONDA_ENV_NAME})...${_NC}"
if ! command -v conda &> /dev/null; then
echo -e " ${_YELLOW}⚠${_NC} Conda not found."
return 1
fi
if [[ -n "${ZSH_VERSION:-}" ]]; then
eval "$(conda shell.zsh hook)" 2>/dev/null || true
elif [[ -n "${BASH_VERSION:-}" ]]; then
eval "$(conda shell.bash hook)" 2>/dev/null || true
else
source "$(conda info --base)/etc/profile.d/conda.sh" 2>/dev/null || true
fi
if conda info --envs | grep -Eq "(^|[[:space:]])${_BLOOM_CONDA_ENV_NAME}([[:space:]]|$)"; then
echo -e " ${_GREEN}✓${_NC} Activating conda environment: ${_BLOOM_CONDA_ENV_NAME}"
conda activate "${_BLOOM_CONDA_ENV_NAME}"
else
echo -e " ${_YELLOW}⚠${_NC} Conda environment '${_BLOOM_CONDA_ENV_NAME}' not found."
if [[ -f "$BLOOM_ROOT/environment.yaml" ]]; then
echo -e " ${_CYAN}→${_NC} Installing conda environment from environment.yaml..."
if conda env create -n "${_BLOOM_CONDA_ENV_NAME}" -f "$BLOOM_ROOT/environment.yaml"; then
echo -e " ${_GREEN}✓${_NC} Conda environment created successfully"
conda activate "${_BLOOM_CONDA_ENV_NAME}"
_BLOOM_CONDA_ENV_CREATED="1"
else
echo -e " ${_YELLOW}⚠${_NC} Failed to create conda environment."
return 1
fi
else
echo -e " ${_YELLOW}⚠${_NC} environment.yaml not found."
return 1
fi
fi
if [[ "${CONDA_DEFAULT_ENV:-}" != "${_BLOOM_CONDA_ENV_NAME}" ]] || [[ -z "${CONDA_PREFIX:-}" ]] || [[ ! -x "${CONDA_PREFIX}/bin/python" ]]; then
echo -e " ${_YELLOW}⚠${_NC} ${_BLOOM_CONDA_ENV_NAME} conda environment is required."
echo -e " ${_CYAN}→${_NC} Run 'conda env create -n ${_BLOOM_CONDA_ENV_NAME} -f environment.yaml' if needed, then retry 'source ./activate <deploy-name>'."
return 1
fi
export PATH="${CONDA_PREFIX}/bin:${PATH}"
if [[ "${_BLOOM_CONDA_ENV_CREATED}" == "1" ]]; then
echo -e " ${_CYAN}→${_NC} Installing editable Bloom package into ${_BLOOM_CONDA_ENV_NAME}..."
if ! "${CONDA_PREFIX}/bin/python" -m pip install -e "$BLOOM_ROOT"; then
echo -e " ${_YELLOW}⚠${_NC} Failed to install local Bloom checkout from ${BLOOM_ROOT}"
return 1
fi
fi
export BLOOM_ROOT
export BLOOM_ACTIVE=1
if command -v rehash >/dev/null 2>&1; then
rehash
elif command -v hash >/dev/null 2>&1; then
hash -r 2>/dev/null || true
fi
echo -e " ${_GREEN}✓${_NC} Using BLOOM checkout: ${BLOOM_ROOT}"
echo -e " ${_GREEN}✓${_NC} Active conda environment: ${CONDA_DEFAULT_ENV}"
echo -e " ${_GREEN}✓${_NC} Repo CLI entrypoints are provided by the activated environment"
echo ""
echo -e "${_CYAN}BLOOM LIMS environment activated!${_NC}"