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
69 lines
2.2 KiB
JavaScript
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);
|
|
})
|
|
}
|