@@ -73,6 +73,33 @@ async function printDiscordProposal(
7373 console . log ( "" ) ;
7474}
7575
76+ async function setAllClientReleases ( api : ApiPromise , baseUrl : String , runtimeName : String ) {
77+ const checksumFile = await fetch ( baseUrl + 'sha256sums.txt' )
78+ . then ( res => {
79+ if ( res . status >= 400 ) {
80+ throw new Error ( "Bad response from server" ) ;
81+ }
82+ return res . text ( ) ;
83+ } ) ;
84+
85+ const regex = new RegExp ( "([a-f0-9]+)\\\s*[.]\/((oracle|vault)-parachain-metadata-" + runtimeName + ")\n" , "g" ) ;
86+ let matches = [ ] ;
87+ let match ;
88+ while ( ( match = regex . exec ( checksumFile ) ) !== null ) {
89+ matches . push ( [ match [ 1 ] , match [ 2 ] , match [ 3 ] ] ) ;
90+ }
91+
92+ return matches . map ( ( [ checksum , fullFileName , clientName ] ) => {
93+ return api . tx . clientsInfo . setPendingClientRelease (
94+ clientName ,
95+ {
96+ uri : baseUrl + fullFileName ,
97+ checksum : "0x" + checksum ,
98+ }
99+ )
100+ } ) ;
101+ }
102+
76103async function main ( ) : Promise < void > {
77104 await cryptoWaitReady ( ) ;
78105
@@ -112,20 +139,13 @@ async function main(): Promise<void> {
112139
113140 const clientsRepo = "https://github.com/interlay/interbtc-clients" ;
114141 const clientsVersion = args [ 'clients-version' ] ;
115- console . log ( `Downloading vault binary (${ clientsVersion } )...` ) ;
116- const vaultFileName = `vault-parachain-metadata-${ args [ 'runtime-name' ] } ` ;
117- const vaultBinaryUri = `${ clientsRepo } /releases/download/${ clientsVersion } /${ vaultFileName } ` ;
118- const vaultBinary = await fetch ( vaultBinaryUri ) ;
119- const vaultBinaryRaw = await vaultBinary . arrayBuffer ( ) ;
120- const vaultChecksum = sha256AsU8a ( Buffer . from ( vaultBinaryRaw ) ) ;
121- const vaultRelease = { uri : vaultBinaryUri , checksum : vaultChecksum } ;
142+ const clientsBaseUrl = `${ clientsRepo } /releases/download/${ clientsVersion } /` ;
122143
123144 const paraApi = await createSubstrateAPI ( args [ 'parachain-endpoint' ] ) ;
124145
125146 const batched = paraApi . tx . utility . batchAll ( [
126147 paraApi . tx . parachainSystem . authorizeUpgrade ( codeHash ) ,
127- paraApi . tx . clientsInfo . setPendingClientRelease ( "vault" , vaultRelease ) ,
128- ] ) ;
148+ ] . concat ( await setAllClientReleases ( paraApi , clientsBaseUrl , args [ 'runtime-name' ] ) ) ) ;
129149
130150 const title = `Runtime Upgrade ${ parachainVersion } ` ;
131151 printDiscordProposal ( title , batched , args [ "parachain-endpoint" ] , paraApi ) ;
0 commit comments