@@ -3,6 +3,8 @@ import { run } from '../../common';
3
3
import { configureGitHubAuthor } from '../../release/common' ;
4
4
import { getNbGitDiff } from '../utils' ;
5
5
6
+ import { GENERATED_MAIN_BRANCH } from './text' ;
7
+
6
8
const PR_NUMBER = parseInt ( process . env . PR_NUMBER || '0' , 10 ) ;
7
9
const FOLDERS_TO_CHECK = 'yarn.lock openapitools.json clients specs/bundled' ;
8
10
@@ -19,16 +21,13 @@ export async function pushGeneratedCode(): Promise<void> {
19
21
const baseBranch = await run ( 'git branch --show-current' ) ;
20
22
console . log ( `Checking codegen status on '${ baseBranch } '.` ) ;
21
23
22
- // determine generated branch name based on current branch
23
- const generatedCodeBranch = `generated/${ baseBranch } ` ;
24
+ const nbDiff = await getNbGitDiff ( {
25
+ branch : baseBranch ,
26
+ head : 'noHead' ,
27
+ path : FOLDERS_TO_CHECK ,
28
+ } ) ;
24
29
25
- if (
26
- ( await getNbGitDiff ( {
27
- branch : baseBranch ,
28
- head : null ,
29
- path : FOLDERS_TO_CHECK ,
30
- } ) ) === 0
31
- ) {
30
+ if ( nbDiff === 0 ) {
32
31
console . log ( `No generated code changes found for '${ baseBranch } '.` ) ;
33
32
34
33
if ( PR_NUMBER ) {
@@ -38,25 +37,43 @@ export async function pushGeneratedCode(): Promise<void> {
38
37
return ;
39
38
}
40
39
41
- await run ( `yarn workspace scripts cleanGeneratedBranch ${ baseBranch } ` ) ;
40
+ console . log ( `${ nbDiff } changes found for ${ FOLDERS_TO_CHECK } ` ) ;
41
+
42
+ // determine generated branch name based on current branch
43
+ const generatedCodeBranch = `generated/${ baseBranch } ` ;
44
+
45
+ // We don't re-create GENERATED_MAIN_BRANCH
46
+ if ( baseBranch !== 'main' ) {
47
+ await run ( `yarn workspace scripts cleanGeneratedBranch ${ baseBranch } ` ) ;
48
+
49
+ console . log ( `Creating branch for generated code: '${ generatedCodeBranch } '` ) ;
50
+ await run (
51
+ `git branch ${ generatedCodeBranch } origin/${ GENERATED_MAIN_BRANCH } `
52
+ ) ;
53
+ }
54
+
55
+ await run ( `git checkout ${ generatedCodeBranch } ` ) ;
56
+
57
+ // For the GENERATED_MAIN_BRANCH, we take the latest commit on main and generate code
58
+ if ( baseBranch === 'main' ) {
59
+ console . log ( `Merging '${ baseBranch } ' in '${ generatedCodeBranch } '` ) ;
60
+ await run ( `git merge --no-commit ${ baseBranch } ` ) ;
61
+ }
42
62
43
- console . log ( `Creating branch for generated code: '${ generatedCodeBranch } '` ) ;
44
- await run ( `git branch ${ generatedCodeBranch } ` ) ;
45
63
const commitMessage =
46
- await run ( `git show -s --format="Generated code for commit %H.
64
+ await run ( `git show -s ${ baseBranch } --format="Generated code for commit %H.
47
65
48
66
Co-authored-by: %an <%ae>"` ) ;
49
67
50
68
console . log (
51
- `Pushing code for folders '${ FOLDERS_TO_CHECK } ' to generated branch: ${ generatedCodeBranch } `
69
+ `Pushing code for folders '${ FOLDERS_TO_CHECK } ' to generated branch: ' ${ generatedCodeBranch } ' `
52
70
) ;
53
- await run ( `git checkout ${ generatedCodeBranch } ` ) ;
54
71
await run ( `git add ${ FOLDERS_TO_CHECK } ` ) ;
55
72
await run ( `git commit -m "${ commitMessage } "` ) ;
56
73
await run ( `git push origin ${ generatedCodeBranch } ` ) ;
57
- await run ( `git checkout ${ baseBranch } ` ) ;
58
74
59
75
if ( PR_NUMBER ) {
76
+ await run ( `git checkout ${ baseBranch } ` ) ;
60
77
await run ( `yarn workspace scripts upsertGenerationComment codegen` ) ;
61
78
}
62
79
}
0 commit comments