## 🐳 Utilisation via Docker

### Build

```sh
docker build -t codex-env-tools .
```

### Run (exemples)

```sh
# Run l'outil comme un binaire
docker run --rm codex-env-tools start-app --app gitlab --token $TELEPORT_JOIN_TOKEN --workDir /tmp/work
docker run --rm codex-env-tools start-task 123 --gitlabToken $GITLAB_TOKEN --teleportToken $TELEPORT_JOIN_TOKEN
```
> **Avant-propos**: le dépôt local doit être propre (pas de modifications non enregistrées), sinon `start-task` échouera.
> **Règle de nommage**: feat/gl-<id>-<5 premiers mots normalisés et lowercase> (ex: feat/gl-42-add-user-authentication-flow)
> **Comportement si existant**: si une branche `feat/gl-<id>-...` existe déjà (locale ou distante), `start-task` émet un warning et bascule sur cette branche sans créer de nouveau commit.

### 🏷️ Build d'image et push registry (CI/CD)

Le Dockerfile est conçu pour être compatible direct avec un pipeline Gitlab :

```yaml
docker-build:
  stage: docker
  image: docker:24
  services:
    - docker:24-dind
  script:
    - echo "$CONTAINER_REGISTRY_PASSWORD" | docker login docker.io --username "$CONTAINER_REGISTRY_USERNAME" --password-stdin
    - VERSION=${CI_COMMIT_TAG:-0.0.0-build-${CI_COMMIT_SHORT_SHA:-${CI_COMMIT_SHA:0:8}}-$(date +%Y%m%d%H%M)}
    - IMAGE="docker.io/ftprod/ftprod-ai-tools"
    - docker build -t "$IMAGE:$VERSION" .
    - docker push "$IMAGE:$VERSION"
```

---


# Codex Env Tools

Outils CLI & librairie Node.js/TypeScript pour automatiser, orchestrer et piloter les environnements de dev, preprod et infra dans une stack moderne.

## 🚀 Vision

Ce projet vise à **centraliser les actions d'administration, de déploiement et de contrôle** de vos environnements, en facilitant l’automatisation, la sécurité et la reproductibilité. Task-runner/devops as code : interfaçable, extensible, pluggable (binaire, API, scripts...).

## ✨ Fonctionnalités principales (roadmap)

- Lancement de binaires CLI externes (terraform, kubectl, custom...)
- Déclenchement (et reporting) de déploiements ou de jobs CI/CD
- Démarrage de tâche Git à partir d’une issue GitLab (`start-task`)
- Lancement d’un Teleport application bot (`teleport-bot start-app`)
- Centralisation de templates/configs par environnements
- Extensible par vos propres “agents/tools” (voir [AGENTS.md](./AGENTS.md))
- Logging, orchestrations, tests, simulation

## 📦 Installation & Quickstart

### Avec pnpm (recommandé)

```sh
CI=true pnpm install --frozen-lockfile
pnpm run dev
```

### Avec npm

```sh
npm install --no-audit --no-fund
npm run dev
```

### Tests unitaires

```sh
# (après avoir installé jest/vitest)
pnpm test
```

## 🏃‍♂️ Quickstart

```sh
npm run build
```

### 💻 Commandes Qualimétrie
```sh
codex-env-tools qualimetrie:test      # tests & couverture
codex-env-tools qualimetrie:lint      # linting avec ESLint
codex-env-tools qualimetrie:security  # audit de sécurité (pnpm audit)
codex-env-tools qualimetrie:bom       # BOM licences
```

## 💡 Structure projet

Cf. [AGENTS.md](./AGENTS.md) pour la conception agents/plugins.

- `src/cli/` — Entrées CLI, routage commandes
- `src/services/` — Services métiers (exécution, remote, etc)
- `src/controllers/` — Orchestrateurs, gestion logic
- `src/config/` — Fichiers/env/configs partagés
- `src/utils/` — Fonctions utilitaires
- `src/types/` — Typage TS global

## 🧑‍💻 Développement

- Suivi ESLint, Prettier, TypeScript strict
- Démarrage rapide : npm run dev
- Ajoutez vos binaires, “agents”, plugins dans `src/services`/`src/controllers`

## ✅ Bonnes pratiques

- TypeScript typé sur tout
- Convention services/controllers/plugins
- Lint, format, CI
- Configuration centralisée
- Tests unitaires & e2e à venir (`tests/`)

pnpm run build
node dist/cli/index.js start-app \
--app    gitlab \
--token  xxxxxxx