@@ -19,11 +19,12 @@ type coderResourceFrontmatter struct {
1919
2020// coderResource represents a generic concept for a Terraform resource used to
2121// help create Coder workspaces. As of 2025-04-15, this encapsulates both
22- // Coder Modules and Coder Templates.
22+ // Coder Modules and Coder Templates. If the newReadmeBody and newFrontmatter
23+ // fields are nil, that represents that the file has been deleted
2324type coderResource struct {
2425 name string
2526 filePath string
26- readmeBody string
27+ newReadmeBody * string
2728 oldFrontmatter * coderResourceFrontmatter
2829 newFrontmatter * coderResourceFrontmatter
2930 oldIsVerified bool
@@ -124,7 +125,8 @@ func validateCoderResourceVerifiedStatus(oldVerified bool, newVerified bool, act
124125// Todo: once we decide on how we want the README frontmatter to be formatted
125126// for the Embedded Registry work, update this function to validate that the
126127// correct Terraform code snippets are included in the README and are actually
127- // valid Terraform
128+ // valid Terraform. Might also want to validate that each header follows proper
129+ // hierarchy (i.e., not jumping from h1 to h3 because you think it looks nicer)
128130func validateCoderResourceReadmeBody (body string ) error {
129131 trimmed := strings .TrimSpace (body )
130132 if ! strings .HasPrefix (trimmed , "# " ) {
@@ -133,6 +135,45 @@ func validateCoderResourceReadmeBody(body string) error {
133135 return nil
134136}
135137
136- func validateCoderResource (resource coderResource ) []error {
138+ func validateCoderResourceChanges (resource coderResource , actorOrgStatus github.OrgStatus ) []error {
139+ var problems []error
140+
141+ if resource .newReadmeBody != nil {
142+ if err := validateCoderResourceReadmeBody (* resource .newReadmeBody ); err != nil {
143+ problems = append (problems , addFilePathToError (resource .filePath , err ))
144+ }
145+ }
146+
147+ if resource .newFrontmatter != nil {
148+ if err := validateCoderResourceDisplayName (resource .newFrontmatter .DisplayName ); err != nil {
149+ problems = append (problems , addFilePathToError (resource .filePath , err ))
150+ }
151+ if err := validateCoderResourceDescription (resource .newFrontmatter .Description ); err != nil {
152+ problems = append (problems , addFilePathToError (resource .filePath , err ))
153+ }
154+ if err := validateCoderResourceTags (resource .newFrontmatter .Tags ); err != nil {
155+ problems = append (problems , addFilePathToError (resource .filePath , err ))
156+ }
157+ if err := validateCoderResourceVerifiedStatus (resource .oldIsVerified , resource .newIsVerified , actorOrgStatus ); err != nil {
158+ problems = append (problems , addFilePathToError (resource .filePath , err ))
159+ }
160+
161+ for _ , err := range validateCoderResourceIconURL (resource .newFrontmatter .IconURL ) {
162+ problems = append (problems , addFilePathToError (resource .filePath , err ))
163+ }
164+ }
165+
166+ return problems
167+ }
168+
169+ func parseCoderResourceFiles (oldReadmeFiles []readme , newReadmeFiles []readme ) (map [string ]coderResource , error ) {
170+ return nil , nil
171+ }
172+
173+ func validateCoderResourceRelativeUrls (map [string ]coderResource ) []error {
137174 return nil
138175}
176+
177+ func aggregateCoderResourceReadmeFiles () ([]readme , error ) {
178+ return nil , nil
179+ }
0 commit comments