@@ -74,26 +74,36 @@ var sources = {};
74
74
75
75
for ( var i = 0 ; i < files . length ; i ++ ) {
76
76
try {
77
- sources [ files [ i ] ] = fs . readFileSync ( files [ i ] ) . toString ( ) ;
77
+ sources [ files [ i ] ] = { content : fs . readFileSync ( files [ i ] ) . toString ( ) } ;
78
78
} catch ( e ) {
79
79
abort ( 'Error reading ' + files [ i ] + ': ' + e ) ;
80
80
}
81
81
}
82
82
83
- var output = solc . compile ( { sources : sources } , argv . optimize ? 1 : 0 ) ;
83
+ var output = JSON . parse ( solc . compileStandardWrapper ( JSON . stringify ( {
84
+ language : 'Solidity' ,
85
+ settings : {
86
+ optimizer : {
87
+ enabled : argv . optimize
88
+ } ,
89
+ outputSelection : {
90
+ '*' : {
91
+ '*' : [ 'abi' , 'evm.bytecode' ]
92
+ }
93
+ }
94
+ } ,
95
+ sources : sources
96
+ } ) ) ) ;
97
+
84
98
if ( ! output ) {
85
99
abort ( 'No output from compiler' ) ;
86
100
} else if ( output [ 'errors' ] ) {
87
- function isWarning ( message ) {
88
- return message . match ( / ^ ( .* : [ 0 - 9 ] * : [ 0 - 9 ] * ) ? W a r n i n g : / )
89
- }
90
-
91
101
for ( var error in output [ 'errors' ] ) {
92
102
var message = output [ 'errors' ] [ error ]
93
- if ( isWarning ( message ) ) {
94
- console . log ( message )
103
+ if ( message . severity === 'warning' ) {
104
+ console . log ( message . formattedMessage )
95
105
} else {
96
- console . error ( message )
106
+ console . error ( message . formattedMessage )
97
107
}
98
108
}
99
109
}
@@ -109,15 +119,18 @@ function writeFile (file, content) {
109
119
} ) ;
110
120
}
111
121
112
- for ( var contractName in output . contracts ) {
113
- var contractFileName = contractName . replace ( / [: ./ ] / g, '_' ) ;
122
+ for ( var fileName in output . contracts ) {
123
+ for ( var contractName in output . contracts [ fileName ] ) {
124
+ var contractFileName = fileName + ':' + contractName ;
125
+ contractFileName = contractFileName . replace ( / [: ./ ] / g, '_' ) ;
114
126
115
- if ( argv . bin ) {
116
- writeFile ( contractFileName + '.bin' , output . contracts [ contractName ] . bytecode ) ;
117
- }
127
+ if ( argv . bin ) {
128
+ writeFile ( contractFileName + '.bin' , output . contracts [ fileName ] [ contractName ] . evm . bytecode . object ) ;
129
+ }
118
130
119
- if ( argv . abi ) {
120
- writeFile ( contractFileName + '.abi' , output . contracts [ contractName ] . interface ) ;
131
+ if ( argv . abi ) {
132
+ writeFile ( contractFileName + '.abi' , JSON . stringify ( output . contracts [ fileName ] [ contractName ] . abi ) ) ;
133
+ }
121
134
}
122
135
}
123
136
0 commit comments