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.