@@ -260,4 +260,43 @@ const ensurePatched = register("vscode:patch", async (runner) => {
260260 }
261261} ) ;
262262
263+ register ( "package" , async ( runner , releaseTag , binLocation ) => {
264+ if ( ! releaseTag ) {
265+ throw new Error ( "Please specify the release tag." ) ;
266+ }
267+ if ( ! binLocation ) {
268+ throw new Error ( "Please specify location of the binaries." ) ;
269+ }
270+
271+ const releasePath = path . resolve ( __dirname , `../release/${ releaseTag } ` ) ;
272+ fse . removeSync ( releasePath ) ;
273+ fse . mkdirpSync ( releasePath ) ;
274+
275+ await Promise . all ( [ {
276+ bin : "cli-linux" ,
277+ name : "linux" ,
278+ } , {
279+ bin : "cli-osx" ,
280+ name : "apple-darwin" ,
281+ } ] . map ( async ( pkg ) => {
282+ const archiveName = `code-server-${ releaseTag } -x86_64-${ pkg . name } ` ;
283+ const archiveDir = path . join ( releasePath , archiveName ) ;
284+ fse . mkdirpSync ( archiveDir ) ;
285+
286+ const binaryPath = path . join ( binLocation , pkg . bin ) ;
287+ const binaryDestination = path . join ( archiveDir , "code-server" ) ;
288+ fse . copySync ( binaryPath , binaryDestination ) ;
289+ fs . chmodSync ( binaryDestination , "755" ) ;
290+ [ "README.md" , "LICENSE" ] . forEach ( ( fileName ) => {
291+ fse . copySync ( path . resolve ( __dirname , `../${ fileName } ` ) , path . join ( archiveDir , fileName ) ) ;
292+ } ) ;
293+
294+ runner . cwd = releasePath ;
295+ await Promise . all ( [
296+ runner . execute ( "tar" , [ "-cvzf" , `${ archiveName } .tar.gz` , `${ archiveName } ` ] ) ,
297+ runner . execute ( "zip" , [ "-r" , `${ archiveName } .zip` , `${ archiveName } ` ] ) ,
298+ ] ) ;
299+ } ) ) ;
300+ } ) ;
301+
263302run ( ) ;
0 commit comments