Skip to content

Commit

Permalink
Merge pull request #3 from atarax/feature/support-private-repos
Browse files Browse the repository at this point in the history
Add repository visibility option, defaults to private repos
  • Loading branch information
kaessert authored Nov 1, 2023
2 parents 7f19710 + 5df0bf3 commit 99c260c
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 0 deletions.
3 changes: 3 additions & 0 deletions apis/organizations/v1alpha1/repository_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ type RepositoryParameters struct {

// Safeguard for accidental deletion
ForceDelete *bool `json:"forceDelete,omitempty"`

// Private sets the repository to private, if false it will be public
Private *bool `json:"private,omitempty"`
}

// RepositoryParameters are the configurable fields of a Repository.
Expand Down
5 changes: 5 additions & 0 deletions apis/organizations/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions internal/controller/repository/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,11 @@ func (c *external) Observe(ctx context.Context, mg resource.Managed) (managed.Ex
return notUpToDate, nil
}

privateCr := pointer.BoolDeref(cr.Spec.ForProvider.Private, true)
if privateCr != *repo.Private {
return notUpToDate, nil
}

cr.SetConditions(xpv1.Available())

return managed.ExternalObservation{
Expand Down Expand Up @@ -268,6 +273,7 @@ func (c *external) Create(ctx context.Context, mg resource.Managed) (managed.Ext
r := &github.Repository{
Name: &name,
Description: &cr.Spec.ForProvider.Description,
Private: cr.Spec.ForProvider.Private,
}

_, _, err := c.github.Repositories.Create(ctx, cr.Spec.ForProvider.Org, r)
Expand Down Expand Up @@ -364,11 +370,13 @@ func (c *external) Update(ctx context.Context, mg resource.Managed) (managed.Ext
name := meta.GetExternalName(cr)

archivedCr := pointer.BoolDeref(cr.Spec.ForProvider.Archived, false)
privateCr := pointer.BoolDeref(cr.Spec.ForProvider.Private, true)

_, _, err := c.github.Repositories.Edit(ctx, cr.Spec.ForProvider.Org, name, &github.Repository{
Name: &name,
Description: &cr.Spec.ForProvider.Description,
Archived: &archivedCr,
Private: &privateCr,
})
if err != nil {
return managed.ExternalUpdate{}, err
Expand Down
2 changes: 2 additions & 0 deletions internal/controller/repository/repository_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ var (
repo = "test-repo"
description = "desc"
archived = false
private = true

user1 = "test-user-1"
user1Role = "admin"
Expand Down Expand Up @@ -102,6 +103,7 @@ func githubRepository() *github.Repository {
Name: &repo,
Description: &description,
Archived: &archived,
Private: &private,
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,10 @@ spec:
type: object
type: array
type: object
private:
description: Private sets the repository to private, if false
it will be public
type: boolean
type: object
managementPolicies:
default:
Expand Down

0 comments on commit 99c260c

Please sign in to comment.