@@ -4,9 +4,25 @@ import (
4
4
"encoding/json"
5
5
6
6
"github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
7
+ "github.com/devfile/api/v2/pkg/attributes"
8
+ )
9
+
10
+ const (
11
+ GitHubConversionFromAttributeValue = "GitHub"
7
12
)
8
13
9
14
func convertProjectTo_v1alpha2 (src * Project , dest * v1alpha2.Project ) error {
15
+ // Convert Github type projects in v1alpha1 to Git-type projects in v1alpha2, since Github was dropped
16
+ if src .Github != nil {
17
+ src .Git = & GitProjectSource {
18
+ GitLikeProjectSource : src .Github .GitLikeProjectSource ,
19
+ }
20
+ if dest .Attributes == nil {
21
+ dest .Attributes = attributes.Attributes {}
22
+ }
23
+ dest .Attributes .PutString (ConvertedFromAttribute , GitHubConversionFromAttributeValue )
24
+ }
25
+
10
26
jsonProject , err := json .Marshal (src )
11
27
if err != nil {
12
28
return err
@@ -15,6 +31,7 @@ func convertProjectTo_v1alpha2(src *Project, dest *v1alpha2.Project) error {
15
31
if err != nil {
16
32
return err
17
33
}
34
+
18
35
var sparseCheckoutDir string
19
36
switch {
20
37
case src .Git != nil :
@@ -25,6 +42,12 @@ func convertProjectTo_v1alpha2(src *Project, dest *v1alpha2.Project) error {
25
42
if sparseCheckoutDir != "" {
26
43
dest .SparseCheckoutDirs = []string {sparseCheckoutDir }
27
44
}
45
+
46
+ // Make sure we didn't modify underlying src struct
47
+ if src .Github != nil {
48
+ src .Git = nil
49
+ }
50
+
28
51
return nil
29
52
}
30
53
@@ -51,10 +74,33 @@ func convertProjectFrom_v1alpha2(src *v1alpha2.Project, dest *Project) error {
51
74
dest .Zip .SparseCheckoutDir = sparseCheckoutDir
52
75
}
53
76
}
77
+
78
+ // Check if a Git-type project was originally a Github-type project in v1alpha1
79
+ if src .Git != nil && src .Attributes != nil {
80
+ convertedFrom := src .Attributes .GetString (ConvertedFromAttribute , nil )
81
+ if convertedFrom == GitHubConversionFromAttributeValue {
82
+ dest .Github = & GithubProjectSource {
83
+ GitLikeProjectSource : dest .Git .GitLikeProjectSource ,
84
+ }
85
+ dest .Git = nil
86
+ }
87
+ }
88
+
54
89
return nil
55
90
}
56
91
57
92
func convertStarterProjectTo_v1alpha2 (src * StarterProject , dest * v1alpha2.StarterProject ) error {
93
+ // Convert Github type projects in v1alpha1 to Git-type projects in v1alpha2, since Github was dropped
94
+ if src .Github != nil {
95
+ src .Git = & GitProjectSource {
96
+ GitLikeProjectSource : src .Github .GitLikeProjectSource ,
97
+ }
98
+ if dest .Attributes == nil {
99
+ dest .Attributes = attributes.Attributes {}
100
+ }
101
+ dest .Attributes .PutString (ConvertedFromAttribute , GitHubConversionFromAttributeValue )
102
+ }
103
+
58
104
jsonProject , err := json .Marshal (src )
59
105
if err != nil {
60
106
return err
@@ -74,6 +120,11 @@ func convertStarterProjectTo_v1alpha2(src *StarterProject, dest *v1alpha2.Starte
74
120
dest .SubDir = src .Zip .SparseCheckoutDir
75
121
}
76
122
123
+ // Make sure we didn't modify underlying src struct
124
+ if src .Github != nil {
125
+ src .Git = nil
126
+ }
127
+
77
128
return nil
78
129
}
79
130
@@ -96,5 +147,16 @@ func convertStarterProjectFrom_v1alpha2(src *v1alpha2.StarterProject, dest *Star
96
147
}
97
148
}
98
149
150
+ // Check if a Git-type project was originally a Github-type project in v1alpha1
151
+ if src .Git != nil && src .Attributes != nil {
152
+ convertedFrom := src .Attributes .GetString (ConvertedFromAttribute , nil )
153
+ if convertedFrom == GitHubConversionFromAttributeValue {
154
+ dest .Github = & GithubProjectSource {
155
+ GitLikeProjectSource : dest .Git .GitLikeProjectSource ,
156
+ }
157
+ dest .Git = nil
158
+ }
159
+ }
160
+
99
161
return nil
100
162
}
0 commit comments