Guest User

Untitled

a guest
Nov 12th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. #!/bin/sh
  2.  
  3. function parse_yaml() {
  4. local yaml_file=$1
  5. local prefix=$2
  6. local s
  7. local w
  8. local fs
  9.  
  10. s='[[:space:]]*'
  11. w='[a-zA-Z0-9_.-]*'
  12. fs="$(echo @|tr @ '\034')"
  13.  
  14. sed -e "/- [^\"][^\'].*:/s|\([ ]*\)- \($s\)|\1-\n \1\2|g" "$yaml_file" |
  15.  
  16. sed -ne '/^--/s|--||g; s|\"|\\\"|g; s/\s*$//g;' \
  17. -e "/#.*[\"\']/!s| #.*||g; /^#/s|#.*||g;" \
  18. -e "s|^\($s\)\($w\)$s:$s\"\(.*\)\"$s\$|\1$fs\2$fs\3|p" \
  19. -e "s|^\($s\)\($w\)$s[:-]$s\(.*\)$s\$|\1$fs\2$fs\3|p" |
  20.  
  21. awk -F"$fs" '{
  22. indent = length($1)/2;
  23. if (length($2) == 0) { conj[indent]="+";} else {conj[indent]="";}
  24. vname[indent] = $2;
  25. for (i in vname) {if (i > indent) {delete vname[i]}}
  26. if (length($3) > 0) {
  27. vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])("_")}
  28. printf("%s%s%s%s=(\"%s\")\n", "'"$prefix"'",vn, $2, conj[indent-1],$3);
  29. }
  30. }' |
  31.  
  32. sed -e 's/_=/+=/g' |
  33.  
  34. awk 'BEGIN {
  35. FS="=";
  36. OFS="="
  37. }
  38. /(-|\.).*=/ {
  39. gsub("-|\\.", "_", $1)
  40. }
  41. { print }'
  42. }
  43.  
  44. function create_variables() {
  45. local yaml_file="$1"
  46. eval "$(parse_yaml "$yaml_file")"
  47. }
  48.  
  49. function sep1()
  50. {
  51. echo '-------------------------------------------------------------------------'
  52. }
  53. function sep2()
  54. {
  55. echo '#########################################################################'
  56. }
  57. function info()
  58. {
  59. sep1
  60. echo "INFO - $(date +"%m-%d-%Y %H:%M") $@"
  61. sep1
  62. }
  63. function error()
  64. {
  65. sep1
  66. echo "ERROR - $(date +"%m-%d-%Y %H:%M") $@"
  67. sep1
  68. }
  69.  
  70. cmd()
  71. {
  72. local label="$1"
  73. local cmd="$2"
  74. local is_test="$3"
  75.  
  76. local lRC
  77. info "BEGIN - $label"
  78. echo "Commande: $cmd"
  79. [ -d "$md5_dir" ] || mkdir -p $md5_dir
  80. if [ -f "$md5_dir/$(echo "$label$cmd" |md5sum|awk '{print $1}')" -a -z "$is_test" ];then
  81. info "END - $label Skipped ..."
  82. return 0
  83. fi
  84. sep1
  85. eval $cmd
  86. lRC=$?
  87. sep1
  88. echo "Code retour: $lRC"
  89. if [ $lRC -ne 0 ]; then
  90. error "END - $label"
  91. return $lRC
  92. fi
  93. [ -z "$is_test" ] && touch $md5_dir/$(echo "$label$cmd"|md5sum|awk '{print $1}')
  94. info "END - $label"
  95. }
  96.  
  97. parse_conf()
  98. {
  99. local conf=$1
  100. create_variables $conf
  101. }
  102.  
  103. execute_tasks()
  104. {
  105. local label
  106. local cmd
  107. env|grep task
  108. for i in $(seq 1 10000); do
  109. task_label="$(eval "echo \${task${i}_label}")"
  110. task_cmd="$(eval "echo \${task${i}_command}")"
  111. task_is_test="$(eval "echo \${task${i}_is_test}")"
  112. if [ -z "$task_label" ];then
  113. break
  114. fi
  115. task_sudo="$(eval "echo \${task${i}_sudo_mode}")"
  116. if [ "$task_sudo" = "1" -o "$task_sudo" = "yes" -o "$task_sudo" = "YES" -o "$task_sudo" = "on" ];then
  117. task_cmd="sudo $task_cmd"
  118. fi
  119.  
  120. cmd "$i) $task_label" "$task_cmd" $task_is_test
  121. sep2
  122. done
  123. }
  124.  
  125. parse_conf $1
  126. execute_tasks
Add Comment
Please, Sign In to add comment