@@ -76,12 +76,36 @@ func getRepoEditOptionFromRepo(repo *repo_model.Repository) *api.EditRepoOption
76
76
allowFastForwardOnly = config .AllowFastForwardOnly
77
77
}
78
78
archived := repo .IsArchived
79
+ hasProjects := false
80
+ var projectsMode * string
81
+ if unit , err := repo .GetUnit (db .DefaultContext , unit_model .TypeProjects ); err == nil && unit != nil {
82
+ hasProjects = true
83
+ pm := string (unit .ProjectsConfig ().ProjectsMode )
84
+ projectsMode = & pm
85
+ }
86
+ hasCode := repo .UnitEnabled (db .DefaultContext , unit_model .TypeCode )
87
+ hasPackages := repo .UnitEnabled (db .DefaultContext , unit_model .TypePackages )
88
+ hasReleases := repo .UnitEnabled (db .DefaultContext , unit_model .TypeReleases )
89
+ hasActions := false
90
+ if unit , err := repo .GetUnit (db .DefaultContext , unit_model .TypeActions ); err == nil && unit != nil {
91
+ hasActions = true
92
+ // TODO: expose action config of repo to api
93
+ // actionsConfig = &api.RepoActionsConfig{
94
+ // DisabledWorkflows: unit.ActionsConfig().DisabledWorkflows,
95
+ // }
96
+ }
79
97
return & api.EditRepoOption {
80
98
Name : & name ,
81
99
Description : & description ,
82
100
Website : & website ,
83
101
Private : & private ,
84
102
HasIssues : & hasIssues ,
103
+ HasProjects : & hasProjects ,
104
+ ProjectsMode : projectsMode ,
105
+ HasCode : & hasCode ,
106
+ HasPackages : & hasPackages ,
107
+ HasReleases : & hasReleases ,
108
+ HasActions : & hasActions ,
85
109
ExternalTracker : externalTracker ,
86
110
InternalTracker : internalTracker ,
87
111
HasWiki : & hasWiki ,
@@ -108,6 +132,11 @@ func getNewRepoEditOption(opts *api.EditRepoOption) *api.EditRepoOption {
108
132
private := ! * opts .Private
109
133
hasIssues := ! * opts .HasIssues
110
134
hasWiki := ! * opts .HasWiki
135
+ hasProjects := ! * opts .HasProjects
136
+ hasCode := ! * opts .HasCode
137
+ hasPackages := ! * opts .HasPackages
138
+ hasReleases := ! * opts .HasReleases
139
+ hasActions := ! * opts .HasActions
111
140
defaultBranch := "master"
112
141
hasPullRequests := ! * opts .HasPullRequests
113
142
ignoreWhitespaceConflicts := ! * opts .IgnoreWhitespaceConflicts
@@ -125,6 +154,11 @@ func getNewRepoEditOption(opts *api.EditRepoOption) *api.EditRepoOption {
125
154
DefaultBranch : & defaultBranch ,
126
155
HasIssues : & hasIssues ,
127
156
HasWiki : & hasWiki ,
157
+ HasProjects : & hasProjects ,
158
+ HasCode : & hasCode ,
159
+ HasPackages : & hasPackages ,
160
+ HasReleases : & hasReleases ,
161
+ HasActions : & hasActions ,
128
162
HasPullRequests : & hasPullRequests ,
129
163
IgnoreWhitespaceConflicts : & ignoreWhitespaceConflicts ,
130
164
AllowMerge : & allowMerge ,
@@ -156,6 +190,11 @@ func TestAPIRepoEdit(t *testing.T) {
156
190
157
191
// Test editing a repo1 which user2 owns, changing name and many properties
158
192
origRepoEditOption := getRepoEditOptionFromRepo (repo1 )
193
+ assert .True (t , * origRepoEditOption .HasCode )
194
+ assert .True (t , * origRepoEditOption .HasPackages )
195
+ assert .True (t , * origRepoEditOption .HasProjects )
196
+ assert .True (t , * origRepoEditOption .HasReleases )
197
+ assert .True (t , * origRepoEditOption .HasActions )
159
198
repoEditOption := getNewRepoEditOption (origRepoEditOption )
160
199
req := NewRequestWithJSON (t , "PATCH" , fmt .Sprintf ("/api/v1/repos/%s/%s" , user2 .Name , repo1 .Name ), & repoEditOption ).
161
200
AddTokenAuth (token2 )
@@ -177,6 +216,11 @@ func TestAPIRepoEdit(t *testing.T) {
177
216
assert .Equal (t , * repoEditOption .Archived , * repo1editedOption .Archived )
178
217
assert .Equal (t , * repoEditOption .Private , * repo1editedOption .Private )
179
218
assert .Equal (t , * repoEditOption .HasWiki , * repo1editedOption .HasWiki )
219
+ assert .Equal (t , * repoEditOption .HasCode , * repo1editedOption .HasCode )
220
+ assert .Equal (t , * repoEditOption .HasPackages , * repo1editedOption .HasPackages )
221
+ assert .Equal (t , * repoEditOption .HasProjects , * repo1editedOption .HasProjects )
222
+ assert .Equal (t , * repoEditOption .HasReleases , * repo1editedOption .HasReleases )
223
+ assert .Equal (t , * repoEditOption .HasActions , * repo1editedOption .HasActions )
180
224
181
225
// Test editing repo1 to use internal issue and wiki (default)
182
226
* repoEditOption .HasIssues = true
@@ -224,6 +268,11 @@ func TestAPIRepoEdit(t *testing.T) {
224
268
assert .Equal (t , * repo1editedOption .ExternalTracker , * repoEditOption .ExternalTracker )
225
269
assert .True (t , * repo1editedOption .HasWiki )
226
270
assert .Equal (t , * repo1editedOption .ExternalWiki , * repoEditOption .ExternalWiki )
271
+ assert .False (t , * repo1editedOption .HasCode )
272
+ assert .False (t , * repo1editedOption .HasPackages )
273
+ assert .False (t , * repo1editedOption .HasProjects )
274
+ assert .False (t , * repo1editedOption .HasReleases )
275
+ assert .False (t , * repo1editedOption .HasActions )
227
276
228
277
repoEditOption .ExternalTracker .ExternalTrackerStyle = "regexp"
229
278
repoEditOption .ExternalTracker .ExternalTrackerRegexpPattern = `(\d+)`
@@ -272,6 +321,11 @@ func TestAPIRepoEdit(t *testing.T) {
272
321
assert .NotNil (t , * repo1editedOption .ExternalTracker )
273
322
assert .True (t , * repo1editedOption .HasWiki )
274
323
assert .NotNil (t , * repo1editedOption .ExternalWiki )
324
+ assert .False (t , * repo1editedOption .HasCode )
325
+ assert .False (t , * repo1editedOption .HasPackages )
326
+ assert .False (t , * repo1editedOption .HasProjects )
327
+ assert .False (t , * repo1editedOption .HasReleases )
328
+ assert .False (t , * repo1editedOption .HasActions )
275
329
276
330
// reset repo in db
277
331
req = NewRequestWithJSON (t , "PATCH" , fmt .Sprintf ("/api/v1/repos/%s/%s" , user2 .Name , * repoEditOption .Name ), & origRepoEditOption ).
0 commit comments