krkr
6/20/2015 - 10:14 AM

Draws a diagram that shows the dependencies between docker images using http://yuml.me

Draws a diagram that shows the dependencies between docker images using http://yuml.me

#!/bin/bash
set -euo pipefail

repo=$1

dsl_text() {
  while read d; do \

    from=$(grep FROM $d | cut -d ' ' -f2)
    name=$(grep '##' $d | sed "s|##||g" | jq -r .name)

    echo "[$from]->[$repo/$name]" | sed "s|/|\/|g"

  done < <(find . -name Dockerfile)
}

dsl_text_encoded() {
  dsl_text | tr '\n' '+' \
    | sed -r \
      -e "s|\+|%2C\+|g" \
      -e "s|\[|%5B|g" -e "s|]|%5D|g" \
      -e "s|:|%3A|g" -e "s|>|%3E|g" \
      -e "s|&|%26|g" -e "s|#|%23|g" -e "s|;|%3B|g"
}

yumlme() {
  curl -s 'http://yuml.me/diagram/scruffy;dir:LR;scale:80/class/' \
    -H 'Origin: http://yuml.me' \
    -H 'Accept-Encoding: gzip, deflate' \
    -H 'Accept-Language: fr,en-US;q=0.8,en;q=0.6' \
    -H 'User-Agent: Mozilla/5.0 AppleWebKit/42 (KHTML, like Gecko) Chrome/42 Safari/42' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -H 'Accept: */*' \
    -H 'Referer: http://yuml.me/diagram/scruffy/class/draw' \
    -H 'X-Requested-With: XMLHttpRequest' \
    -H 'Connection: keep-alive' \
    --data 'dsl_text='$(dsl_text_encoded) \
    --compressed
}

main() {
  cmd=$(yumlme | sed -r "s|(.*).png|sensible-browser http://yuml.me/edit/\1|")
  echo "$cmd" && $cmd
}

main