Skip to content

Commit

Permalink
Merge pull request #205 from barrywhart/fix-issue-183-disabling-a-bra…
Browse files Browse the repository at this point in the history
…nch-type-never-gets-fixed

Fix multiple bugs in handling of branch_types.enabled
  • Loading branch information
DrFaust92 authored May 17, 2024
2 parents fac6dcc + 00b93d7 commit 1e43554
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions bitbucket/resource_branching_model.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ type BranchModel struct {
}

type BranchType struct {
Enabled bool `json:"enabled,omitempty"`
// TRICKY: This is a pointer to a bool because the API omits the field if
// it is true. json.Unmarshal treats a missing field as false, so we need to
// handle this case explicitly.
Enabled *bool `json:"enabled"`
Kind string `json:"kind,omitempty"`
Prefix string `json:"prefix,omitempty"`
}
Expand Down Expand Up @@ -181,7 +184,7 @@ func resourceBranchingModelsRead(ctx context.Context, d *schema.ResourceData, m
if err != nil {
return diag.FromErr(err)
}
branchingModelsReq, _ := client.Get(fmt.Sprintf("2.0/repositories/%s/%s/branching-model", owner, repo))
branchingModelsReq, _ := client.Get(fmt.Sprintf("2.0/repositories/%s/%s/branching-model/settings", owner, repo))

if branchingModelsReq.StatusCode == http.StatusNotFound {
log.Printf("[WARN] Branching Model (%s) not found, removing from state", d.Id())
Expand All @@ -206,6 +209,14 @@ func resourceBranchingModelsRead(ctx context.Context, d *schema.ResourceData, m
return diag.FromErr(decodeerr)
}

// Set default value for Enabled if it is nil
for _, branchType := range branchingModel.BranchTypes {
if branchType.Enabled == nil {
defaultTrue := true
branchType.Enabled = &defaultTrue
}
}

log.Printf("[DEBUG] Branching Model Response Decoded: %#v", branchingModel)

d.Set("owner", owner)
Expand Down Expand Up @@ -302,11 +313,6 @@ func flattenBranchModel(rp *BranchModel, typ string) []interface{} {
"name": rp.Name,
}

// if production branch is disabled it wont show up in response and will show up without the proerty if enabled
if typ == "production" {
m["enabled"] = true
}

return []interface{}{m}
}

Expand All @@ -333,7 +339,7 @@ func expandBranchTypes(tfList *schema.Set) []*BranchType {
}

if v, ok := tfMap["enabled"].(bool); ok {
bt.Enabled = v
bt.Enabled = &v
}

branchTypes = append(branchTypes, bt)
Expand All @@ -359,7 +365,7 @@ func flattenBranchTypes(branchTypes []*BranchType) []interface{} {
branchType := map[string]interface{}{
"kind": btRaw.Kind,
"prefix": btRaw.Prefix,
"enabled": true,
"enabled": btRaw.Enabled,
}

tfList = append(tfList, branchType)
Expand Down

0 comments on commit 1e43554

Please sign in to comment.