Проверка того, что проект компилируется перед отправкой на пульт управления версиями - PullRequest
1 голос
/ 23 февраля 2020

У меня есть скрипт для проектов TypeScript, который гарантирует, что мой код компилируется до того, как я отправлю его sh на удаленный компьютер:

simple_git_push_typescript(){
 (
    set -e

    top_level="$(git rev-parse --show-toplevel)"

    if [[ "$cm_ignore_tsc" != 'yes' ]]; then

        if [[ -f "$top_level/tsconfig.json" ]]; then
          (cd "$top_level" && tsc)  || { echo 'Could not compile with tsc. Did not push. Use "cm_ignore_tsc=yes" to override.'; exit 1; }
        fi
    fi

    git add -A

    if [[ "$cm_force_commit" == 'yes' ]]; then
       git commit --allow-empty -am "${1-tmp}"
    else
       git commit -am "${1-tmp}"  || echo 'Could not create new commit.';
    fi

    git push
 )
}

Этот скрипт работает очень хорошо, когда я перешел на код pu sh в мою ветвь функций в конце дня или непосредственно перед запросом на удаление - это помогает предотвратить ненужные коммиты, но также облегчает его.

С Go я просто хочу проверить, что все компилируется до Я делаю sh проект go на удаленном компьютере.

simple_git_push_go(){
  (
    set -e

    top_level="$(git rev-parse --show-toplevel)"

    (cd "$top_level" && go build -o '/dev/null' .)  # ?

     # ...
   )
}

- это Go сборка лучшего выбора для проверки на компиляцию всего моего проекта, или более общий c способ найти все go пакеты и скомпилировать каждый пакет? Я предполагаю, что для проектов, в которых есть несколько пакетов, которые не связаны друг с другом, вам придется проходить через каждый пакет и компилировать их отдельно?

1 Ответ

4 голосов
/ 23 февраля 2020

Используйте go build ./... в проекте root. Это вернется в подпапки на любой глубине.

Если вы также хотите, чтобы тестовые файлы также компилировались (и проходил тестирование), выполните: go test ./...

Обратите внимание, что папки начинаются с подчеркивание _ или точка . игнорируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...