harb/subgraph/base_sepolia/deploy.js
2025-02-22 10:19:10 +01:00

102 lines
3.4 KiB
JavaScript

const fs = require('fs');
const { exec } = require("child_process");
const readline = require("readline");
// Netzwerkspezifische Informationen
const networks = {
'base-sepolia': {
NETWORK: 'base-sepolia',
CONTRACT_ADDRESS_HARB: '0x22c264Ecf8D4E49D1E3CabD8DD39b7C4Ab51C1B8',
CONTRACT_ADDRESS_STAKE: '0xe28020BCdEeAf2779dd47c670A8eFC2973316EE2',
START_BLOCK: 20940337,
SUBGRAPH_NAME: "harb-base-sepolia"
},
'sepolia': {
NETWORK: 'sepolia',
CONTRACT_ADDRESS_HARB: '0x087F256D11fe533b0c7d372e44Ee0F9e47C89dF9',
CONTRACT_ADDRESS_STAKE: '0xCd21a41a137BCAf8743E47D048F57D92398f7Da9',
START_BLOCK: 6746241,
SUBGRAPH_NAME: "harb"
},
'base': {
NETWORK: 'base',
CONTRACT_ADDRESS_HARB: '0x45caa5929f6ee038039984205bdecf968b954820',
CONTRACT_ADDRESS_STAKE: '0xed70707fab05d973ad41eae8d17e2bcd36192cfc',
START_BLOCK: 26038614,
// START_BLOCK: 25895309,
SUBGRAPH_NAME: "kraiken-base"
},
'base2': {
NETWORK: 'base',
CONTRACT_ADDRESS_HARB: '0x45caa5929f6ee038039984205bdecf968b954820',
CONTRACT_ADDRESS_STAKE: '0xed70707fab05d973ad41eae8d17e2bcd36192cfc',
START_BLOCK: 26038614,
// START_BLOCK: 25895309,
SUBGRAPH_NAME: "kraiken-base-test"
},
};
// Netzwerk über Kommandozeilenargument auswählen
const args = process.argv.slice(2);
if (args.length === 0) {
console.error('Kein Netzwerk angegeben, z. B.: node deploy.js sepolia');
process.exit(1);
}
const selectedNetwork = networks[args[0]];
if (!selectedNetwork) {
console.error(`Kein gülitges Netzwerk angegeben: ${args[0]}. Verfügbare Netzwerke: ${Object.keys(networks).join(', ')}`);
process.exit(1);
}
// Template-Datei laden
const subgraphTemplate = fs.readFileSync('subgraph_template.yaml', 'utf-8');
// Platzhalter ersetzen
let subgraphConfig = subgraphTemplate.replace(/{{NETWORK}}/g, selectedNetwork.NETWORK);
subgraphConfig = subgraphConfig.replace(/{{CONTRACT_ADDRESS_STAKE}}/g, selectedNetwork.CONTRACT_ADDRESS_STAKE);
subgraphConfig = subgraphConfig.replace(/{{CONTRACT_ADDRESS_HARB}}/g, selectedNetwork.CONTRACT_ADDRESS_HARB);
subgraphConfig = subgraphConfig.replace(/{{START_BLOCK}}/g, selectedNetwork.START_BLOCK);
// Neue Datei generieren
fs.writeFileSync('subgraph.yaml', subgraphConfig);
console.log(`subgraph.yaml für das Netzwerk ${selectedNetwork.NETWORK} wurde erfolgreich generiert.`);
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question('Which version label to use1? (e.g. "v0.0.1"): ', (versionLabel) => {
if (!versionLabel) {
console.error("Kein Versionslabel angegeben. Abbruch.");
rl.close();
process.exit(1);
}
const serverAdress = "https://api.studio.thegraph.com/deploy/";
console.log(`Starte Deployment mit Versionslabel "${versionLabel}"...`);
// Spawn-Prozess starten
// const deployProcess = spawn("graph", ["deploy", "--node", serverAdress, selectedNetwork.SUBGRAPH_NAME]);
const command = `graph deploy --node ${serverAdress} ${selectedNetwork.SUBGRAPH_NAME} --version-label ${versionLabel}`;
console.log(`Auszuführender Befehl: ${command}`);
exec(command, (error, stdout, stderr) => {
if (error) {
console.error(`Fehler: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
}
console.log(`stdout: ${stdout}`);
});
});