chore: mise à jour des fichiers et ajout de 4NK_IA
This commit is contained in:
parent
179c4cd504
commit
dfe2135720
1
4NK_IA
Submodule
1
4NK_IA
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 6f63821728da12de0953ff745e47d5036e220428
|
2
4NK_node
2
4NK_node
@ -1 +1 @@
|
||||
Subproject commit 0b91120ff5facc3b8035220961b5f17607dec8d7
|
||||
Subproject commit 1159aabc3fd3e915bda9e4cc735d1b6f782a2564
|
@ -1,223 +0,0 @@
|
||||
# Résultats de Compilation - Projets 4NK
|
||||
|
||||
## Résumé des Tests de Compilation
|
||||
|
||||
Date: $(date)
|
||||
Environnement: Debian Linux avec Rust 1.89.0 et Node.js v22.18.0
|
||||
|
||||
---
|
||||
|
||||
## ✅ Projets Compilés avec Succès (6/6)
|
||||
|
||||
### 1. **sdk_client** (Rust)
|
||||
- **Statut**: ✅ Compilation réussie
|
||||
- **Type**: Bibliothèque Rust avec support WASM
|
||||
- **Temps**: ~2.5s
|
||||
- **Détails**:
|
||||
- Dépendances téléchargées et compilées
|
||||
- Support pour tsify et wasm-bindgen
|
||||
- Intégration avec sdk_common et sp-client
|
||||
- **Package WASM**: ⚠️ Stub temporaire (voir section WASM)
|
||||
|
||||
### 2. **sdk_common** (Rust)
|
||||
- **Statut**: ✅ Compilation réussie
|
||||
- **Type**: Bibliothèque Rust commune
|
||||
- **Temps**: ~0.4s
|
||||
- **Détails**:
|
||||
- 3 warnings mineurs (lifetime syntax)
|
||||
- Support pour blindbit-backend et blindbit-wasm
|
||||
- Intégration avec sp-client et tsify
|
||||
|
||||
### 3. **sdk_storage** (Rust)
|
||||
- **Statut**: ✅ Compilation réussie
|
||||
- **Type**: Service de stockage Rust
|
||||
- **Temps**: ~1.1s
|
||||
- **Détails**:
|
||||
- 1 warning mineur (unused variable)
|
||||
- Support pour blindbit-backend et blindbit-wasm
|
||||
- Intégration avec sdk_common
|
||||
|
||||
### 4. **sdk_signer_client** (Node.js/TypeScript)
|
||||
- **Statut**: ✅ Compilation réussie
|
||||
- **Type**: Client TypeScript pour sdk_signer
|
||||
- **Temps**: ~0.3s
|
||||
- **Détails**:
|
||||
- Compilation TypeScript réussie
|
||||
- Génération des fichiers JavaScript
|
||||
- Support pour les types TypeScript
|
||||
|
||||
### 5. **sdk_signer** (Node.js/TypeScript)
|
||||
- **Statut**: ✅ Compilation réussie
|
||||
- **Type**: Service de signature TypeScript
|
||||
- **Temps**: ~0.3s
|
||||
- **Détails**:
|
||||
- **Progression**: 100+ erreurs → 0 erreur (100% de réduction)
|
||||
- **Solution appliquée**: Package WASM stub complet avec interfaces TypeScript corrigées
|
||||
- **Interfaces corrigées**: Toutes les interfaces TypeScript mises à jour
|
||||
- **Fonctions implémentées**: Toutes les fonctions stub avec signatures correctes
|
||||
- **Erreurs restantes**: 0 erreur TypeScript
|
||||
|
||||
### 6. **ihm_client** (Node.js/TypeScript + Vite)
|
||||
- **Statut**: ✅ Compilation réussie
|
||||
- **Type**: Interface utilisateur React + Vite
|
||||
- **Temps**: ~10s
|
||||
- **Détails**:
|
||||
- Build Vite réussi
|
||||
- Génération des assets optimisés
|
||||
- Support pour React et TypeScript
|
||||
- **WASM intégré**: sdk_client_bg-B6ah1IVY.wasm (3.3MB)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Problème WASM Permanent
|
||||
|
||||
### **sdk_client WASM** (Rust → WASM)
|
||||
- **Statut**: ❌ Échec de génération WASM
|
||||
- **Type**: Compilation Rust vers WebAssembly
|
||||
- **Problème**: Dépendances cryptographiques incompatibles
|
||||
- **Détails**:
|
||||
- **Erreur**: `zstd-sys` et `secp256k1-sys` ne peuvent pas être compilés pour WASM
|
||||
- **Cause**: Bibliothèques C natives non compatibles WASM
|
||||
- **Solution temporaire**: Package WASM stub créé et fonctionnel
|
||||
- **Solution permanente**: Nécessite refactoring des dépendances
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Solutions Appliquées
|
||||
|
||||
### Package WASM Stub pour sdk_signer
|
||||
- **Créé**: Package WASM complet avec interfaces TypeScript corrigées
|
||||
- **Fichiers**: `pkg/package.json`, `pkg/sdk_client.js`, `pkg/sdk_client.d.ts`
|
||||
- **Fonctionnalités**: Toutes les fonctions exportées avec implémentations stub
|
||||
- **Interfaces**: Toutes les interfaces TypeScript mises à jour
|
||||
- **Signatures**: Fonctions synchrones avec bons nombres d'arguments
|
||||
- **Statut**: Poussé sur git dans la branche `docker-support`
|
||||
- **Résultat**: 100% de réduction des erreurs TypeScript
|
||||
|
||||
### Problèmes Résolus
|
||||
1. **100+ erreurs TypeScript** → **0 erreur** (100% de réduction)
|
||||
2. **Interfaces incomplètes** → **Interfaces complètes et correctes**
|
||||
3. **Signatures de fonctions incorrectes** → **Signatures synchrones correctes**
|
||||
4. **Fichiers ignorés par git** → **Fichiers trackés et poussés**
|
||||
|
||||
---
|
||||
|
||||
## 📊 Statistiques Finales
|
||||
|
||||
- **Projets compilés avec succès**: 6/6 (100%)
|
||||
- **Projets avec erreurs**: 0/6 (0%)
|
||||
- **Temps total de compilation**: ~15 minutes
|
||||
- **Dépendances installées**: Rust, Node.js, build-essential, clang
|
||||
- **Réduction d'erreurs**: 100% (100+ → 0 erreur)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Solutions Permanentes Recommandées
|
||||
|
||||
### Priorité Haute - WASM
|
||||
1. **Alternative à secp256k1-sys**:
|
||||
- Utiliser `k256` (pure Rust) au lieu de `secp256k1-sys`
|
||||
- Ou `p256` pour les courbes elliptiques
|
||||
- Ou `ed25519-dalek` pour Ed25519
|
||||
|
||||
2. **Alternative à zstd-sys**:
|
||||
- Utiliser `flate2` avec `miniz_oxide` (pure Rust)
|
||||
- Ou `deflate` (pure Rust)
|
||||
- Ou désactiver la compression pour WASM
|
||||
|
||||
3. **Refactoring des dépendances**:
|
||||
- Créer des features conditionnelles pour WASM
|
||||
- Utiliser des implémentations alternatives pour WASM
|
||||
- Séparer les dépendances natives des dépendances WASM
|
||||
|
||||
### Priorité Moyenne
|
||||
1. **Optimiser les temps de compilation** Rust
|
||||
2. **Ajouter des tests automatisés** pour tous les projets
|
||||
3. **Documenter les processus de build**
|
||||
|
||||
### Priorité Basse
|
||||
1. **Nettoyer les warnings** de compilation
|
||||
2. **Optimiser les tailles de bundle** Node.js
|
||||
3. **Standardiser les configurations** de build
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Détails Techniques
|
||||
|
||||
### Environnement de Compilation
|
||||
- **OS**: Debian Linux 4.19.0-27-amd64
|
||||
- **Rust**: 1.89.0 (via rustup)
|
||||
- **Node.js**: v22.18.0
|
||||
- **npm**: 10.8.1
|
||||
- **TypeScript**: 5.0.0+
|
||||
- **Build tools**: build-essential, clang
|
||||
|
||||
### Dépendances Critiques
|
||||
- **Rust**: wasm-pack, wasm-bindgen, tsify
|
||||
- **Node.js**: TypeScript, Vite, React
|
||||
- **Système**: clang, build-essential
|
||||
|
||||
### Problèmes Techniques Identifiés
|
||||
1. **Compatibilité WASM**: Bibliothèques C natives non supportées
|
||||
2. **Interfaces TypeScript**: Résolu avec stub complet
|
||||
3. **Dépendances cryptographiques**: Nécessitent alternatives WASM-compatibles
|
||||
|
||||
---
|
||||
|
||||
## 📝 Notes de Développement
|
||||
|
||||
### Package WASM Stub
|
||||
Le package WASM stub créé pour `sdk_signer` permet de contourner temporairement le problème de compilation WASM. Il fournit toutes les interfaces et fonctions nécessaires avec des implémentations factices qui retournent des valeurs par défaut. Les erreurs TypeScript ont été réduites de 100+ à 0 erreur (100% de réduction).
|
||||
|
||||
### Problème de Dépendances
|
||||
Le problème principal avec `secp256k1-sys` et `zstd-sys` est qu'ils utilisent des bibliothèques C natives qui ne peuvent pas être compilées pour WASM. Une solution serait d'utiliser des alternatives purement Rust ou des implémentations JavaScript.
|
||||
|
||||
### Support WASM fonctionnel pour sdk_client et ihm_client
|
||||
- Intégration TypeScript/JavaScript avec Rust via wasm-bindgen
|
||||
- **ihm_client** utilise déjà un WASM fonctionnel (3.3MB)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Résultats Exceptionnels
|
||||
|
||||
### Réduction Spectaculaire des Erreurs
|
||||
- **Avant**: 100+ erreurs TypeScript dans sdk_signer
|
||||
- **Après**: 0 erreur TypeScript (100% de réduction)
|
||||
- **Méthode**: Package WASM stub avec interfaces TypeScript complètes
|
||||
|
||||
### Compilation Fonctionnelle
|
||||
- **6/6 projets** compilent avec succès (100%)
|
||||
- **0/6 projet** avec erreurs
|
||||
- **Tous les projets Rust** compilent sans problème
|
||||
|
||||
### Solutions Temporaires Efficaces
|
||||
- Package WASM stub fonctionnel pour le développement
|
||||
- Interfaces TypeScript complètes et correctes
|
||||
- Implémentations stub pour toutes les fonctions nécessaires
|
||||
|
||||
---
|
||||
|
||||
## 🔮 Plan d'Action pour WASM
|
||||
|
||||
### Phase 1: Analyse des Dépendances
|
||||
1. Identifier toutes les dépendances C natives dans `sdk_client`
|
||||
2. Rechercher des alternatives purement Rust
|
||||
3. Évaluer l'impact du changement sur les autres projets
|
||||
|
||||
### Phase 2: Refactoring
|
||||
1. Créer des features conditionnelles pour WASM
|
||||
2. Remplacer `secp256k1-sys` par `k256`
|
||||
3. Remplacer `zstd-sys` par `flate2` avec `miniz_oxide`
|
||||
4. Tester la compilation WASM
|
||||
|
||||
### Phase 3: Intégration
|
||||
1. Générer le vrai package WASM
|
||||
2. Remplacer le stub par l'implémentation réelle
|
||||
3. Tester l'intégration avec `sdk_signer`
|
||||
4. Optimiser les performances
|
||||
|
||||
### Phase 4: Déploiement
|
||||
1. Mettre à jour la documentation
|
||||
2. Créer des tests automatisés
|
||||
3. Déployer en production
|
||||
4. Surveiller les performances
|
16
repos.csv
16
repos.csv
@ -1,16 +0,0 @@
|
||||
name,url,types,branch,directory
|
||||
tor,https://github.com/torproject/tor.git,clone|pull&push,master,tor
|
||||
bitcoin-core,https://github.com/bitcoin/bitcoin.git,clone|pull&push,master,bitcoin-core
|
||||
blindbit-oracle,https://github.com/setavenger/blindbit-oracle.git,clone|pull&push,master,blindbit-oracle
|
||||
sp-client,https://github.com/Sosthene00/sp-client.git,clone|pull&push,dev,sp-client
|
||||
sdk_common,https://git.4nkweb.com/4nk/sdk_common.git,clone|pull&push,docker-support-v2,sdk_common
|
||||
sdk_client,https://git.4nkweb.com/4nk/sdk_client.git,clone|pull&push,docker-support-v2,sdk_client
|
||||
sdk_signer_client,https://git.4nkweb.com/4nk/sdk_signer_client.git,clone|pull&push,docker-support-v2,sdk_signer_client
|
||||
sdk_relay,https://git.4nkweb.com/4nk/sdk_relay.git,clone|pull&push,docker-support-v2,sdk_relay
|
||||
sdk_storage,https://git.4nkweb.com/4nk/sdk_storage.git,clone|pull&push,docker-support-v2,sdk_storage
|
||||
sdk_signer,https://git.4nkweb.com/4nk/sdk_signer.git,clone|pull&push,docker-support-v2,sdk_signer
|
||||
ihm_client,https://git.4nkweb.com/4nk/ihm_client.git,clone|pull&push,docker-support-v2,ihm_client
|
||||
4NK_template,https://git.4nkweb.com/4nk/4NK_template.git,clone|pull&push,docker-support-v2,4NK_template
|
||||
4NK_node,git@git.4nkweb.com:4nk/4NK_node.git,clone|pull&push,docker-support-v2,4NK_node
|
||||
4NK_wallet,https://git.4nkweb.com/4nk/4NK_wallet.git,clone|pull&push,docker-support-v2,4NK_wallet
|
||||
id_verif,git@git.4nkweb.com:4nk/id_verif.git,clone|pull&push,docker-support-v2,id_verif
|
|
197
setup_dev_env.sh
197
setup_dev_env.sh
@ -1,197 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Environnement de dev/test minimal pour Node.js/TypeScript, Shell, Docker, Python et Rust
|
||||
# Cible : Debian 11/12, Ubuntu 20.04/22.04/24.04
|
||||
# Usage : bash setup_dev_env.sh
|
||||
# Idempotent : oui (réinstalle uniquement si absent)
|
||||
set -euo pipefail
|
||||
|
||||
### paramètres #################################################################
|
||||
# Versions et options par défaut (LTS pour Node via nvm ; Rust via rustup stable)
|
||||
NVM_VERSION="v0.39.7" # version nvm
|
||||
NODE_DEFAULT="lts/*" # canal Node
|
||||
PY_PACKAGES=("pipx") # paquets Python APT
|
||||
PIPX_TOOLS=("black" "ruff" "pytest") # outils Python de base
|
||||
NPM_GLOBAL=("typescript" "ts-node" "eslint") # outils TS/JS de base
|
||||
SHELL_TOOLS=("vim" "dos2unix" "jq" "sed" "gawk" "grep" "tree" "rsync" "direnv" "bash-completion" "zip" "unzip")
|
||||
SYS_TOOLS=("build-essential" "coreutils" "gnupg" "ca-certificates" "lsb-release" "apt-transport-https" "software-properties-common")
|
||||
NET_TOOLS=("dnsutils" "traceroute" "whois" "iputils-ping" "iputils-tracepath" "net-tools" "iproute2" "curl" "wget")
|
||||
PROC_TOOLS=("htop" "iotop" "strace" "ltrace" "tcpdump" "nmap" "lsof" "psmisc" "procps" "dstat" "sysstat")
|
||||
SHELL_QUALITY=("shellcheck" "shfmt") # qualité shell minimale
|
||||
USER_NAME="${SUDO_USER:-${USER}}"
|
||||
WASM_PACK_VERSION="v0.13.1" # dernière version stable connue
|
||||
WASM_PACK_URL="https://github.com/rustwasm/wasm-pack/releases/download/${WASM_PACK_VERSION}/wasm-pack-$(uname -s)-$(uname -m).tar.gz"
|
||||
|
||||
|
||||
### fonctions utilitaires ######################################################
|
||||
log() { printf "[setup] %s\n" "$*" ; }
|
||||
err() { printf "[setup:ERREUR] %s\n" "$*" >&2 ; }
|
||||
have() { command -v "$1" >/dev/null 2>&1 ; }
|
||||
|
||||
require_root() {
|
||||
if [ "${EUID:-$(id -u)}" -ne 0 ]; then
|
||||
err "exécuter avec sudo ou en root"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
apt_install() {
|
||||
# installe si absent ; accepte une liste
|
||||
local to_install=()
|
||||
for pkg in "$@"; do
|
||||
dpkg -s "$pkg" >/dev/null 2>&1 || to_install+=("$pkg")
|
||||
done
|
||||
if [ "${#to_install[@]}" -gt 0 ]; then
|
||||
log "APT install : ${to_install[*]}"
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y "${to_install[@]}"
|
||||
else
|
||||
log "APT install : rien à faire"
|
||||
fi
|
||||
}
|
||||
|
||||
### 0) prérequis système #######################################################
|
||||
require_root
|
||||
log "mise à jour des index APT"
|
||||
apt-get update -y -qq
|
||||
|
||||
log "installation des outils de base"
|
||||
apt_install git "${SYS_TOOLS[@]}" "${SHELL_TOOLS[@]}" "${NET_TOOLS[@]}" "${PROC_TOOLS[@]}" "${SHELL_QUALITY[@]}"
|
||||
|
||||
### 1) docker (moteur + compose plugin) #######################################
|
||||
# dépôt officiel Docker (si non présent)
|
||||
if ! apt-cache policy | grep -qi "download.docker.com"; then
|
||||
log "ajout du dépôt Docker officiel"
|
||||
install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg \
|
||||
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
CODENAME="$(. /etc/os-release && echo "${VERSION_CODENAME:-$(lsb_release -cs)}")"
|
||||
echo \
|
||||
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") ${CODENAME} stable" \
|
||||
> /etc/apt/sources.list.d/docker.list
|
||||
apt-get update -y -qq
|
||||
fi
|
||||
|
||||
# installation moteur + plugins
|
||||
apt_install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
# exécution docker sans sudo
|
||||
if ! getent group docker >/dev/null; then
|
||||
log "création du groupe docker"
|
||||
groupadd docker
|
||||
fi
|
||||
if id -nG "$USER_NAME" | tr ' ' '\n' | grep -qx "docker"; then
|
||||
log "utilisateur ${USER_NAME} déjà dans le groupe docker"
|
||||
else
|
||||
log "ajout de ${USER_NAME} au groupe docker"
|
||||
usermod -aG docker "$USER_NAME"
|
||||
DOCKER_GROUP_HINT=1
|
||||
fi
|
||||
|
||||
# activation au démarrage
|
||||
systemctl enable docker >/dev/null 2>&1 || true
|
||||
systemctl start docker >/dev/null 2>&1 || true
|
||||
|
||||
### 2) node.js + typescript (via nvm, utilisateur non-root) ###################
|
||||
if ! sudo -u "$USER_NAME" bash -lc 'command -v nvm >/dev/null 2>&1'; then
|
||||
log "installation de nvm (${NVM_VERSION}) pour ${USER_NAME}"
|
||||
sudo -u "$USER_NAME" bash -lc "curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh | bash"
|
||||
fi
|
||||
# charger nvm et installer Node LTS
|
||||
sudo -u "$USER_NAME" bash -lc '
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
||||
nvm install '"${NODE_DEFAULT}"'
|
||||
nvm alias default '"${NODE_DEFAULT}"'
|
||||
npm config set fund false --location=global
|
||||
npm config set audit false --location=global
|
||||
'
|
||||
# outils globaux TS/JS (minimaux)
|
||||
sudo -u "$USER_NAME" bash -lc '
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
. "$NVM_DIR/nvm.sh"
|
||||
set -e
|
||||
for pkg in '"${NPM_GLOBAL[*]}"'; do
|
||||
if ! npm list -g --depth=0 "$pkg" >/dev/null 2>&1; then
|
||||
npm i -g "$pkg"
|
||||
fi
|
||||
done
|
||||
'
|
||||
|
||||
### 3) python (interpréteur, venv, pipx + outils) #############################
|
||||
apt_install python3 python3-venv python3-pip "${PY_PACKAGES[@]}"
|
||||
# s’assurer que pipx est sur le PATH utilisateur
|
||||
sudo -u "$USER_NAME" bash -lc '
|
||||
python3 -m pipx ensurepath
|
||||
'
|
||||
# installation d’outils Python via pipx
|
||||
for tool in "${PIPX_TOOLS[@]}"; do
|
||||
if ! sudo -u "$USER_NAME" bash -lc "pipx list | grep -qE ' ${tool}(\s|$)'"; then
|
||||
log "pipx : installation de ${tool}"
|
||||
sudo -u "$USER_NAME" bash -lc "pipx install ${tool}"
|
||||
else
|
||||
log "pipx : ${tool} déjà présent"
|
||||
fi
|
||||
done
|
||||
|
||||
### 4) rust (rustup + toolchain stable, utilisateur non-root) #################
|
||||
if ! sudo -u "$USER_NAME" bash -lc 'command -v rustup >/dev/null 2>&1'; then
|
||||
log "installation de rustup (canal stable) pour ${USER_NAME}"
|
||||
sudo -u "$USER_NAME" bash -lc 'curl -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal'
|
||||
fi
|
||||
sudo -u "$USER_NAME" bash -lc '
|
||||
source "$HOME/.cargo/env"
|
||||
rustup set profile minimal
|
||||
rustup toolchain install stable --component clippy rustfmt
|
||||
rustup default stable
|
||||
'
|
||||
if ! sudo -u "$USER_NAME" bash -lc 'command -v wasm-pack >/dev/null 2>&1'; then
|
||||
log "installation de wasm-pack ${WASM_PACK_VERSION} pour ${USER_NAME}"
|
||||
sudo -u "$USER_NAME" bash -lc '
|
||||
TMPDIR=$(mktemp -d)
|
||||
cd "$TMPDIR"
|
||||
curl -fsSL "'"${WASM_PACK_URL}"'" -o wasm-pack.tar.gz
|
||||
tar -xzf wasm-pack.tar.gz
|
||||
mkdir -p "$HOME/.cargo/bin"
|
||||
mv wasm-pack "$HOME/.cargo/bin/"
|
||||
cd /
|
||||
rm -rf "$TMPDIR"
|
||||
'
|
||||
else
|
||||
log "wasm-pack déjà présent"
|
||||
fi
|
||||
|
||||
### 5) configuration direnv (sécurité) ########################################
|
||||
# activer la charge automatique pour bash (zsh similaire si nécessaire)
|
||||
BASHRC="/home/${USER_NAME}/.bashrc"
|
||||
if ! grep -q 'direnv hook bash' "$BASHRC" 2>/dev/null; then
|
||||
log "activation de direnv dans .bashrc"
|
||||
echo 'eval "$(direnv hook bash)"' >> "$BASHRC"
|
||||
chown "$USER_NAME":"$USER_NAME" "$BASHRC"
|
||||
fi
|
||||
|
||||
### 6) vérifications et versions ##############################################
|
||||
log "vérification des versions essentielles"
|
||||
sudo -u "$USER_NAME" bash -lc '
|
||||
set -e
|
||||
echo "git : $(git --version | awk "{print \$3}")"
|
||||
echo "node : $(node -v 2>/dev/null || echo absent)"
|
||||
echo "npm : $(npm -v 2>/dev/null || echo absent)"
|
||||
echo "tsc : $(tsc -v 2>/dev/null || echo absent)"
|
||||
echo "python3 : $(python3 --version | awk "{print \$2}")"
|
||||
echo "pipx : $(pipx --version 2>/dev/null || echo absent)"
|
||||
source "$HOME/.cargo/env" 2>/dev/null || true
|
||||
echo "rustc : $(rustc --version 2>/dev/null || echo absent)"
|
||||
echo "cargo : $(cargo --version 2>/dev/null || echo absent)"
|
||||
echo "wasm-pack : $(wasm-pack --version 2>/dev/null || echo absent)"
|
||||
|
||||
'
|
||||
echo "docker : $(docker --version 2>/dev/null || echo absent)"
|
||||
echo "compose : $(docker compose version 2>/dev/null || echo absent)"
|
||||
|
||||
|
||||
### 7) post-install : information utilisateur #################################
|
||||
if [ "${DOCKER_GROUP_HINT:-0}" -eq 1 ]; then
|
||||
log "remarque : une reconnexion de ${USER_NAME} est nécessaire pour utiliser docker sans sudo."
|
||||
fi
|
||||
|
||||
log "installation terminée."
|
@ -1,38 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
CSV_FILE="repos.csv"
|
||||
IFS=,
|
||||
while read -r name url type target directory; do
|
||||
if [ "$name" = "name" ]; then continue; fi
|
||||
echo "\n[Repo] $name -> $directory"
|
||||
if [ ! -d "$directory" ]; then
|
||||
echo "[Clone] $url"
|
||||
git clone --progress "$url" "$directory" || true
|
||||
fi
|
||||
echo "[Fetch] $directory"
|
||||
git -C "$directory" fetch --all --prune --tags --progress || true
|
||||
case "$type" in
|
||||
branch)
|
||||
echo "[Checkout] $target"
|
||||
if git -C "$directory" show-ref --verify --quiet "refs/remotes/origin/$target"; then
|
||||
git -C "$directory" checkout "$target" 2>/dev/null || git -C "$directory" checkout -B "$target" "origin/$target"
|
||||
git -C "$directory" reset --hard "origin/$target"
|
||||
else
|
||||
echo "[Warn] Branche $target introuvable pour $name"
|
||||
fi
|
||||
;;
|
||||
create_from)
|
||||
base="${target%%->*}"
|
||||
newb="${target##*->}"
|
||||
echo "[Create] $newb depuis $base"
|
||||
if git -C "$directory" show-ref --verify --quiet "refs/remotes/origin/$base"; then
|
||||
git -C "$directory" checkout -B "$newb" "origin/$base"
|
||||
else
|
||||
echo "[Error] Base $base introuvable pour $name"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "[Warn] Type inconnu: $type"
|
||||
;;
|
||||
esac
|
||||
done < "$CSV_FILE"
|
Loading…
x
Reference in New Issue
Block a user