• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

moosetechnology / GitProjectHealth / 17262821407

27 Aug 2025 09:26AM UTC coverage: 73.322% (-1.6%) from 74.896%
17262821407

push

github

web-flow
Merge pull request #223 from moosetechnology/develop

Update main

1000 of 2102 new or added lines in 33 files covered. (47.57%)

28 existing lines in 2 files now uncovered.

18579 of 25339 relevant lines covered (73.32%)

0.73 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/GitLabHealth-Model-Generator/GLHMetamodelGenerator.class.st
1
Class {
2
        #name : #GLHMetamodelGenerator,
3
        #superclass : #FamixMetamodelGenerator,
4
        #instVars : [
5
                'project',
6
                'group',
7
                'pipeline',
8
                'user',
9
                'repository',
10
                'branch',
11
                'file',
12
                'fileBlob',
13
                'fileDirectory',
14
                'commit',
15
                'commitStats',
16
                'diff',
17
                'job',
18
                'mergeRequest',
19
                'diffRange',
20
                'change',
21
                'addition',
22
                'deletion',
23
                'lineOfCode',
24
                'note',
25
                'entity',
26
                'release',
27
                'tag',
28
                'issue',
29
                'milestone'
30
        ],
31
        #category : #'GitLabHealth-Model-Generator'
32
}
33

34
{ #category : #initialization }
NEW
35
GLHMetamodelGenerator class >> forceRecreateModel [ 
×
NEW
36
        <example>
×
NEW
37

×
NEW
38
        (UIManager default 
×
NEW
39
        alert: 'You are about to execute a "generateWithCleaning" process on our model. 
×
NEW
40
        This method will delete and recreate all the model. It will also delete all entities extensions. 
×
NEW
41
        Please ensure you have committed our code first so you will be able to reverte the deleted extensios.' title: 'RESET Model'; 
×
NEW
42
        confirm: 'Are you REALLY sure you want to reset all model''s relations and extensions ?' )
×
NEW
43
         ifTrue: [ 
×
NEW
44
                         Smalltalk image garbageCollect.
×
NEW
45
                        Smalltalk image garbageCollectMost.
×
NEW
46
        Transcript show: 'Block executed for GLHMetamodelGenerator new generateWithCleaning'; cr.
×
NEW
47
                        GLHMetamodelGenerator new generateWithCleaning.
×
NEW
48
                        "GLHMetamodelGenerator generate"
×
NEW
49
    ]
×
NEW
50
    ifFalse: [
×
NEW
51
        Transcript show: 'Reset operation cancelled'; cr.
×
NEW
52
    ].
×
NEW
53

×
NEW
54

×
NEW
55

×
NEW
56
]
×
57

58
{ #category : #accessing }
59
GLHMetamodelGenerator class >> packageName [
×
60
        ^ #'GitLabHealth-Model'
×
61
]
×
62

63
{ #category : #accessing }
64
GLHMetamodelGenerator class >> prefix [
×
65
        ^ #GLH
×
66
]
×
67

68
{ #category : #accessing }
69
GLHMetamodelGenerator class >> submetamodels [
×
70

×
71
        ^ { FamixMooseQueryGenerator . FamixGenerator }
×
72
]
×
73

74
{ #category : #branches }
75
GLHMetamodelGenerator >> branchProperties [
×
76

×
77
        branch property: #name type: #String
×
78
]
×
79

80
{ #category : #changes }
81
GLHMetamodelGenerator >> changeProperties [
×
82

×
83
        change property: #index type: #Number.
×
84
        change property: #relativeIndex type: #Number.
×
85
        change property: #sourceCode type: #String. 
×
86
        addition property: #delimiter type: #String defaultValue: '#+'.
×
87
        deletion property: #delimiter type: #String defaultValue: '#-'
×
88
]
×
89

90
{ #category : #commits }
91
GLHMetamodelGenerator >> commitProperties [
×
92

×
93
        commit property: #parent_ids type: #Object defaultValue: 'OrderedCollection new'.
×
94

×
95
        commit property: #id type: #String.
×
96
        commit property: #short_id type: #String.
×
97
        commit property: #title type: #String.
×
98
        commit property: #author_name type: #String.
×
99
        commit property: #author_email type: #String.
×
100
        commit property: #authored_date type: #Object.
×
101
        commit property: #committer_name type: #String.
×
102
        commit property: #committer_email type: #String.
×
103
        commit property: #committed_date type: #Object.
×
104
        commit property: #created_at type: #Object.
×
105
        commit property: #message type: #String.
×
106
        commit property: #web_url type: #String.
×
107

×
108

×
109
        (commit property: #additions type: #Number) comment:
×
110
                'The number of line that git consider added'.
×
111
        (commit property: #deletions type: #Number) comment:
×
112
                'The number of line that git consider deleted'
×
113
]
×
114

115
{ #category : #definition }
116
GLHMetamodelGenerator >> defineClasses [
×
117

×
118
        super defineClasses.
×
NEW
119
        entity := builder ensureClassNamed: #Entity.
×
120
        group := builder newClassNamed: #Group comment: 'A GitLab Group'.
×
121
        group withGroup.
×
122
        project := builder
×
123
                           newClassNamed: #Project
×
124
                           comment: 'A GitLab Project'.
×
125
        pipeline := builder
×
126
                            newClassNamed: #Pipeline
×
127
                            comment: 'A GitLab Pipeline execution'.
×
128
        user := builder newClassNamed: #User comment: 'A GitLab User'.
×
129
        repository := builder
×
130
                              newClassNamed: #Repository
×
131
                              comment: 'A git repository'.
×
132
        branch := builder newClassNamed: #Branch comment: 'A git branch'.
×
133
        file := builder newClassNamed: #File comment: 'A file'.
×
134
        fileBlob := builder newClassNamed: #FileBlob comment: 'A file blob'.
×
135
        fileDirectory := builder
×
136
                                 newClassNamed: #FileDirectory
×
137
                                 comment: 'A file directory'.
×
138
        commit := builder
×
139
                          newClassNamed: #Commit
×
140
                          comment: 'a commit attached to a repository'.
×
141
        diff := builder newClassNamed: #Diff comment: 'The diff of a commit'.
×
NEW
142

×
143
        job := builder newClassNamed: #Job comment: 'A CI Job'.
×
NEW
144

×
145
        mergeRequest := builder
×
146
                                newClassNamed: #MergeRequest
×
147
                                comment: 'a gitlab merge request'.
×
148

×
149
        change := builder
×
150
                          newClassNamed: #Change
×
151
                          comment: 'super class for addition and deletion '.
×
152

×
153
        addition := builder
×
154
                            newClassNamed: #Addition
×
155
                            comment:
×
156
                            'a detected addition of a line, seen within a diff '.
×
157
        addition withTesting.
×
158
        deletion := builder
×
159
                            newClassNamed: #Deletion
×
160
                            comment:
×
161
                            'a detected deletion of a line, seen within a diff '.
×
162
        deletion withTesting.
×
163

×
164
        lineOfCode := builder
×
165
                              newClassNamed: #LineOfCode
×
166
                              comment: 'a line of code in a diff comparaison '.
×
167

×
168
        diffRange := builder
×
169
                             newClassNamed: #DiffRange
×
170
                             comment:
×
171
                             'a indicate on which line of code are concerned by a diff (usually declared with @@ oldRange, newRange @@) '.
×
NEW
172

×
173
        note := builder
×
NEW
174
                        newClassNamed: #Note
×
NEW
175
                        comment:
×
NEW
176
                        'a note (a diff) proposed in a Merge Request; can be accepted, modified or deleted'.
×
177

×
178

×
NEW
179
        tag := builder
×
NEW
180
                       newClassNamed: #Tag
×
NEW
181
                       comment:
×
NEW
182
                       'a Tag is a reference to a specific point in the repository''s history'.
×
183

×
184

×
NEW
185
        release := builder
×
NEW
186
                           newClassNamed: #Release
×
NEW
187
                           comment:
×
NEW
188
                           'a Release is typically associated with a tag and provide additional metadata and assets that can be distributed to users'.
×
NEW
189
                
×
NEW
190
        issue := builder
×
NEW
191
                         newClassNamed: #Issue
×
NEW
192
                         comment:
×
NEW
193
                         'an Issues help collaboration within a team to plan, track, and deliver work'.
×
NEW
194
                
×
NEW
195
        milestone := builder
×
NEW
196
                         newClassNamed: #Milestone
×
NEW
197
                         comment:
×
NEW
198
                         'a Milestone is use to track progress on groups of issues or pull requests in a repository'.
×
UNCOV
199
]
×
200

201
{ #category : #definition }
202
GLHMetamodelGenerator >> defineHierarchy [
×
203

×
204
        super defineHierarchy.
×
205
        entity --|> #TEntityMetaLevelDependency.
×
206
        fileDirectory --|> file.
×
207
        fileBlob --|> file.
×
208

×
209
        group --|> #TNamedEntity.
×
210
        project --|> #TNamedEntity.
×
211
        user --|> #TNamedEntity.
×
212
        commit --|> #TNamedEntity.
×
213
        diff --|> #TNamedEntity.
×
214
        job --|> #TNamedEntity.
×
215
        note --|> #TNamedEntity.
×
216

×
217
        change --|> #TNamedEntity.
×
218
        change <|-- addition.
×
219
        change <|-- deletion.
×
220
        change <|-- lineOfCode.
×
NEW
221
        mergeRequest --|> #TNamedEntity.
×
NEW
222

×
NEW
223
        issue --|> #TNamedEntity.
×
NEW
224
        milestone --|> #TNamedEntity. 
×
UNCOV
225
]
×
226

227
{ #category : #definition }
228
GLHMetamodelGenerator >> defineProperties [
×
229
        "Group properties"
×
230

×
NEW
231
        super defineProperties.
×
NEW
232
        self groupProperties.
×
NEW
233
        self projectProperties.
×
234
        self pipelinesProperties.
×
235
        self userProperties.
×
236
        self branchProperties.
×
237
        self fileProperties.
×
238
        self commitProperties.
×
239
        self diffProperties.
×
240
        self jobProperties.
×
241
        self changeProperties.
×
242
        self mergeRequestProperties.
×
243
        self diffRangeProperties.
×
244
        self noteProperties.
×
245
        self tagProperties.
×
246
        self releaseProperties.
×
NEW
247
        self issueProperties.
×
NEW
248
        self milestoneProperties.
×
UNCOV
249
]
×
250

251
{ #category : #definition }
252
GLHMetamodelGenerator >> defineRelations [
×
NEW
253
        "MERGE REQUEST RELATIONS""DIFF""TAG AND RELEASE"
×
254

×
255
        super defineRelations.
×
256
        (group property: #projects) <>-* (project property: #group).
×
257
        (group property: #subGroups) <>-* (group property: #group).
×
NEW
258

×
259
        (repository property: #branches) <>-* (branch property: #repository).
×
260
        (branch property: #files) <>-* (file property: #branch).
×
261
        (fileDirectory property: #files)
×
262
        <>-* (file property: #directoryOwner).
×
263
        (repository property: #commits) <>-* (commit property: #repository).
×
NEW
264
        "commit can appears in multiple branches. And a branch"
×
NEW
265
        (branch property: #commits) *-* (commit property: #branch).
×
266
        (commit property: #diffs) <>-* (diff property: #commit).
×
267
        (user property: #commits) <>-* (commit property: #commitCreator).
×
268
        (commit property: #parentCommits)
×
269
        *-* (commit property: #childCommits).
×
270
        (commit property: #jobs) <>-* (job property: #commit).
×
271
        (pipeline property: #jobs) <>-* (job property: #pipeline).
×
272
        (pipeline property: #user) *- (user property: #launchedPipelines).
×
273
        (user property: #jobs) <>-* (job property: #user).
×
274
        (diff property: #file) <>-* (file property: #diffs).
×
275
        (diff property: #diffRanges) <>-* (diffRange property: #diff).
×
276
        (diffRange property: #changes) -* (change property: #diffRange).
×
277

×
NEW
278
        self projectRelations.
×
NEW
279
        self tagRelations.
×
NEW
280
        self releaseRelations.
×
NEW
281
        self issueRelations.
×
NEW
282
        self mergeRequestsRelations.
×
NEW
283
        self noteRelations.
×
NEW
284
        self milestoneRelations. 
×
UNCOV
285
]
×
286

287
{ #category : #diffs }
288
GLHMetamodelGenerator >> diffProperties [
×
289

×
290
        (diff property: #diffString type: #String) comment:
×
291
                'The string presenting the diff. It should follow the [Detailed-Unified](https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html) format'.
×
292
                
×
293
        (diff property: #new_path type: #String) comment:
×
294
                'The path to the file in the resulted repository commitish'.
×
295
                
×
296
        (diff property: #old_path type: #String) comment:
×
297
                'The path to the file in the origin repository commitish'.
×
298
                
×
299
        (diff property: #new_file type: #Boolean defaultValue: false)
×
300
                comment: 'Is the file of the diff is a new file'.
×
301
                
×
302
        (diff property: #renamed_file type: #Boolean defaultValue: false)
×
303
                comment:
×
304
                'Is the file of the diff has been renamed (see old_path/new_path) file'.
×
305
                
×
306
        (diff property: #deleted_file type: #Boolean defaultValue: false)
×
307
                comment: 'Is the file of the diff has been removed'
×
308
]
×
309

310
{ #category : #diffs }
311
GLHMetamodelGenerator >> diffRangeProperties [
×
312
"must parse the range. 
×
313
        originalLineRange = '-120,5' --> change starts at line #120
×
314
        5 is the number of lines in the original file affected by the change"
×
315
        diffRange property: #originalLineRange type: #String.
×
316
        diffRange property: #newLineRange type: #String.
×
317
        diffRange property: #lineOfCode type: #String
×
318
]
×
319

×
NEW
320
{ #category : #files }
×
321
GLHMetamodelGenerator >> fileProperties [
×
322

×
323
        file property: #name type: #String
×
324
]
×
325

×
NEW
326
{ #category : #groups }
×
NEW
327
GLHMetamodelGenerator >> groupProperties [
×
NEW
328

×
NEW
329
        group property: #id type: #Number. "Group properties"
×
NEW
330
        group property: #web_url type: #String.
×
NEW
331
        group property: #description type: #String.
×
NEW
332
        group property: #visibility type: #String.
×
NEW
333
        group property: #avatar_url type: #String
×
NEW
334
]
×
NEW
335

×
NEW
336
{ #category : #issues }
×
NEW
337
GLHMetamodelGenerator >> issueProperties [
×
NEW
338

×
NEW
339
        issue property: #name type: #String.
×
NEW
340
        issue property: #description type: #String.
×
NEW
341
        issue property: #state type: #String.
×
NEW
342
        issue property: #id type: #Number.
×
NEW
343
        
×
NEW
344
        issue property: #created_at type: #Object.
×
NEW
345
        issue property: #updated_at type: #Object.
×
NEW
346
        issue property: #closed_at type: #Object.
×
NEW
347
        issue property: #due_date type: #Object.
×
NEW
348
]
×
NEW
349

×
NEW
350
{ #category : #issues }
×
NEW
351
GLHMetamodelGenerator >> issueRelations [
×
NEW
352

×
NEW
353
        (issue property: #project) *-<> (project property: #issue).
×
NEW
354
        (issue property: #assignees) <>-* (user property: #assignedIssue).
×
NEW
355
        (issue property: #author) <>- (user property: #createdIssue).
×
NEW
356
        
×
NEW
357
]
×
NEW
358

×
NEW
359
{ #category : #jobs }
×
360
GLHMetamodelGenerator >> jobProperties [
×
361

×
362
        job property: #id type: #Number.
×
363
        job property: #allow_failure type: #Boolean.
×
364
        job property: #web_url type: #String.
×
365
        job property: #duration type: #Object.
×
366
        job property: #name type: #String. 
×
367
        job property: #ref type: #String.
×
368
]
×
369

×
NEW
370
{ #category : #'merge requests' }
×
371
GLHMetamodelGenerator >> mergeRequestProperties [
×
372

×
373
        mergeRequest property: #id type: #Number.
×
374
        mergeRequest property: #iid type: #Number.
×
375
        mergeRequest property: #project_id type: #Number.
×
376
        mergeRequest property: #title type: #String.
×
377
        mergeRequest property: #description type: #String.
×
378
        mergeRequest property: #state type: #String.
×
379
        mergeRequest property: #created_at type: #Object.
×
380
        mergeRequest property: #updated_at type: #Object.
×
381
        mergeRequest property: #merged_at type: #Object.
×
382
        mergeRequest property: #closed_at type: #Object.
×
383
        mergeRequest property: #target_branch type: #String.
×
384
        mergeRequest property: #source_branch type: #String.
×
385
        mergeRequest property: #user_notes_count type: #Number.
×
386
        mergeRequest property: #upvotes type: #Number.
×
387
        mergeRequest property: #downvotes type: #Number.
×
388
        mergeRequest property: #source_project_id type: #Number.
×
389
        mergeRequest property: #target_project_id type: #Number.
×
390
        mergeRequest property: #labels type: #Object.
×
391
        mergeRequest property: #draft type: #Boolean.
×
392
        mergeRequest property: #work_in_progress type: #Boolean.
×
393
        mergeRequest property: #milestone type: #String.
×
394
        mergeRequest property: #merge_when_pipeline_succeeds type: #Boolean.
×
395
        mergeRequest property: #merge_status type: #String.
×
396
        mergeRequest property: #detailed_merge_status type: #String.
×
397
        mergeRequest property: #sha type: #String.
×
398
        mergeRequest property: #merge_commit_sha type: #String.
×
399
        mergeRequest property: #squash_commit_sha type: #String.
×
400
        mergeRequest property: #discussion_locked type: #String.
×
401
        mergeRequest property: #should_remove_source_branch type: #Boolean.
×
402
        mergeRequest property: #force_remove_source_branch type: #Boolean.
×
403
        mergeRequest property: #reference type: #String.
×
404
        mergeRequest property: #references_short type: #String.
×
405
        mergeRequest property: #references_relative type: #String.
×
406
        mergeRequest property: #references_full type: #String.
×
407
        mergeRequest property: #web_url type: #String.
×
408
        mergeRequest property: #time_stats_time_estimate type: #Number.
×
409
        mergeRequest property: #time_stats_total_time_spent type: #Number.
×
410
        mergeRequest property: #time_stats_human_time_estimate type: #String.
×
411
        mergeRequest
×
412
                property: #time_stats_human_total_time_spent
×
413
                type: #String.
×
414
        mergeRequest property: #squash type: #Boolean.
×
415
        mergeRequest property: #squash_on_merge type: #Boolean.
×
416
        mergeRequest property: #task_completion_status_count type: #Number.
×
417
        mergeRequest
×
418
                property: #task_completion_status_completed_count
×
419
                type: #Number.
×
420
        mergeRequest property: #has_conflicts type: #Boolean.
×
421
        mergeRequest property: #blocking_discussions_resolved type: #Boolean.
×
422
        mergeRequest property: #subscribed type: #Boolean.
×
423
        mergeRequest property: #changes_count type: #String.
×
424
        mergeRequest property: #latest_build_started_at type: #String.
×
425
        mergeRequest property: #latest_build_finished_at type: #String.
×
426
        mergeRequest property: #first_deployed_to_production_at type: #String.
×
427
        mergeRequest property: #approved type: #Boolean.
×
428

×
429
        "see https://github.com/moosetechnology/GitProjectHealth/issues/88"
×
430
        mergeRequest property: #commits type: #Object
×
431
]
×
432

×
NEW
433
{ #category : #'merge requests' }
×
NEW
434
GLHMetamodelGenerator >> mergeRequestsRelations [
×
NEW
435

×
NEW
436
        (mergeRequest property: #author)
×
NEW
437
        *- (user property: #createdMergeRequests).
×
NEW
438
        (mergeRequest property: #approved_by)
×
NEW
439
        *-* (user property: #approcheMergeRequests).
×
NEW
440
        (mergeRequest property: #merge_user) *- (user property: #usedMerges).
×
NEW
441
        (mergeRequest property: #closed_by)
×
NEW
442
        *- (user property: #closedMergeRequests).
×
NEW
443
        (mergeRequest property: #merged_by)
×
NEW
444
        *- (user property: #mergerOfMergeRequests).
×
NEW
445
        (mergeRequest property: #assignees)
×
NEW
446
        *-* (user property: #assignedMergeRequests).
×
NEW
447
        (mergeRequest property: #assignee)
×
NEW
448
        *- (user property: #currentlyAssignedMergeRequest).
×
NEW
449
        (mergeRequest property: #reviewers)
×
NEW
450
        *-* (user property: #reviewedMergeResquest).
×
NEW
451
        (mergeRequest property: #pipelines)
×
NEW
452
        <>-* (pipeline property: #mergeResquest).
×
NEW
453
        (mergeRequest property: #mergedCommit)
×
NEW
454
        - (commit property: #commitedMergeRequest).
×
NEW
455
        (mergeRequest property: #mergeRequestCommit)
×
NEW
456
        - (commit property: #commitedMergeRequest).
×
NEW
457
        (mergeRequest property: #squashCommit)
×
NEW
458
        - (commit property: #squashedMergeRequest).
×
NEW
459
        (mergeRequest property: #diffs) -* (diff property: #mergeRequest).
×
NEW
460
        (project property: #mergeRequests)
×
NEW
461
        <>-* (mergeRequest property: #project).
×
NEW
462

×
NEW
463
]
×
NEW
464

×
NEW
465
{ #category : #milestones }
×
NEW
466
GLHMetamodelGenerator >> milestoneProperties [
×
NEW
467

×
NEW
468
        milestone property: #id type: #Number.
×
NEW
469
        milestone property: #title type: #String.
×
NEW
470
        milestone property: #description type: #String.
×
NEW
471
        
×
NEW
472
        milestone property: #open_issues type: #Number .
×
NEW
473
        milestone property: #closed_issues type: #Number.
×
NEW
474

×
NEW
475
        milestone property: #created_at type: #Object.
×
NEW
476
        milestone property: #updated_at type: #Object.
×
NEW
477
        milestone property: #closed_at type: #Object.
×
NEW
478
        milestone property: #due_date type: #Object
×
NEW
479
]
×
NEW
480

×
NEW
481
{ #category : #milestones }
×
NEW
482
GLHMetamodelGenerator >> milestoneRelations [
×
NEW
483

×
NEW
484
        (milestone property: #project) *-<> (project property: #milestone).
×
NEW
485
        (milestone property: #author) <>- (user property: #createdMilestone).
×
NEW
486
        
×
NEW
487
        (milestone property: #issue) <>-* (issue property: #milestone).
×
NEW
488
        (milestone property: #mergeRequest) <>-* (mergeRequest property: #milestone).
×
NEW
489
]
×
NEW
490

×
NEW
491
{ #category : #notes }
×
492
GLHMetamodelGenerator >> noteProperties [ 
×
493
        note property: #id type: #Number.
×
494
        note property: #body type: #String. 
×
495
        note property: #attachment type: #Object.
×
496
        note property: #author type: #Object.
×
497
        note property: #created_at type: #Object.
×
498
        note property: #updated_at type: #Object.
×
499
        note property: #system type: #Boolean.
×
500
        note property: #noteable_id type: #Number.
×
501
        note property: #noteable_type type: #String.
×
502
        note property: #project_id type: #Number.
×
503
        note property: #noteable_iid type: #Number.
×
504
        note property: #resolvable type: #Boolean.
×
505
        note property: #confidential type: #Boolean.
×
506
        note property: #internal type: #Boolean.
×
507
        note property: #imported type: #Boolean.
×
508
        note property: #imported_from type: #String.
×
509
         
×
510
 
×
511
 
×
512
 
×
513
 
×
514
 
×
515
 
×
516
 
×
517
 
×
518

×
519
]
×
520

×
NEW
521
{ #category : #'merge requests' }
×
NEW
522
GLHMetamodelGenerator >> noteRelations [
×
NEW
523

×
NEW
524
        (note property: #mergeRequest) *- (mergeRequest property: #note)
×
NEW
525
]
×
NEW
526

×
NEW
527
{ #category : #pipelines }
×
528
GLHMetamodelGenerator >> pipelinesProperties [
×
529
        
×
530
        "Pipelines properties"
×
531
        
×
532
        (pipeline property: #id type: #String) comment:
×
533
                'The id of the pipeline'.
×
534
        (pipeline property: #name type: #String) comment:
×
535
                'name of the pipeline'.        
×
536
                        
×
537
        (pipeline property: #status type: #String) comment:
×
538
                '#success or #failure'.        
×
539
        (pipeline property: #ref type: #String) comment:
×
540
                'reference its emmited source (merge request or else)'.        
×
541
        (pipeline property: #sha type: #String) comment:
×
542
                'sha of its emmited source'.        
×
543
        
×
544
        (pipeline property: #sourceEvent type: #String) comment: 'triggering event from where the pipeline originate, such as #push #fork, etc.'.
×
545
        
×
546
        (pipeline property: #runDate type: #Object) comment:
×
547
                'Date this pipeline was run'.
×
548
        (pipeline property: #created_at type: #Object) comment: 'creation date of the pipeline'.
×
549
        (pipeline property: #updated_at type: #Object) comment: 'update date of the pipeline'.
×
550
        (pipeline property: #started_at type: #Object) comment: 'start date of the pipeline'.
×
551
        (pipeline property: #finished_at type: #Object) comment: 'finish date of the pipeline'.        
×
552
        (pipeline property: #duration type: #Object) comment: 'the running duration of a pipeline'.
×
553

×
554
]
×
555

×
NEW
556
{ #category : #projects }
×
NEW
557
GLHMetamodelGenerator >> projectProperties [
×
NEW
558

×
NEW
559
        project property: #id type: #Number. "Project properties"
×
NEW
560
        project property: #topics type: #Object.
×
NEW
561
        project property: #archived type: #Boolean.
×
NEW
562
        project property: #archived type: #Boolean.
×
NEW
563
        project property: #description type: #String.
×
NEW
564
        project property: #readme_url type: #String.
×
NEW
565
        project property: #avatar_url type: #String.
×
NEW
566
        project property: #web_url type: #String.
×
NEW
567
        project property: #creator_id type: #Number
×
NEW
568
]
×
NEW
569

×
NEW
570
{ #category : #projects }
×
NEW
571
GLHMetamodelGenerator >> projectRelations [
×
NEW
572

×
NEW
573
        (project property: #pipelines) <>-* (pipeline property: #project).
×
NEW
574
        (project property: #creator) *- (user property: #createdProjects).
×
NEW
575
        (project property: #contributors)
×
NEW
576
        *-* (user property: #contributedProjects).
×
NEW
577
        (project property: #repository) <>- (repository property: #project)
×
NEW
578
]
×
NEW
579

×
NEW
580
{ #category : #releases }
×
581
GLHMetamodelGenerator >> releaseProperties [
×
582

×
583
        release property: #description type: #String.
×
584
        release property: #tag_name type: #String.
×
585
        release property: #name type: #String.
×
586
        
×
587
        release property: #created_at type: #Object.
×
588
        release property: #released_at type: #Object.
×
589
        release property: #commit_path type: #String.
×
590
        release property: #tag_path type: #String.
×
591
]
×
592

×
NEW
593
{ #category : #releases }
×
NEW
594
GLHMetamodelGenerator >> releaseRelations [
×
NEW
595

×
NEW
596
        (release property: #author) *-<> (user property: #releases).
×
NEW
597
        (release property: #project) *-<> (project property: #releases)
×
NEW
598
]
×
NEW
599

×
NEW
600
{ #category : #tags }
×
601
GLHMetamodelGenerator >> tagProperties [
×
602

×
603
        tag property: #name type: #String.
×
604
        tag property: #message type: #String.
×
605
        tag property: #target type: #String.
×
606
        tag property: #protected type: #Boolean.
×
607
        tag property: #created_at type: #Object.
×
608

×
609
]
×
610

×
NEW
611
{ #category : #tags }
×
NEW
612
GLHMetamodelGenerator >> tagRelations [
×
NEW
613
        (tag property: #commit) - (commit property: #tag).
×
NEW
614
        (tag property: #release) - (release property: #tag).
×
NEW
615
        (tag property: #repository) *-<> (repository property: #tags).
×
NEW
616
]
×
NEW
617

×
NEW
618
{ #category : #users }
×
619
GLHMetamodelGenerator >> userProperties [
×
620

×
621
        user property: #id type: #Number.
×
622
        user property: #username type: #String.
×
623
        user property: #name type: #String.
×
624
        user property: #state type: #String.
×
625
        user property: #avatar_url type: #String.
×
626
        user property: #web_url type: #String.
×
627
        user property: #created_at type: #String.
×
628
        user property: #bio type: #String.
×
629
        user property: #location type: #String.
×
630
        user property: #public_email type: #String.
×
631
        user property: #email type: #String.
×
632
        user property: #commit_email type: #String.
×
633
        user property: #skype type: #String.
×
634
        user property: #linkedin type: #String.
×
635
        user property: #twitter type: #String.
×
636
        user property: #website_url type: #String.
×
637
        user property: #organization type: #String.
×
638
        user property: #job_title type: #String.
×
639
        user property: #pronouns type: #String.
×
640
        user property: #bot type: #String.
×
641
        user property: #work_information type: #String.
×
642
        user property: #followers type: #String.
×
643
        user property: #following type: #String
×
644
]
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc