← retour aux snippets

tsort: ordonner des dépendances simplement

Calculer un ordre topologique à partir de paires (dépendant -> dépendance).

objectif

Déterminer un ordre d’exécution/compilation à partir de relations de dépendances.

code minimal

# chaque ligne: A B signifie 'A dépend de B'
cat <<'EOF' | tsort
build app
test build
deploy test
EOF

utilisation

# générer des paires depuis un fichier (format simple 'target: dep1 dep2')
awk -F: '/:/{t=$1; for(i=2;i<=NF;i++){gsub(/^ +| +$/,"",$i); if($i) print t,$i}}' deps.txt | tsort

variante(s) utile(s)

# appliquer sur un graphe de migrations
awk '{print $1,$2}' migrations.edges | tsort > order.txt

notes

  • tsort échoue si cycles; cassez les boucles avant.
  • outil sous-estimé pour des pipelines simples.