refactor DAO deployment

This commit is contained in:
2019-03-24 22:11:24 +01:00
parent 12341d1526
commit e1fea4ed97
10 changed files with 260 additions and 113 deletions

View File

@@ -1,49 +1,39 @@
const deployDAOFactory = require('@aragon/os/scripts/deploy-daofactory.js')
const KreditsKit = artifacts.require('KreditsKit')
const fs = require('fs');
const path = require('path');
const libPath = path.join(__dirname, '..', 'lib');
const addressesPath = path.join(libPath, 'addresses');
const ensAddr = process.env.ENS
const KreditsKit = artifacts.require('KreditsKit')
module.exports = async (callback) => {
const ensAddr = process.env.ENS
const daoFactoryAddress = process.env.DAO_FACTORY
module.exports = async function(callback) {
if (!ensAddr) {
callback(new Error("ENS address not found in environment variable ENS"))
}
console.log(`Using ENS at: ${ensAddr}`);
deployDAOFactory(null, { artifacts, verbose: false })
.catch(console.log)
.then((result) => {
const daoFactory = result.daoFactory
let daoFactory
if (daoFactoryAddress) {
daoFactory = DAOFactory.at(daoFactoryAddress)
} else {
daoFactory = (await deployDAOFactory(null, { artifacts, verbose: false })).daoFactory
}
console.log(`Using DAOFactory at: ${daoFactory.address}`)
KreditsKit.new(daoFactory.address, ensAddr)
.catch(console.log)
.then((kreditsKit) => {
console.log(kreditsKit.address)
let kreditsKit = await KreditsKit.new(daoFactory.address, ensAddr)
kreditsKit.newInstance().then((ret) => {
console.log(ret.logs);
const installedEvents = ret.logs.filter(log => log.event === 'InstalledApp').map(log => log.args)
const deployEvents = ret.logs.filter(log => log.event === 'DeployInstance').map(log => log.args)
const networkId = parseInt(web3.version.network);
if (deployEvents.length > 1) {
callback(new Error("More than one DAO was deployed. Something is wrong"))
}
const daoAddress = deployEvents[0].dao;
const networkId = parseInt(web3.version.network);
let addresseFile = path.join(addressesPath, `KreditsKit.json`);
let addresses = JSON.parse(fs.readFileSync(addresseFile));
let addresseFile = path.join(addressesPath, `dao.json`);
let addresses = JSON.parse(fs.readFileSync(addresseFile));
addresses[networkId] = kreditsKit.address;
fs.writeFileSync(addresseFile, JSON.stringify(addresses));
addresses[networkId] = daoAddress;
fs.writeFileSync(addresseFile, JSON.stringify(addresses));
callback();
}).catch((e) => {
console.log(e);
})
})
})
console.log(`Deployed KreditsKit at: ${kreditsKit.address}`);
callback();
}

44
scripts/new-dao.js Normal file
View File

@@ -0,0 +1,44 @@
const fs = require('fs');
const path = require('path');
const libPath = path.join(__dirname, '..', 'lib');
const addressesPath = path.join(libPath, 'addresses');
const KreditsKit = artifacts.require('KreditsKit')
module.exports = async function(callback) {
const networkId = parseInt(web3.version.network);
let kitAddresseFile = path.join(addressesPath, 'KreditsKit.json');
let kitAddresses = JSON.parse(fs.readFileSync(kitAddresseFile));
let kreditsKitAddress = process.env.KREDITS_KIT || kitAddresses[networkId]
if (!kreditsKitAddress) {
callback(new Error("KreditsKit address not found in environment variable KREDITS_KIT"))
}
console.log(`Using KreditsKit at: ${kreditsKitAddress}`);
let kreditsKit = KreditsKit.at(kreditsKitAddress)
kreditsKit.newInstance().then((ret) => {
console.log(ret.logs);
const installedEvents = ret.logs.filter(log => log.event === 'InstalledApp').map(log => log.args)
const deployEvents = ret.logs.filter(log => log.event === 'DeployInstance').map(log => log.args)
if (deployEvents.length > 1) {
callback(new Error("More than one DAO was deployed. Something is wrong"))
}
const daoAddress = deployEvents[0].dao;
let addresseFile = path.join(addressesPath, `dao.json`);
let addresses = JSON.parse(fs.readFileSync(addresseFile));
addresses[networkId] = daoAddress;
fs.writeFileSync(addresseFile, JSON.stringify(addresses));
console.log(`\n\nCreated new DAO at: ${daoAddress}`)
callback();
}).catch((err) => {
console.log('failed to create a new instance')
callback(err)
})
}