@@ -13,26 +13,10 @@ import {
13
13
} from '../../common' ;
14
14
import { getLanguageFolder , getPackageVersionDefault } from '../../config' ;
15
15
import { RELEASED_TAG } from '../../release/common' ;
16
- import type { Language } from '../../types' ;
17
16
import { cloneRepository , getNbGitDiff } from '../utils' ;
18
17
19
18
import text , { commitStartRelease } from './text' ;
20
19
21
- export function decideWhereToSpread ( commitMessage : string ) : Language [ ] {
22
- if ( commitMessage . startsWith ( commitStartRelease ) ) {
23
- return LANGUAGES ;
24
- }
25
-
26
- const result = commitMessage . match ( / ( .+ ) \( ( .+ ) \) : / ) ;
27
- if ( ! result ) {
28
- // no scope
29
- return LANGUAGES ;
30
- }
31
-
32
- const scope = result [ 2 ] as Language ;
33
- return LANGUAGES . includes ( scope ) ? [ scope ] : LANGUAGES ;
34
- }
35
-
36
20
export function cleanUpCommitMessage (
37
21
commitMessage : string ,
38
22
version : string
@@ -84,10 +68,9 @@ async function spreadGeneration(): Promise<void> {
84
68
. filter ( Boolean ) ;
85
69
86
70
const IS_RELEASE_COMMIT = lastCommitMessage . startsWith ( commitStartRelease ) ;
87
- const langs = decideWhereToSpread ( lastCommitMessage ) ;
88
71
console . log (
89
72
'Spreading code to the following repositories:' ,
90
- langs . join ( ' | ' )
73
+ LANGUAGES . join ( ' | ' )
91
74
) ;
92
75
93
76
// At this point, we know the release will happen on at least one client
@@ -99,67 +82,70 @@ async function spreadGeneration(): Promise<void> {
99
82
await run (
100
83
`git fetch origin refs/tags/${ RELEASED_TAG } :refs/tags/${ RELEASED_TAG } `
101
84
) ;
102
- await run ( `git tag -d ${ RELEASED_TAG } ` ) ;
103
85
await run ( `git push --delete origin ${ RELEASED_TAG } ` ) ;
104
86
105
87
console . log ( 'Creating new `released` tag for latest commit' ) ;
106
88
await run ( `git tag ${ RELEASED_TAG } ` ) ;
107
89
await run ( 'git push --tags' ) ;
108
90
}
109
91
110
- for ( const lang of langs ) {
111
- const { tempGitDir } = await cloneRepository ( {
112
- lang,
113
- githubToken,
114
- tempDir : process . env . RUNNER_TEMP ! ,
115
- } ) ;
116
-
117
- const clientPath = toAbsolutePath ( getLanguageFolder ( lang ) ) ;
118
- await emptyDirExceptForDotGit ( tempGitDir ) ;
119
- await copy ( clientPath , tempGitDir , { preserveTimestamps : true } ) ;
120
-
121
- if (
122
- ( await getNbGitDiff ( {
123
- head : null ,
92
+ for ( const lang of LANGUAGES ) {
93
+ try {
94
+ const { tempGitDir } = await cloneRepository ( {
95
+ lang,
96
+ githubToken,
97
+ tempDir : process . env . RUNNER_TEMP ! ,
98
+ } ) ;
99
+
100
+ const clientPath = toAbsolutePath ( getLanguageFolder ( lang ) ) ;
101
+ await emptyDirExceptForDotGit ( tempGitDir ) ;
102
+ await copy ( clientPath , tempGitDir , { preserveTimestamps : true } ) ;
103
+
104
+ if (
105
+ ( await getNbGitDiff ( {
106
+ head : null ,
107
+ cwd : tempGitDir ,
108
+ } ) ) === 0
109
+ ) {
110
+ console . log (
111
+ `❎ Skipping ${ lang } repository, because there is no change.`
112
+ ) ;
113
+ continue ;
114
+ } else {
115
+ console . log ( `✅ Spreading code to the ${ lang } repository.` ) ;
116
+ }
117
+
118
+ const version = getPackageVersionDefault ( lang ) ;
119
+ const commitMessage = cleanUpCommitMessage ( lastCommitMessage , version ) ;
120
+
121
+ await configureGitHubAuthor ( tempGitDir ) ;
122
+
123
+ await run ( 'git add .' , { cwd : tempGitDir } ) ;
124
+ await gitCommit ( {
125
+ message : commitMessage ,
126
+ coAuthors : [ author , ...coAuthors ] ,
124
127
cwd : tempGitDir ,
125
- } ) ) === 0
126
- ) {
127
- console . log (
128
- `❎ Skipping ${ lang } repository, because there is no change.`
129
- ) ;
130
- continue ;
131
- } else {
132
- console . log ( `✅ Spreading code to the ${ lang } repository.` ) ;
133
- }
134
-
135
- const version = getPackageVersionDefault ( lang ) ;
136
- const commitMessage = cleanUpCommitMessage ( lastCommitMessage , version ) ;
128
+ } ) ;
129
+ await run ( 'git push' , { cwd : tempGitDir } ) ;
137
130
138
- await configureGitHubAuthor ( tempGitDir ) ;
131
+ // In case of a release commit, we also want to update tags on the clients repositories
132
+ if ( IS_RELEASE_COMMIT ) {
133
+ console . log (
134
+ `Processing release commit, creating new release tag ('${ version } ') for '${ lang } ' repository.`
135
+ ) ;
139
136
140
- await run ( 'git add .' , { cwd : tempGitDir } ) ;
141
- await gitCommit ( {
142
- message : commitMessage ,
143
- coAuthors : [ author , ...coAuthors ] ,
144
- cwd : tempGitDir ,
145
- } ) ;
146
- await run ( 'git push' , { cwd : tempGitDir } ) ;
137
+ // we always want to delete the tag in case it exists
138
+ await run ( `git tag -d ${ version } || true` , { cwd : tempGitDir } ) ;
139
+ await run ( `git tag ${ version } HEAD` , { cwd : tempGitDir } ) ;
140
+ await run ( 'git push --tags' , { cwd : tempGitDir } ) ;
141
+ }
147
142
148
- // In case of a release commit, we also want to update tags on the clients repositories
149
- if ( IS_RELEASE_COMMIT ) {
150
143
console . log (
151
- `Processing release commit, creating new release tag (' ${ version } ') for ' ${ lang } ' repository.`
144
+ `✅ Code generation successfully pushed to ${ lang } repository.`
152
145
) ;
153
-
154
- // we always want to delete the tag in case it exists
155
- await run ( `git tag -d ${ version } || true` , { cwd : tempGitDir } ) ;
156
- await run ( `git tag ${ version } HEAD` , { cwd : tempGitDir } ) ;
157
- await run ( 'git push --tags' , { cwd : tempGitDir } ) ;
146
+ } catch ( e ) {
147
+ console . error ( `Release failed for language ${ lang } : ${ e } ` ) ;
158
148
}
159
-
160
- console . log (
161
- `✅ Code generation successfully pushed to ${ lang } repository.`
162
- ) ;
163
149
}
164
150
}
165
151
0 commit comments