Возможность пробного запуска: как сделать функцию, которая печатает либо команды, либо выполняет их


1

Будем благодарны за любые альтернативные предложения о том, как добавить пробный запуск.

Я пытаюсь создать функцию, которая работает в режиме «всухую» или в режиме реального времени.

например (псевдокод):

function do-stuff() {
   dry_run_or_real 
   brew install java
   for x in dir ; do echo $x ; done
}

function dry_run_or_real() {
   if [ ! -z "$GLOBAL_DRY_RUN" ] ; then 
      echo "We would do this:$*"
   else 
      # we are actually running the code
      $* 
   fi
}

Если установлен GLOBAL_DRY_RUN, это текст:

We would do this:
brew install java
for x in dir ; do echo $x ; done

НО вышеуказанные команды не будут выполнены.

Большим ограничением является то, что тело do-stuff должно иметь только минимальные изменения для поддержки кода пробного запуска:

  1. у нас будет много, много вспомогательных функций

  2. Функции будут добавлены и отредактированы неопытными разработчиками, поэтому, возможно, что-нибудь сложное будет сломано.


Не совсем понятно, какова ваша цель. Ваш пример просто потребует, чтобы автор функции предоставил тест. Кроме того, способ, которым вы вкладываете это, усложнит контроль. Ваш do-stuff понадобится что-то вроде if(dry_run_or_real()){return;} просто "прервать" выполнение. Вы не можете реально влиять на внешний слой вложения. Таким образом, вы не сможете «фактически запустить код» в своей тестовой функции.
Seth
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.