@@ -966,6 +966,16 @@ pub fn construct_ruleset(branch_protection: &rust_team_data::v1::BranchProtectio
966966
967967 let mut rules: Vec < RulesetRule > = Vec :: new ( ) ;
968968
969+ // Add deletion protection if requested
970+ if branch_protection. prevent_deletion {
971+ rules. push ( RulesetRule :: Deletion ) ;
972+ }
973+
974+ // Add non-fast-forward protection if requested
975+ if branch_protection. prevent_force_push {
976+ rules. push ( RulesetRule :: NonFastForward ) ;
977+ }
978+
969979 // Add pull request rule if PRs are required
970980 if let BranchProtectionMode :: PrRequired {
971981 required_approvals, ..
@@ -1003,29 +1013,39 @@ pub fn construct_ruleset(branch_protection: &rust_team_data::v1::BranchProtectio
10031013 } ) ;
10041014 }
10051015
1006- // Enable merge queue with default settings
1007- rules. push ( RulesetRule :: MergeQueue {
1008- parameters : MergeQueueParameters {
1009- check_response_timeout_minutes : 360 ,
1010- grouping_strategy : MergeQueueGroupingStrategy :: Allgreen ,
1011- max_entries_to_build : 5 ,
1012- max_entries_to_merge : 5 ,
1013- merge_method : MergeQueueMergeMethod :: Merge ,
1014- min_entries_to_merge : 0 ,
1015- min_entries_to_merge_wait_minutes : 0 ,
1016- } ,
1017- } ) ;
1016+ if branch_protection. merge_queue {
1017+ // Enable merge queue with default settings
1018+ rules. push ( RulesetRule :: MergeQueue {
1019+ parameters : MergeQueueParameters {
1020+ check_response_timeout_minutes : 360 ,
1021+ grouping_strategy : MergeQueueGroupingStrategy :: Allgreen ,
1022+ max_entries_to_build : 5 ,
1023+ max_entries_to_merge : 5 ,
1024+ merge_method : MergeQueueMergeMethod :: Merge ,
1025+ min_entries_to_merge : 0 ,
1026+ min_entries_to_merge_wait_minutes : 0 ,
1027+ } ,
1028+ } ) ;
1029+ }
10181030
1019- // TODO: Add bypass actors based on allowed_merge_teams and merge_bots
1020- // This would require fetching team IDs, which needs more integration
1031+ // Build bypass actors from app IDs
1032+ let bypass_actors: Vec < RulesetBypassActor > = branch_protection
1033+ . bypass_app_ids
1034+ . iter ( )
1035+ . map ( |& app_id| RulesetBypassActor {
1036+ actor_id : app_id,
1037+ actor_type : RulesetActorType :: Integration ,
1038+ bypass_mode : RulesetBypassMode :: Always ,
1039+ } )
1040+ . collect ( ) ;
10211041
10221042 api:: Ruleset {
10231043 id : None ,
10241044 name : format ! ( "Ruleset for {}" , branch_protection. pattern) ,
10251045 target : RulesetTarget :: Branch ,
10261046 source_type : RulesetSourceType :: Repository ,
10271047 enforcement : RulesetEnforcement :: Active ,
1028- bypass_actors : Some ( vec ! [ ] ) ,
1048+ bypass_actors : Some ( bypass_actors ) ,
10291049 conditions : RulesetConditions {
10301050 ref_name : RulesetRefNameCondition {
10311051 include : vec ! [ convert_branch_pattern_to_ref_pattern(
0 commit comments