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