|
| 1 | +function get_current_branch_protection_setting() { |
| 2 | + gh api --method GET repos/${OWNER}/${REPO}/branches/${BRANCH}/protection | jq ' |
| 3 | + { |
| 4 | + required_status_checks: null, |
| 5 | + restrictions: { |
| 6 | + users: .restrictions.users | [.[].login], |
| 7 | + teams: .restrictions.teams | [.[].slug], |
| 8 | + apps: .restrictions.apps | [.[].slug] |
| 9 | + }, |
| 10 | + enforce_admins: .enforce_admins.enabled , |
| 11 | + required_pull_request_reviews: { |
| 12 | + dismiss_stale_reviews: .required_pull_request_reviews.dismiss_stale_reviews, |
| 13 | + require_code_owner_reviews: .required_pull_request_reviews.require_code_owner_reviews, |
| 14 | + required_approving_review_count: .required_pull_request_reviews.required_approving_review_count |
| 15 | + }, |
| 16 | + required_linear_history: .required_linear_history.enabled, |
| 17 | + required_signatures: .required_signatures.enabled, |
| 18 | + allow_force_pushes: .allow_force_pushes.enabled, |
| 19 | + allow_deletions: .allow_deletions.enabled, |
| 20 | + block_reations: .block_creations.enabled, |
| 21 | + required_conversation_resolution: .required_conversation_resolution.enabled |
| 22 | + }' |
| 23 | +} |
| 24 | + |
| 25 | +function apply_branch_protection_setting() { |
| 26 | + gh api --method PUT -H "Accept: application/vnd.github+json" --input - repos/${OWNER}/${REPO}/branches/${BRANCH}/protection |
| 27 | +} |
| 28 | + |
| 29 | +function enfore_admins_off() { |
| 30 | + get_current_branch_protection_setting | jq '.enforce_admins = false' | apply_branch_protection_setting |
| 31 | +} |
| 32 | + |
| 33 | +export -f enfore_admins_off |
| 34 | + |
| 35 | +function enfore_admins_on() { |
| 36 | + get_current_branch_protection_setting | jq '.enforce_admins = true' | apply_branch_protection_setting |
| 37 | +} |
| 38 | + |
| 39 | +export -f enfore_admins_on |
0 commit comments