tools.utils

Yohn Y. 2025-05-17 Parent:a75ba21f4938

6:9fc60d528049 tip Browse Files

+ shell утилиты

shell/make-venv shell/new-task shell/new-tmp

     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/shell/make-venv	Sat May 17 11:31:31 2025 +0300
     1.3 @@ -0,0 +1,20 @@
     1.4 +#!/bin/sh
     1.5 +# devel.a0fs.ru -- DEV:TOOLS::~/bin/make-venv.sh -- v0.r202405.1
     1.6 +
     1.7 +p_prompt="$1"
     1.8 +p_dir="$2"
     1.9 +
    1.10 +die () {
    1.11 +    echo "$1" >&2
    1.12 +    exit 1
    1.13 +}
    1.14 +
    1.15 +if [ -z "${p_prompt}" ]; then
    1.16 +    die "Нужно указать название приложения в параметре"
    1.17 +fi
    1.18 +
    1.19 +if [ -z "${p_dir}" ]; then
    1.20 +    p_dir="."
    1.21 +fi
    1.22 +
    1.23 +exec python3 -m venv --upgrade-deps --prompt "${p_prompt}" "${p_dir}"
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/shell/new-task	Sat May 17 11:31:31 2025 +0300
     2.3 @@ -0,0 +1,69 @@
     2.4 +#!/bin/sh
     2.5 +# devel.a0fs.ru -- tools:~/bin/new-task -- v0.r202505.1
     2.6 +### CONST
     2.7 +TASK_BASE="proj/tasks"
     2.8 +
     2.9 +### ARGS
    2.10 +# def args
    2.11 +args_global_task=0     # Расположение директории в глобальной наддиректории
    2.12 +                       # вместо текущего каталога
    2.13 +
    2.14 +### FUNC
    2.15 +die () {
    2.16 +	echo "$1" >&2
    2.17 +	exit 1
    2.18 +}
    2.19 +
    2.20 +# lib.getopts() -- v0.r202505.1
    2.21 +while getopts ":g" __OPT; do
    2.22 +  case ${__OPT} in
    2.23 +    \?)
    2.24 +      die "ERR: Unknown -$OPTARG"
    2.25 +      ;;
    2.26 +
    2.27 +    :)
    2.28 +      die "ERR: -$OPTARG need arguments"
    2.29 +      ;;
    2.30 +
    2.31 +    #  define :: Определение необходимых нам параметров
    2.32 +    g)
    2.33 +      args_global_task="1"
    2.34 +      ;;
    2.35 +
    2.36 +    # end define
    2.37 +  esac
    2.38 +done
    2.39 +shift $((OPTIND-1))
    2.40 +# end lib.getopts()
    2.41 +
    2.42 +
    2.43 +### VARS
    2.44 +task_name="$(date '+%Y%m%d') - $1"
    2.45 +
    2.46 +if [ "${args_global_task}" -eq 1 ] ; then
    2.47 +	task_dir="${HOME}/${TASK_BASE}/${task_name}"
    2.48 +
    2.49 +else
    2.50 +	task_dir="${task_name}"
    2.51 +fi
    2.52 +
    2.53 +
    2.54 +### DO
    2.55 +if [ -z "$task_name" ] ; then
    2.56 +	die "Нужно имя задачи для регистрации"
    2.57 +fi
    2.58 +
    2.59 +if [ -e "$task_dir" ]; then
    2.60 +	if [ ! -d "$task_dir" ] ; then
    2.61 +		die "Имя директории задачи уже нанято"
    2.62 +
    2.63 +	else
    2.64 +		cd "$task_dir"
    2.65 +		exec $SHELL
    2.66 +	fi
    2.67 +else
    2.68 +	mkdir -p "$task_dir"
    2.69 +	cd "$task_dir"
    2.70 +	exec $SHELL
    2.71 +fi
    2.72 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/shell/new-tmp	Sat May 17 11:31:31 2025 +0300
     3.3 @@ -0,0 +1,27 @@
     3.4 +#!/bin/sh
     3.5 +# devel.a0fs.ru -- SA:TOOLS::~/bin/new-tmp -- v0.r202505.1
     3.6 +
     3.7 +ts="$(date "+%Y%m%d-%H%M%S")"
     3.8 +prefix="$HOME/tmp"
     3.9 +
    3.10 +if [ "$1" ] ; then
    3.11 +	prefix="$(readlink -f "$1")"
    3.12 +
    3.13 +	if ! [ -d "$prefix" ] ; then
    3.14 +		echo "ERROR: $prefix not directory"
    3.15 +		exit 1
    3.16 +	fi
    3.17 +fi
    3.18 +
    3.19 +tmp_dir="${prefix}/${ts}"
    3.20 +
    3.21 +if [ -e "${tmp_dir}" ] ; then
    3.22 +	echo "ERROR: $tmp_dir already exists"
    3.23 +	exit 1
    3.24 +fi
    3.25 +
    3.26 +mkdir -p "${tmp_dir}"
    3.27 +cd "${tmp_dir}"
    3.28 +exec "$SHELL"
    3.29 +
    3.30 +