Merge pull request #1425 from ethereum/librarieDeployCustom

Json file include network id
pull/3094/head
yann300 7 years ago committed by GitHub
commit 5d24f1ecc9
  1. 8
      .circleci/config.yml
  2. 36
      src/app/files/compiler-metadata.js

@ -26,10 +26,10 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
keys: keys:
- dep-bundle-16-{{ checksum "package.json" }} - dep-bundle-17-{{ checksum "package.json" }}
- run: npm install - run: npm install
- save_cache: - save_cache:
key: dep-bundle-16-{{ checksum "package.json" }} key: dep-bundle-17-{{ checksum "package.json" }}
paths: paths:
- ~/repo/node_modules - ~/repo/node_modules
- run: npm run lint && npm run test && npm run downloadsolc && npm run make-mock-compiler && npm run build - run: npm run lint && npm run test && npm run downloadsolc && npm run make-mock-compiler && npm run build
@ -46,10 +46,10 @@ jobs:
- checkout - checkout
- restore_cache: - restore_cache:
keys: keys:
- dep-bundle-11-{{ checksum "package.json" }} - dep-bundle-12-{{ checksum "package.json" }}
- run: npm install - run: npm install
- save_cache: - save_cache:
key: dep-bundle-11-{{ checksum "package.json" }} key: dep-bundle-12-{{ checksum "package.json" }}
paths: paths:
- ~/repo/node_modules - ~/repo/node_modules
- run: npm run build_debugger - run: npm run build_debugger

@ -1,16 +1,18 @@
'use strict' 'use strict'
var executionContext = require('../../execution-context')
class CompilerMetadata { class CompilerMetadata {
constructor (events, opts) { constructor (events, opts) {
var self = this var self = this
self._events = events self._events = events
self._opts = opts self._opts = opts
self.networks = ['VM:-', 'main:1', 'ropsten:3', 'rinkeby:4', 'kovan:42']
} }
syncContractMetadata () { syncContractMetadata () {
var self = this var self = this
self._events.compiler.register('compilationFinished', (success, data, source) => { self._events.compiler.register('compilationFinished', (success, data, source) => {
if (success) { if (!success) return
var provider = self._opts.fileManager.currentFileProvider() var provider = self._opts.fileManager.currentFileProvider()
var path = self._opts.fileManager.currentPath() var path = self._opts.fileManager.currentPath()
if (provider && path) { if (provider && path) {
@ -25,10 +27,25 @@ class CompilerMetadata {
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
self.networks.forEach((network) => {
metadata[network] = self._syncContext(contract, metadata[network] || {})
})
provider.set(fileName, JSON.stringify(metadata, null, '\t'))
}
})
})
}
})
}
_syncContext (contract, metadata) {
var linkReferences = metadata['linkReferences'] var linkReferences = metadata['linkReferences']
var autoDeployLib = metadata['autoDeployLib'] var autoDeployLib = metadata['autoDeployLib']
if (!linkReferences) linkReferences = {} if (!linkReferences) linkReferences = {}
if (autoDeployLib === undefined) autoDeployLib = true if (autoDeployLib === undefined) autoDeployLib = true
for (var libFile in contract.object.evm.bytecode.linkReferences) { for (var libFile in contract.object.evm.bytecode.linkReferences) {
if (!linkReferences[libFile]) linkReferences[libFile] = {} if (!linkReferences[libFile]) linkReferences[libFile] = {}
for (var lib in contract.object.evm.bytecode.linkReferences[libFile]) { for (var lib in contract.object.evm.bytecode.linkReferences[libFile]) {
@ -39,13 +56,7 @@ class CompilerMetadata {
} }
metadata['linkReferences'] = linkReferences metadata['linkReferences'] = linkReferences
metadata['autoDeployLib'] = autoDeployLib metadata['autoDeployLib'] = autoDeployLib
provider.set(fileName, JSON.stringify(metadata, null, '\t')) return metadata
}
})
})
}
}
})
} }
metadataOf (contractName, callback) { metadataOf (contractName, callback) {
@ -53,16 +64,23 @@ class CompilerMetadata {
var provider = self._opts.fileManager.currentFileProvider() var provider = self._opts.fileManager.currentFileProvider()
var path = self._opts.fileManager.currentPath() var path = self._opts.fileManager.currentPath()
if (provider && path) { if (provider && path) {
executionContext.detectNetwork((err, { id, name } = {}) => {
if (err) {
console.log(err)
} else {
var fileName = path + '/' + contractName + '.json' var fileName = path + '/' + contractName + '.json'
provider.get(fileName, (error, content) => { provider.get(fileName, (error, content) => {
if (error) return callback(error) if (error) return callback(error)
try { try {
callback(null, JSON.parse(content)) var metadata = JSON.parse(content)
return callback(null, metadata[name + ':' + id] || metadata[name] || metadata[id])
} catch (e) { } catch (e) {
callback(e.message) callback(e.message)
} }
}) })
} }
})
}
} }
} }

Loading…
Cancel
Save