#!/usr/bin/bash set -euo pipefail IFS=$'\n\t' SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" if [[ -d "${SCRIPT_DIR}/../../.git" ]] || [[ -f "${SCRIPT_DIR}/../../nodo/config/etc/mirrors.env" ]]; then REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)" else REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" fi if [[ -f "${REPO_ROOT}/nodo/config/etc/mirrors.env" ]]; then # shellcheck source=/dev/null source "${REPO_ROOT}/nodo/config/etc/mirrors.env" elif [[ -f "${REPO_ROOT}/config/etc/mirrors.env" ]]; then # shellcheck source=/dev/null source "${REPO_ROOT}/config/etc/mirrors.env" elif [[ -f "${REPO_ROOT}/etc/mirrors.env" ]]; then # shellcheck source=/dev/null source "${REPO_ROOT}/etc/mirrors.env" fi STAGING_DIR="${MIRRORS_STAGING_DIR:-$HOME/ipfs/staging}" get_dir_size() { local dir="$1" if [[ -d "${dir}" ]]; then du -sh "${dir}" 2>/dev/null | cut -f1 else echo "0 B" fi } main() { local format="${1:-table}" local force="${2:-}" local cache_file="/tmp/mxos-sizes-cache.json" if [[ "${format}" == "json" && "${force}" != "--force" && -f "${cache_file}" ]]; then local cache_age cache_age=$(($(date +%s) - $(stat -c %Y "${cache_file}"))) if (( cache_age < 14400 )); then cat "${cache_file}" return 0 fi fi local sz_f43_everything local sz_f44_everything local sz_f45_everything local sz_fedora_iso local sz_f43_iso local sz_f44_iso local sz_f45_iso local sz_centos_core local sz_centos_sigs local sz_centos_iso local sz_total local f43_ev_dir="${STAGING_DIR}/fedora/linux/releases/43/Everything" [[ -d "${f43_ev_dir}" ]] || f43_ev_dir="${STAGING_DIR}/fedora/releases/43/Everything" sz_f43_everything="$(get_dir_size "${f43_ev_dir}")" local f44_ev_dir="${STAGING_DIR}/fedora/linux/releases/44/Everything" [[ -d "${f44_ev_dir}" ]] || f44_ev_dir="${STAGING_DIR}/fedora/releases/44/Everything" sz_f44_everything="$(get_dir_size "${f44_ev_dir}")" local f45_ev_dir="${STAGING_DIR}/fedora/linux/development/45/Everything" [[ -d "${f45_ev_dir}" ]] || f45_ev_dir="${STAGING_DIR}/fedora/releases/45/Everything" sz_f45_everything="$(get_dir_size "${f45_ev_dir}")" local f43_iso_dir="${STAGING_DIR}/fedora/linux/releases/43/Server/x86_64/iso" [[ -d "${f43_iso_dir}" ]] || f43_iso_dir="${STAGING_DIR}/fedora/iso/43" sz_f43_iso="$(get_dir_size "${f43_iso_dir}")" local f44_iso_dir="${STAGING_DIR}/fedora/linux/releases/44/Server/x86_64/iso" [[ -d "${f44_iso_dir}" ]] || f44_iso_dir="${STAGING_DIR}/fedora/iso/44" sz_f44_iso="$(get_dir_size "${f44_iso_dir}")" local f45_iso_dir="${STAGING_DIR}/fedora/linux/development/45/Server/x86_64/iso" [[ -d "${f45_iso_dir}" ]] || f45_iso_dir="${STAGING_DIR}/fedora/iso/45" sz_f45_iso="$(get_dir_size "${f45_iso_dir}")" local fedora_dir="${STAGING_DIR}/fedora" sz_fedora="$(get_dir_size "${fedora_dir}")" sz_centos_core="$(get_dir_size "${STAGING_DIR}/centos-stream/10-stream")" sz_centos_sigs="$(get_dir_size "${STAGING_DIR}/centos-stream/SIGs/10-stream")" local c10_iso_dir="${STAGING_DIR}/centos-stream/10-stream/BaseOS/x86_64/iso" [[ -d "${c10_iso_dir}" ]] || c10_iso_dir="${STAGING_DIR}/centos-stream/10-stream/iso" sz_centos_iso="$(get_dir_size "${c10_iso_dir}")" sz_total="$(get_dir_size "${STAGING_DIR}")" if [[ "${format}" == "json" ]]; then cat << JSON { "fedora43_everything": { "path": "/ipns/mirrors.mx-os.mx/fedora/releases/43/Everything", "current_size": "${sz_f43_everything}", "estimate": "125 GB" }, "fedora44_everything": { "path": "/ipns/mirrors.mx-os.mx/fedora/releases/44/Everything", "current_size": "${sz_f44_everything}", "estimate": "125 GB" }, "fedora45_everything": { "path": "/ipns/mirrors.mx-os.mx/fedora/releases/45/Everything", "current_size": "${sz_f45_everything}", "estimate": "125 GB" }, "fedora": { "path": "/ipns/mirrors.mx-os.mx/fedora", "current_size": "${sz_fedora}", "estimate": "500 GB" }, "fedora43_iso": { "path": "/ipns/mirrors.mx-os.mx/fedora/iso/43", "current_size": "${sz_f43_iso}", "estimate": "8 GB" }, "fedora44_iso": { "path": "/ipns/mirrors.mx-os.mx/fedora/iso/44", "current_size": "${sz_f44_iso}", "estimate": "8 GB" }, "fedora45_iso": { "path": "/ipns/mirrors.mx-os.mx/fedora/iso/45", "current_size": "${sz_f45_iso}", "estimate": "10 GB" }, "centos_stream10": { "path": "/ipns/mirrors.mx-os.mx/centos-stream/10-stream", "current_size": "${sz_centos_core}", "estimate": "80 GB" }, "centos_stream10_sigs": { "path": "/ipns/mirrors.mx-os.mx/centos-stream/SIGs/10-stream", "current_size": "${sz_centos_sigs}", "estimate": "25 GB" }, "centos_stream10_iso": { "path": "/ipns/mirrors.mx-os.mx/centos-stream/10-stream/iso", "current_size": "${sz_centos_iso}", "estimate": "12 GB" }, "total": { "path": "/ipns/mirrors.mx-os.mx", "current_size": "${sz_total}", "estimate": "600 GB" } } JSON elif [[ "${format}" == "update-readme" || "${format}" == "--update-readme" ]]; then local readme_file="${REPO_ROOT}/README.rst" echo "==> Actualizando tamaños medidos en ${readme_file}..." SZ_F43="${sz_f43_everything}" \ SZ_F44="${sz_f44_everything}" \ SZ_F45="${sz_f45_everything}" \ SZ_FEDORA="${sz_fedora}" \ SZ_F43_ISO="${sz_f43_iso}" \ SZ_F44_ISO="${sz_f44_iso}" \ SZ_F45_ISO="${sz_f45_iso}" \ SZ_CENTOS_CORE="${sz_centos_core}" \ SZ_CENTOS_SIGS="${sz_centos_sigs}" \ SZ_CENTOS_ISO="${sz_centos_iso}" \ SZ_TOTAL="${sz_total}" \ perl -i -pe ' if ($target_var) { s/^(\s+-\s+).*/${1}$ENV{$target_var}/; undef $target_var; } if (/ipfs pin add .*\/releases\/43\/Everything/) { $target_var = "SZ_F43"; } elsif (/ipfs pin add .*\/releases\/44\/Everything/) { $target_var = "SZ_F44"; } elsif (/ipfs pin add .*\/development\/45\/Everything/) { $target_var = "SZ_F45"; } elsif (/ipfs pin add .*\/fedora`/) { $target_var = "SZ_FEDORA"; } elsif (/ipfs pin add .*\/43\/Server\/x86_64\/iso/) { $target_var = "SZ_F43_ISO"; } elsif (/ipfs pin add .*\/44\/Server\/x86_64\/iso/) { $target_var = "SZ_F44_ISO"; } elsif (/ipfs pin add .*\/45\/Server\/x86_64\/iso/) { $target_var = "SZ_F45_ISO"; } elsif (/ipfs pin add .*\/centos-stream\/10-stream`/) { $target_var = "SZ_CENTOS_CORE"; } elsif (/ipfs pin add .*\/centos-stream\/SIGs\/10-stream/) { $target_var = "SZ_CENTOS_SIGS"; } elsif (/ipfs pin add .*\/centos-stream\/10-stream\/BaseOS\/x86_64\/iso/) { $target_var = "SZ_CENTOS_ISO"; } elsif (/ipfs pin add \/ipns\/mirrors\.mx-os\.mx`/) { $target_var = "SZ_TOTAL"; } ' "${readme_file}" echo "==> Recompilando documentación HTML..." "${SCRIPT_DIR}/mxos-build-html.bash" echo "==> Actualización completada." else cat << TABLE ==================================================================================================== Módulos de Enclavillado Comunitario (IPFS) Directorio de staging: ${STAGING_DIR} ==================================================================================================== Módulo Ruta IPNS Actual Estimado ---------------------------------------------------------------------------------------------------- 1. Fedora 43 Everything /ipns/mirrors.mx-os.mx/fedora/releases/43/... ${sz_f43_everything:-0B} ~125 GB 2. Fedora 44 Everything /ipns/mirrors.mx-os.mx/fedora/releases/44/... ${sz_f44_everything:-0B} ~125 GB 3. Fedora 45 Everything /ipns/mirrors.mx-os.mx/fedora/releases/45/... ${sz_f45_everything:-0B} ~125 GB 4. Fedora /ipns/mirrors.mx-os.mx/fedora ${sz_fedora:-0B} ~500 GB 5. Fedora 43 ISO /ipns/mirrors.mx-os.mx/fedora/iso/43 ${sz_f43_iso:-0B} ~8 GB 6. Fedora 44 ISO /ipns/mirrors.mx-os.mx/fedora/iso/44 ${sz_f44_iso:-0B} ~8 GB 7. Fedora 45 ISO /ipns/mirrors.mx-os.mx/fedora/iso/45 ${sz_f45_iso:-0B} ~10 GB 8. CentOS Stream 10 /ipns/mirrors.mx-os.mx/centos-stream/10-stream ${sz_centos_core:-0B} ~80 GB 9. CentOS Stream 10 SIGs /ipns/mirrors.mx-os.mx/centos-stream/SIGs/... ${sz_centos_sigs:-0B} ~25 GB 10. CentOS Stream 10 ISO /ipns/mirrors.mx-os.mx/centos-stream/10-s... ${sz_centos_iso:-0B} ~12 GB 11. Módulo Raíz /ipns/mirrors.mx-os.mx ${sz_total:-0B} ~600 GB ==================================================================================================== TABLE fi } main "$@"