diff --git a/pidd.sh b/pidd.sh index 44453fa..7410232 100644 --- a/pidd.sh +++ b/pidd.sh @@ -4,8 +4,8 @@ [ -n "${PIDD_DNS}" ] || PIDD_DNS="\ 9.9.9.9 \ " -[ -n "${PIDD_GIT_CHILD}" ] || PIDD_GIT_CHILD="pidd" -[ -n "${PIDD_GIT_PARENT}" ] || PIDD_GIT_PARENT="rwx" +[ -n "${PIDD_GIT_MAIN}" ] || PIDD_GIT_MAIN="pidd" +[ -n "${PIDD_GIT_ROOT}" ] || PIDD_GIT_ROOT="rwx" # main pidd_main () { @@ -13,6 +13,7 @@ pidd_main () { pidd_set_packages_repositories pidd_set_packages_configuration # + pidd_list_environment_variables pidd_list_working_directory pidd_set_https_verification_off pidd_set_dns_resolving @@ -351,12 +352,17 @@ Acquire::https::Verify-Peer False; if [ -n "${GITHUB_ACTIONS}" ] ; then # github → gitea → forgejo if [ -n "${GITHUB_SERVER_URL}" ] ; then - PIDD_SERVER_URL="${GITHUB_SERVER_URL}" + if [ -n "${GITHUB_TOKEN}" ] ; then + PIDD_PROJECT_ROOT="$(dirname "${GITHUB_SERVER_URL}")\ +//${GITHUB_TOKEN}@$(basename "${GITHUB_SERVER_URL}")" + else + pidd_error_ci "GITHUB_TOKEN" + fi else pidd_error_ci "GITHUB_SERVER_URL" fi if [ -n "${GITHUB_REPOSITORY}" ] ; then - PIDD_PROJECTS_GROUP="$(dirname "${GITHUB_REPOSITORY}")" + PIDD_PROJECT_PATH="$(dirname "${GITHUB_REPOSITORY}")" PIDD_PROJECT_NAME="$(basename "${GITHUB_REPOSITORY}")" else pidd_error_ci "GITHUB_REPOSITORY" @@ -368,16 +374,33 @@ Acquire::https::Verify-Peer False; fi elif [ -n "${GITLAB_CI}" ] ; then # gitlab - if [ -n "${CI_SERVER_URL}" ] ; then - PIDD_SERVER_URL="${CI_SERVER_URL}" + if [ -n "${CI_SERVER_PROTOCOL}" ] ; then + if [ -n "${CI_REGISTRY_USER}" ] ; then + if [ -n "${CI_REGISTRY_PASSWORD}" ] ; then + if [ -n "${CI_SERVER_FQDN}" ] ; then + PIDD_PROJECT_ROOT="${CI_SERVER_PROTOCOL}\ +://${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD}@${CI_SERVER_FQDN}" + if [ -n "${CI_PROJECT_NAMESPACE}" ] ; then + PIDD_PROJECT_PATH="${CI_PROJECT_NAMESPACE}" + if [ -n "${CI_PROJECT_NAME}" ] ; then + PIDD_PROJECT_NAME="${CI_PROJECT_NAME}" + else + pidd_error_ci "CI_PROJECT_NAME" + fi + else + pidd_error_ci "CI_PROJECT_NAMESPACE" + fi + else + pidd_error_ci "CI_SERVER_FQDN" + fi + else + pidd_error_ci "CI_REGISTRY_PASSWORD" + fi + else + pidd_error_ci "CI_REGISTRY_USER" + fi else - pidd_error_ci "CI_SERVER_URL" - fi - if [ -n "${CI_PROJECT_PATH}" ] ; then - PIDD_PROJECTS_GROUP="$(dirname "${CI_PROJECT_PATH}")" - PIDD_PROJECT_NAME="$(basename "${CI_PROJECT_PATH}")" - else - pidd_error_ci "CI_PROJECT_PATH" + pidd_error_ci "CI_SERVER_PROTOCOL" fi if [ -n "${CI_COMMIT_BRANCH}" ] ; then PIDD_PROJECT_BRANCH="${CI_COMMIT_BRANCH}" @@ -388,20 +411,16 @@ Acquire::https::Verify-Peer False; # unsupported pidd_error_ci "ø" fi - [ -n "${PIDD_SERVER_URL}" ] || pidd_error_ci "PIDD_SERVER_URL" - [ -n "${PIDD_PROJECTS_GROUP}" ] || pidd_error_ci "PIDD_PROJECTS_GROUP" + [ -n "${PIDD_PROJECT_ROOT}" ] || pidd_error_ci "PIDD_PROJECT_ROOT" + [ -n "${PIDD_PROJECT_PATH}" ] || pidd_error_ci "PIDD_PROJECT_PATH" [ -n "${PIDD_PROJECT_NAME}" ] || pidd_error_ci "PIDD_PROJECT_NAME" [ -n "${PIDD_PROJECT_BRANCH}" ] || pidd_error_ci "PIDD_PROJECT_BRANCH" # - PIDD_PROJECTS_URL="${PIDD_SERVER_URL}/${PIDD_PROJECTS_GROUP}" - # pidd_split pidd_echo "PIDD_CA" pidd_split - pidd_echo "PIDD_SERVER_URL" \ - "PIDD_PROJECTS_GROUP" "PIDD_PROJECT_NAME" "PIDD_PROJECT_BRANCH" - pidd_split - pidd_echo "PIDD_PROJECTS_URL" + pidd_echo "PIDD_PROJECT_ROOT" \ + "PIDD_PROJECT_PATH" "PIDD_PROJECT_NAME" "PIDD_PROJECT_BRANCH" # TODO move to Python case "${PIDD_PM}" in "${PIDD_PM_APK}"|"${PIDD_PM_APT}") PIDD_PKG_SSH="openssh-client" ;; @@ -482,6 +501,11 @@ pidd_set_packages_configuration () { # agnostic steps +pidd_list_environment_variables () { + pidd_step "List environment variables" + env | sort +} + pidd_list_working_directory () { pidd_step "List working directory" pidd_list_working_directory__path="$(realpath .)" @@ -590,10 +614,18 @@ pidd_install_python_modules () { pidd_install_python_modules__root="$(mktemp --directory)" || exit echo "→ ${pidd_install_python_modules__root}" for pidd_install_python_modules__repository \ - in "${PIDD_GIT_CHILD}" "${PIDD_GIT_PARENT}" ; do - pidd_split + in "${PIDD_GIT_MAIN}" "${PIDD_GIT_ROOT}" ; do + case "${pidd_install_python_modules__repository}" in + http*) pidd_install_python_modules__url="\ +${pidd_install_python_modules__repository}" ;; + /*) pidd_install_python_modules__url="\ +${PIDD_PROJECT_ROOT}${pidd_install_python_modules__repository}" ;; + *) pidd_install_python_modules__url="\ +${PIDD_PROJECT_ROOT}/${PIDD_PROJECT_PATH}/${pidd_install_python_modules__repository}" ;; + esac pidd_install_python_modules__url="\ -${PIDD_PROJECTS_URL}/${pidd_install_python_modules__repository}" +${PIDD_PROJECT_ROOT}/${PIDD_PROJECT_PATH}/${pidd_install_python_modules__repository}" + pidd_split echo "\ ${pidd_install_python_modules__url} ↓" @@ -622,8 +654,11 @@ ${PIDD_PYTHON_PACKAGES}" pidd_write_python_module () { pidd_step "Write Python module" - for pidd_write_python_module__variable \ - in OPEN DOWN VERT SPLT __UP SHUT OS_ID OS_VERSION ; do + for pidd_write_python_module__variable in \ + OPEN DOWN VERT SPLT __UP SHUT \ + OS_ID OS_VERSION \ + PROJECT_ROOT PROJECT_PATH PROJECT_NAME \ + ; do pidd_write_python_module__value="\ $(pidd_echo "PIDD_${pidd_write_python_module__variable}")" pidd_write_python_module__text="${pidd_write_python_module__text}\ @@ -637,11 +672,12 @@ PIDD_STEP = $((PIDD_STEP+1)) pidd_switch_to_python () { pidd_step "Switch to Python" + pidd_switch_to_python__name="$(basename "${PIDD_GIT_MAIN}")" echo "\ ${PIDD_PATH} ↓ -${PIDD_PYTHON_PACKAGES}/${PIDD_GIT_CHILD}" - "${PIDD_PYTHON_ALIAS}" -m "${PIDD_GIT_CHILD}" "${@}" +${PIDD_PYTHON_PACKAGES}/${pidd_switch_to_python__name}" + "${PIDD_PYTHON_ALIAS}" -m "${pidd_switch_to_python__name}" "${@}" } # functions @@ -658,6 +694,7 @@ pidd_cat () { pidd_echo () { if [ -n "${1}" ] ; then for pidd_echo__name in "${@}" ; do + pidd_echo__text="" eval "pidd_echo__text=\"\${${pidd_echo__name}}\"" echo "${pidd_echo__name} = \"${pidd_echo__text}\"" done diff --git a/readme.md b/readme.md index 6b0a038..c027b78 100644 --- a/readme.md +++ b/readme.md @@ -43,8 +43,8 @@ from various contexts of CA, CI and OCI / OS. |:----------------|:------------------------|:--------------------------------| | PIDD_CA_n | Numbered CA certificate | | | PIDD_DNS | Space separated servers | 9.9.9.9 | -| PIDD_GIT_CHILD | Child Git repository | pidd | -| PIDD_GIT_PARENT | Parent Git repository | rwx | +| PIDD_GIT_MAIN | Main Git repository | pidd | +| PIDD_GIT_ROOT | Root Git repository | rwx | | PIDD_SSH_HOSTS | domain.tld ssh-type pub | | | PIDD_SSH_KEY | SSH private key | | | PIDD_URL_ALMA | Alma repository URL | https://repo.almalinux.org | @@ -93,7 +93,5 @@ from various contexts of CA, CI and OCI / OS. ### .sh -* handle git cloning credentials -* override repository and framework locations * reduce single conditions with && * support opensuse