33const { chdir, execSync, existsSync, log, rimraf } = require ( "./util" ) ;
44const { argv } = require ( "./argv" ) ;
55
6+ const additionalExtensions = [
7+ {
8+ name : "solidity-lang" ,
9+ repo : "https://github.com/hasparus/vscode-solidity-extenstion.git" ,
10+ branchOrTag : "v1.3.0" ,
11+ getPackageJSON : ( ) =>
12+ // @ts -ignore
13+ require ( "../additional-extensions/solidity-lang/package.json" ) ,
14+ } ,
15+ {
16+ name : "vscode-vyper-syntax" ,
17+ repo : "https://github.com/dethcrypto/vscode-vyper.git" ,
18+ branchOrTag : "minimal-extension" ,
19+ getPackageJSON : ( ) =>
20+ // @ts -ignore
21+ require ( "../additional-extensions/vscode-vyper-syntax/package.json" ) ,
22+ } ,
23+ ] ;
24+
625function prepareAdditionalExtensions ( ) {
726 log . info ( "Cloning additional built-in extensions..." ) ;
827
928 chdir ( __dirname , "../additional-extensions" ) ;
1029
11- const extensions = [
12- {
13- name : "solidity-lang" ,
14- repo : "https://github.com/hasparus/vscode-solidity-extenstion.git" ,
15- tag : "v1.3.0" ,
16- } ,
17- ] ;
18-
19- for ( const ext of extensions ) {
30+ for ( const ext of additionalExtensions ) {
2031 if ( argv . force ) rimraf ( `./${ ext . name } ` ) ;
2132
2233 if ( existsSync ( ext . name ) ) {
@@ -25,17 +36,27 @@ function prepareAdditionalExtensions() {
2536 ) ;
2637 } else {
2738 execSync (
28- `git clone --depth 1 --branch ${ ext . tag } ${ ext . repo } ${ ext . name } ` ,
39+ `git clone --depth 1 --branch ${ ext . branchOrTag } ${ ext . repo } ${ ext . name } ` ,
2940 { stdio : "inherit" }
3041 ) ;
31- execSync ( [ "yarn --production" , argv . verbose && "--verbose" ] , {
32- stdio : "inherit" ,
33- cwd : `./${ ext . name } ` ,
34- } ) ;
42+
43+ /** @type {import("child_process").ExecSyncOptions } */
44+ const options = { stdio : "inherit" , cwd : `./${ ext . name } ` } ;
45+
46+ const packageJSON = ext . getPackageJSON ( ) ;
47+ if ( "package-web" in packageJSON . scripts ) {
48+ log . info ( `Installing dependencies for ${ ext . name } ...` ) ;
49+ execSync ( [ "yarn" , argv . verbose && "--verbose" ] , options ) ;
50+ log . info ( `Compiling ${ ext . name } ...` ) ;
51+ execSync ( [ "yarn package-web" , argv . verbose && "--verbose" ] , options ) ;
52+ } else {
53+ log . info ( `Installing production dependencies for ${ ext . name } ...` ) ;
54+ execSync ( [ "yarn --production" , argv . verbose && "--verbose" ] , options ) ;
55+ }
3556 }
3657 }
3758}
3859
39- module . exports = { prepareAdditionalExtensions } ;
60+ module . exports = { prepareAdditionalExtensions, additionalExtensions } ;
4061
4162if ( require . main === module ) prepareAdditionalExtensions ( ) ;
0 commit comments