/ Barf.default
Barf.default
  1  #!/usr/bin/env bar
  2  # -*- mode: sh; sh-shell: bash -*-
  3  # vim: set ft=bash:
  4  # shellcheck shell=bash
  5  # shellcheck disable=SC2016
  6  
  7  #
  8  # This is the default Barf rule file shipped with bar.
  9  # It enables almost all bells and whistles here and implements some opinionated defaults.
 10  # Please customize it for your project.
 11  #
 12  # the rules here ideally compose from std_rules and your custom rules.
 13  #
 14  
 15  # default/MAIN
 16  rule lints tests doc build
 17  
 18  # faster checking, can be used standalone or with 'watch'
 19  rule fastchk: --conclusive is_git_release_branch? lints tests doc
 20  rule fastchk: --conclusive is_git_main_branch? lints tests doc
 21  rule fastchk: --conclusive is_git_devel_branch? lints
 22  rule fastchk: --conclusive is_git_feature_branch? lint_sources
 23  rule fastchk: --conclusive is_git_bugfix_branch? lint_sources
 24  rule fastchk: --conclusive is_git_hotfix_branch? lint_sources tests
 25  rule fastchk: --conclusive is_git_improvement_branch? lint_sources
 26  rule fastchk: --conclusive is_git_doc_branch? lint_docs
 27  rule fastchk: --conclusive is_git_wip_branch? lint_sources
 28  rule fastchk: --conclusive is_git_experimental_branch? lint_sources
 29  rule fastchk: lints tests doc
 30  
 31  # automatically format fix code as much as possible and do a check
 32  rule dwim: fmt fix fastchk
 33  
 34  # rules using this should be responsible to do only work that is necessary.
 35  rule PREPROCESS: fetch_resources build_assets
 36  
 37  # commits and merges to release branches
 38  rule pre-commit: is_git_release_branch? release_commit
 39  rule pre-merge-commit: is_git_release_branch? release_commit
 40  rule commit-msg: is_git_release_branch? release_commit_results
 41  
 42  rule release_commit: main_commit 'memodb_schedule bench'
 43  rule release_commit_results: main_commit_results 'memodb_result bench'
 44  
 45  # commits and merges to the main branch
 46  rule pre-commit: is_git_main_branch? main_commit
 47  rule pre-merge-commit: is_git_main_branch? main_commit
 48  rule commit-msg: is_git_main_branch? main_commit_results
 49  
 50  rule main_commit: \
 51       devel_commit \
 52       'memodb_schedule audit' \
 53       'memodb_schedule doc' \
 54       'memodb_schedule build'
 55  rule main_commit_results: \
 56       devel_commit_results \
 57       'memodb_result audit' \
 58       'memodb_result doc' \
 59       'memodb_result build'
 60  
 61  # commits and merges to devel branches
 62  rule pre-commit: is_git_devel_branch? devel_commit
 63  rule pre-merge-commit: is_git_devel_branch? devel_commit
 64  rule commit-msg: is_git_devel_branch? devel_commit_results
 65  
 66  rule devel_commit: \
 67       feature_commit \
 68       'memodb_schedule tests' \
 69       'memodb_schedule test_expensive'
 70  rule devel_commit_results: \
 71       feature_commit_results \
 72       'memodb_result tests' \
 73       'memodb_result test_expensive'
 74  
 75  # commits and merges to feature branches
 76  rule pre-commit: is_git_feature_branch? feature_commit
 77  rule pre-merge-commit: is_git_feature_branch? feature_commit
 78  rule commit-msg: is_git_feature_branch? feature_commit_results
 79  
 80  rule feature_commit: \
 81       lints \
 82       'memodb_schedule test_units'
 83  rule feature_commit_results: \
 84       'memodb_result test_units'
 85  
 86  # commits and merges to bugfix branches
 87  rule pre-commit: is_git_bugfix_branch? devel_commit
 88  rule pre-merge-commit: is_git_bugfix_branch? devel_commit
 89  rule commit-msg: is_git_bugfix_branch? devel_commit_results
 90  
 91  # commits and merges to hotfix branches
 92  rule pre-commit: is_git_hotfix_branch? devel_commit
 93  rule pre-merge-commit: is_git_hotfix_branch? devel_commit
 94  rule commit-msg: is_git_hotfix_branch? devel_commit_results
 95  
 96  # commits and merges to improvement branches
 97  rule pre-commit: is_git_improvement_branch? devel_commit
 98  rule pre-merge-commit: is_git_improvement_branch? devel_commit
 99  rule commit-msg: is_git_improvement_branch? devel_commit_results
100  
101  rule pre-commit: is_git_doc_branch? lint_docs
102  rule pre-merge-commit: is_git_doc_branch? lint_docs
103  
104  rule pre-commit: is_git_wip_branch? feature_commit
105  rule pre-merge-commit: is_git_wip_branch? feature_commit
106  rule commit-msg: is_git_wip_branch? feature_commit_results
107  
108  rule pre-commit: is_git_experimental_branch? feature_commit
109  rule pre-merge-commit: is_git_experimental_branch? feature_commit
110  rule commit-msg: is_git_experimental_branch? feature_commit_results
111  
112  # called by githook, create temporary testdir and run the main rule there
113  rule SETUP: 'called_as? pre-commit' testdir_enter
114  rule SETUP: 'called_as? pre-merge-commit' testdir_enter
115  rule SETUP: 'called_as? prepare-commit-msg' testdir_enter
116  rule SETUP: 'called_as? commit-msg' testdir_enter
117  
118  rule activate: \
119       'githook_enable~ pre-commit'\
120       'githook_enable~ pre-merge-commit'\
121       'githook_enable~ prepare-commit-msg'\
122       'githook_enable~ commit-msg'