такое ощущение, что изобретаю велосипед
Nov. 21st, 2014 03:22 pmпонадобилось тут на работе написать, условно говоря, Запускатель Скриптов (написанных на разных ЯП)
вот типа у нас есть много разных скриптов, одни на Петоне, другие на Перле, третьи на (допустим, ага, разбежался) Скале
у каждого скрипта есть какое-то количество именнованных входных параметров (типа строка, для простоты)
и каждый скрипт выдает как результат тоже некоторое специфичное для него количество именованных результатов типа строка
каждый скрипт может зависеть от произвольного количество других этих скриптов
нужно написать Запускатель Скриптов, который будет делать две вещи
1. проверять консистентность всего набора скриптов - что все зависимости имеются в наличии и входящие-выходящие отверстия для передачи данных - совпадают количество и именами
например, отсекать ситуацию когда
скрипт1 зависит от скрипта7, а скрипта7 не существует
или когда скрипт7 существует но выдает 2 выходных результата, а скрип1 требует 3 входных
или когда скрипт7 выдает результат КастомерНейм а скрипт1 требует входной параметр КастомерЭйдж
2. собственно, запускать скрипты, в правильной последовательности, обеспечивая передачу данных между ними
Естественная, первая мысль - для каждого скрипт обязать наличие файлика с таким же именем, как сам скрипт, но с расширением .json, где вся необходимая информация создателями скрипта декларировалась бы, то есть, какие входные данные, какие выходные, и какие зависимости, плюс еще до кучи общий дескрипшен и путь к программе исполнителю, типа (e.g. /usr/bin/python)
А само использование, типа: создавать временный уникальный директорий (скажем UnixTimetick_GUID), там создавать файлики типа script1_input1.txr, script1_input2.txt, etc.. , куда писать сами значения аргументов, а потом уже сами скрипты читают эти файлики, и результаты работы записавают в script1_result1.txt, script1_resutl2.txt. Иными словами, передача аргументов между скриптами через файлы с уникальным и говорящим именем. Будет собираться много ботвы, но ее по началу даже не стирать, а оставлять для дальнейшего расследования и дебага, и только уже когда все хорошо работает, стирать их.
Все это я только подумываю сделать, но не оставляет ощущение, что все это уже есть и не надо изобретать велосипед....
please comment
вот типа у нас есть много разных скриптов, одни на Петоне, другие на Перле, третьи на (допустим, ага, разбежался) Скале
у каждого скрипта есть какое-то количество именнованных входных параметров (типа строка, для простоты)
и каждый скрипт выдает как результат тоже некоторое специфичное для него количество именованных результатов типа строка
каждый скрипт может зависеть от произвольного количество других этих скриптов
нужно написать Запускатель Скриптов, который будет делать две вещи
1. проверять консистентность всего набора скриптов - что все зависимости имеются в наличии и входящие-выходящие отверстия для передачи данных - совпадают количество и именами
например, отсекать ситуацию когда
скрипт1 зависит от скрипта7, а скрипта7 не существует
или когда скрипт7 существует но выдает 2 выходных результата, а скрип1 требует 3 входных
или когда скрипт7 выдает результат КастомерНейм а скрипт1 требует входной параметр КастомерЭйдж
2. собственно, запускать скрипты, в правильной последовательности, обеспечивая передачу данных между ними
Естественная, первая мысль - для каждого скрипт обязать наличие файлика с таким же именем, как сам скрипт, но с расширением .json, где вся необходимая информация создателями скрипта декларировалась бы, то есть, какие входные данные, какие выходные, и какие зависимости, плюс еще до кучи общий дескрипшен и путь к программе исполнителю, типа (e.g. /usr/bin/python)
А само использование, типа: создавать временный уникальный директорий (скажем UnixTimetick_GUID), там создавать файлики типа script1_input1.txr, script1_input2.txt, etc.. , куда писать сами значения аргументов, а потом уже сами скрипты читают эти файлики, и результаты работы записавают в script1_result1.txt, script1_resutl2.txt. Иными словами, передача аргументов между скриптами через файлы с уникальным и говорящим именем. Будет собираться много ботвы, но ее по началу даже не стирать, а оставлять для дальнейшего расследования и дебага, и только уже когда все хорошо работает, стирать их.
Все это я только подумываю сделать, но не оставляет ощущение, что все это уже есть и не надо изобретать велосипед....
please comment