@@ -1909,7 +1909,84 @@ venv_stop(){
1909
1909
venv_pid=` ps -ef | grep $venv_tty | grep -v " grep" | grep " /bin/sh -i" | awk ' {print $3}' `
1910
1910
kill -9 $venv_pid > /dev/null 2>&1
1911
1911
}
1912
+ # ->venv-refresh:
1913
+ # # Refresh managed virtual environments with the latest scripts
1914
+ # # Usage: ac --refresh-env [--all] [--name <venv-name>]
1915
+ # # Options:
1916
+ # # --all - Refresh all environments
1917
+ # # --name - Specific environment to refresh
1918
+ # # Example:
1919
+ # # $ ac --refresh-env # Refresh the active environment
1920
+ # # $ ac --refresh-env --all # Refresh all environments
1921
+ # # $ ac --refresh-env=all # Refresh all environments
1922
+ # # $ ac --refresh-env --name venv-2.18 # Refresh a specific environment (e.g., venv-2.18)
1923
+ # # $ ac --refresh-env=venv-2.18 # Refresh a specific environment (e.g., venv-2.18)
1924
+ venv_refresh () {
1925
+ local raw_arg=" $1 " # Value from --refresh-env=...
1926
+ local all_flag=" $2 " # --all option value
1927
+ local name_arg=" $3 " # --name option value
1928
+ local mode
1929
+ local env_name
1930
+ local target_envs=()
1931
+ local source_dir=" ${PWD} /scripts"
1932
+
1933
+ # Validate source files
1934
+ local required_files=(" profile.sh" " mounts.sh" " mounts.env" )
1935
+ for f in " ${required_files[@]} " ; do
1936
+ [[ ! -f " ${source_dir} /${f} " ]] && message_error " Missing source file: ${source_dir} /${f} " && exit_all
1937
+ done
1938
+
1939
+ # Argument resolution priority: 1. = syntax 2. --all/--name flags
1940
+ if [ -n " $raw_arg " ]; then
1941
+ # Handle --refresh-env=value syntax
1942
+ case " $raw_arg " in
1943
+ all)
1944
+ mode=" all"
1945
+ ;;
1946
+ venv-* )
1947
+ mode=" named"
1948
+ env_name=" $raw_arg "
1949
+ ;;
1950
+ * )
1951
+ message_error " Invalid refresh-env argument: $raw_arg "
1952
+ exit_all
1953
+ ;;
1954
+ esac
1955
+ elif [ " $all_flag " = " true" ]; then
1956
+ mode=" all"
1957
+ elif [ -n " $name_arg " ]; then
1958
+ mode=" named"
1959
+ env_name=" $name_arg "
1960
+ else
1961
+ mode=" active"
1962
+ fi
1963
+
1964
+ # Mode execution
1965
+ case " $mode " in
1966
+ all)
1967
+ for env in " ${VENV_HOME_MANAGED} " /venv-* ; do
1968
+ [[ -d " $env " ]] && target_envs+=(" $env " )
1969
+ done
1970
+ [[ ${# target_envs[@]} -eq 0 ]] && message_error " No managed environments found" && exit_all
1971
+ ;;
1972
+ named)
1973
+ [[ -z " $env_name " ]] && message_error " Environment name required" && exit_all
1974
+ env=$( validate_venv " $env_name " )
1975
+ target_envs+=(" $env " )
1976
+ ;;
1977
+ active)
1978
+ ensure_managed_venv_exists " --refresh-env"
1979
+ target_envs+=(" $VENV " )
1980
+ ;;
1981
+ esac
1912
1982
1983
+ # Perform file operations
1984
+ for env in " ${target_envs[@]} " ; do
1985
+ message " Refreshing: $( basename " $env " ) "
1986
+ cp -v " ${source_dir} /profile.sh" " ${source_dir} /mounts.sh" " ${source_dir} /mounts.env" " $env /"
1987
+ chmod +x " $env /mounts.sh" " $env /profile.sh"
1988
+ done
1989
+ }
1913
1990
# ==============================================================================
1914
1991
# Main arg parsing
1915
1992
# ==============================================================================
@@ -2033,6 +2110,18 @@ while true; do
2033
2110
ensure_managed_venv_exists $1
2034
2111
option_submitted=" --venv-stop"
2035
2112
;;
2113
+ --refresh-env|--refresh-env=?* ) # command
2114
+ ensure_managed_venv_exists $1
2115
+ option_submitted=" --refresh-env"
2116
+
2117
+ # Capture raw argument value if using = syntax
2118
+ if [[ " $1 " == * = * ]]; then
2119
+ refresh_arg=" ${1#* =} "
2120
+ else
2121
+ refresh_arg=" "
2122
+ fi
2123
+ ;;
2124
+
2036
2125
# End of main command list.
2037
2126
# Start of command options.
2038
2127
# Used by:
@@ -2383,4 +2472,6 @@ elif [ "$option_submitted" ] && [ "$option_submitted" = "--venv-start" ] ; then
2383
2472
venv_start $name
2384
2473
elif [ " $option_submitted " ] && [ " $option_submitted " = " --venv-stop" ] ; then
2385
2474
venv_stop $name
2475
+ elif [ " $option_submitted " = " --refresh-env" ]; then
2476
+ venv_refresh " $refresh_arg " " $all " " $name "
2386
2477
fi
0 commit comments