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" }, }; // 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}`); }); });