mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| import sys
 | |
| import glob
 | |
| import subprocess
 | |
| import json
 | |
| 
 | |
| solc = sys.argv[1]
 | |
| report = open("report.txt", "wb")
 | |
| 
 | |
| for optimize in [False, True]:
 | |
|     for f in sorted(glob.glob("*.sol")):
 | |
|         sources = {}
 | |
|         sources[f] = {'content': open(f, 'r').read()}
 | |
|         input = {
 | |
|             'language': 'Solidity',
 | |
|             'sources': sources,
 | |
|             'settings': {
 | |
|                 'optimizer': {
 | |
|                     'enabled': optimize
 | |
|                 },
 | |
|                 'outputSelection': { '*': { '*': ['evm.bytecode.object', 'metadata'] } }
 | |
|             }
 | |
|         }
 | |
|         args = [solc, '--standard-json']
 | |
|         if optimize:
 | |
|             args += ['--optimize']
 | |
|         proc = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 | |
|         (out, err) = proc.communicate(json.dumps(input))
 | |
|         try:
 | |
|             result = json.loads(out.strip())
 | |
|             for filename in sorted(result['contracts'].keys()):
 | |
|                 for contractName in sorted(result['contracts'][filename].keys()):
 | |
|                     contractData = result['contracts'][filename][contractName]
 | |
|                     if 'evm' in contractData and 'bytecode' in contractData['evm']:
 | |
|                         report.write(filename + ':' + contractName + ' ' + contractData['evm']['bytecode']['object'] + '\n')
 | |
|                     else:
 | |
|                         report.write(filename + ':' + contractName + ' NO BYTECODE\n')
 | |
|                     report.write(filename + ':' + contractName + ' ' + contractData['metadata'] + '\n')
 | |
|         except KeyError:
 | |
|             report.write(f + ": ERROR\n")
 |