Compare commits
39 commits
Author | SHA1 | Date | |
---|---|---|---|
f64ebcd0f1 | |||
23e3475c91 | |||
8e69d784fc | |||
323a1df906 | |||
8d978b6cee | |||
1a78ce53e7 | |||
44a925feb4 | |||
b0a3ae00eb | |||
e3051799b0 | |||
1217bf8115 | |||
d4b8d62d41 | |||
d7765033ce | |||
1482de91c2 | |||
34dc630b2f | |||
8f3f727ad3 | |||
f7de33f0e4 | |||
0ba236e266 | |||
9f15391fe2 | |||
c08d4a8fb8 | |||
1824fe3338 | |||
17f8310bfb | |||
9e8b139a81 | |||
59b25759c1 | |||
7e876c7642 | |||
34225beee3 | |||
e5123c896f | |||
b91acf76de | |||
9616edc523 | |||
9d537b2247 | |||
7e1f425dd4 | |||
02ebf0d2cd | |||
d4b83a1bfa | |||
4b09ebadc2 | |||
a5720bcb43 | |||
114aabce9c | |||
59f569b2ee | |||
ac89a75a7d | |||
6491592e72 | |||
d6dd102a7c |
1 changed files with 176 additions and 0 deletions
176
re.sh
Executable file
176
re.sh
Executable file
|
@ -0,0 +1,176 @@
|
|||
#! /usr/bin/env sh
|
||||
|
||||
root="/prj/venv"
|
||||
url="http://localhost:8000"
|
||||
url_pypi="${url}/pypi/os/simple"
|
||||
|
||||
activate() {
|
||||
echo
|
||||
export VIRTUAL_ENV="${1}"
|
||||
echo "→ ${VIRTUAL_ENV}"
|
||||
export OLD_PATH="${PATH}"
|
||||
export PATH="${VIRTUAL_ENV}/bin:${PATH}"
|
||||
echo "→ ${PATH}"
|
||||
python3 --version
|
||||
pip --version
|
||||
}
|
||||
caches() {
|
||||
local command="${1}"
|
||||
set \
|
||||
".cache/pip" \
|
||||
".cache/uv" \
|
||||
".local/share/pip" \
|
||||
".local/share/uv"
|
||||
echo
|
||||
echo "caches:"
|
||||
for cache in "${@}"; do
|
||||
"${command}" "${HOME}/${cache}"
|
||||
done
|
||||
}
|
||||
deactivate() {
|
||||
echo
|
||||
echo "← ${VIRTUAL_ENV}"
|
||||
export PATH="${OLD_PATH}"
|
||||
echo "← ${PATH}"
|
||||
unset OLD_PATH VIRTUAL_ENV
|
||||
}
|
||||
list() {
|
||||
echo
|
||||
ls -a -l "${1}/${2}"
|
||||
}
|
||||
list_venv() {
|
||||
list "${1}" "bin"
|
||||
}
|
||||
pip_install() {
|
||||
echo
|
||||
pip install \
|
||||
--index-url "${url_pypi}" \
|
||||
--no-cache-dir \
|
||||
"${@}"
|
||||
}
|
||||
remove() {
|
||||
rm --force --recursive "${@}"
|
||||
}
|
||||
uv_install() {
|
||||
set \
|
||||
"pelican" \
|
||||
\
|
||||
"hatch" \
|
||||
\
|
||||
"Sphinx" \
|
||||
"sphinx-rtd-theme" \
|
||||
\
|
||||
"gitlint" \
|
||||
\
|
||||
"pydoclint" \
|
||||
"pylint" \
|
||||
"ruff" \
|
||||
\
|
||||
"pytest" \
|
||||
\
|
||||
"toml" \
|
||||
\
|
||||
"twine" \
|
||||
\
|
||||
"mypy" \
|
||||
"pyright" \
|
||||
\
|
||||
"ruamel.yaml" \
|
||||
"PyYAML" \
|
||||
"types-PyYAML"
|
||||
echo
|
||||
uv pip install --index-url "${url_pypi}" "${@}"
|
||||
}
|
||||
uv_python() {
|
||||
echo
|
||||
export UV_PYTHON_INSTALL_MIRROR="${url}/cpypy"
|
||||
uv python install "${2}"
|
||||
unset UV_PYTHON_INSTALL_MIRROR
|
||||
}
|
||||
uv_venv() {
|
||||
echo
|
||||
uv venv \
|
||||
--allow-existing \
|
||||
--index-url "${url_pypi}" \
|
||||
--python "${2}" \
|
||||
--relocatable \
|
||||
--seed \
|
||||
"${1}"
|
||||
}
|
||||
venvs() {
|
||||
local action="${1}"
|
||||
local venv version
|
||||
set \
|
||||
"3.12" \
|
||||
"3.11" \
|
||||
"3.10"
|
||||
for version in "${@}"; do
|
||||
url_pypi="${url}/pypi/${version}/simple"
|
||||
venv="${root}/${version}"
|
||||
echo
|
||||
echo "${venv} ← ${action}"
|
||||
case "${action}" in
|
||||
"create")
|
||||
export UV_PYTHON_INSTALL_DIR="${venv}/cpypy"
|
||||
echo "→ install python ${version}"
|
||||
uv_python "${venv}" "${version}"
|
||||
echo "→ create venv ${version}"
|
||||
uv_venv "${venv}" "${version}"
|
||||
unset UV_PYTHON_INSTALL_DIR
|
||||
;;
|
||||
"init")
|
||||
activate "${venv}"
|
||||
pip_install "uv"
|
||||
deactivate
|
||||
;;
|
||||
"install")
|
||||
activate "${venv}"
|
||||
uv_install
|
||||
deactivate
|
||||
;;
|
||||
"link")
|
||||
activate "${venv}"
|
||||
for module in "rwx"; do
|
||||
ln --symbolic \
|
||||
"/rwx/rwx/${module}" \
|
||||
"${venv}/lib/python${version}/site-packages/${module}"
|
||||
done
|
||||
deactivate
|
||||
;;
|
||||
"list")
|
||||
activate "${venv}"
|
||||
list_venv "${venv}"
|
||||
deactivate
|
||||
;;
|
||||
"relate")
|
||||
absolute="$(readlink -f "${venv}/bin/python")"
|
||||
prevenv="$(readlink -f "${venv}")"
|
||||
relative=$(echo "${absolute}" | sed "s|${prevenv}|..|")
|
||||
ln --force --symbolic "${relative}" "${venv}/bin/python"
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
caches remove
|
||||
|
||||
remove "${root}"
|
||||
|
||||
os="${root}/os"
|
||||
python3 -m "venv" "${os}"
|
||||
activate "${os}"
|
||||
list_venv "${os}"
|
||||
pip_install --upgrade "pip"
|
||||
pip_install "uv"
|
||||
list_venv "${os}"
|
||||
venvs create
|
||||
deactivate
|
||||
|
||||
venvs init
|
||||
venvs relate
|
||||
venvs link
|
||||
venvs install
|
||||
venvs list
|
||||
|
||||
caches list_venv
|
Loading…
Reference in a new issue