/ 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'