contracts/scripts/deploy-kit.js
Michael Bumann f5973756c8 Dynamically set AppIds
AppIds are used to lookup the actual contract addresses of each app.
Because of different registry names (open.aragonpm.eth vs. aragonpm.eth)
we have to use different ids in the local dev chain and in the
testnet/mainnet. To allow this we need to set the appids dynamically.

There is an open aragon issue to solve this and also allow to use
open.aragonpm.eth in the devchain by default.
https://github.com/aragon/aragen/issues/10
2019-03-27 00:21:06 +01:00

69 lines
2.2 KiB
JavaScript

const deployDAOFactory = require('@aragon/os/scripts/deploy-daofactory.js')
const fs = require('fs');
const path = require('path');
const argv = require('yargs').argv
const namehash = require('eth-ens-namehash').hash
const fileInject = require('./helpers/file_inject.js')
const DAOFactory = artifacts.require('DAOFactory')
const KreditsKit = artifacts.require('KreditsKit')
const arapp = require('../arapp.json')
const environment = argv['network'] || argv['environment'] || 'development'
const apm = arapp.environments[environment].apm
const ensAddr = arapp.environments[environment].registry || process.env.ENS
const daoFactoryAddress = arapp.environments[environment].daoFactory || process.env.DAO_FACTORY
module.exports = async function(callback) {
// load networkId; will change with updated truffle
const networkPromise = new Promise((resolve, reject) => {
web3.version.getNetwork((err, network) => {
if (err) {
reject(err);
} else {
resolve(network);
}
})
})
const networkId = await networkPromise;
console.log(`Deploying to networkId: ${networkId}`)
if (!ensAddr) {
callback(new Error("ENS address not found in environment variable ENS"))
}
console.log(`Using ENS at: ${ensAddr}`);
let daoFactory
if (daoFactoryAddress) {
daoFactory = DAOFactory.at(daoFactoryAddress)
} else {
daoFactory = (await deployDAOFactory(null, { artifacts, verbose: false })).daoFactory
}
console.log(`Using DAOFactory at: ${daoFactory.address}`)
const apps = fs.readdirSync('./apps')
console.log(`Found apps: [${apps}].${apm}`)
let appIds = {}
apps.sort().forEach((app) => {
let [first, ...rest] = app;
let contractName = `${first.toUpperCase()}${rest.join('')}`
appIds[contractName] = namehash(`kredits-${app}.${apm}`)
})
KreditsKit.new(daoFactory.address, ensAddr, Object.values(appIds)).then((kreditsKit) => {
console.log(`Deployed KreditsKit at: ${kreditsKit.address}`);
fileInject(path.join(__dirname, '..', 'lib/addresses/KreditsKit.json'), networkId, kreditsKit.address);
fileInject(path.join(__dirname, '..', 'lib/app_ids.json'), networkId, appIds);
callback();
}).catch((e) => {
console.log(e);
callback(e);
})
}