86 lines
2.8 KiB
JavaScript
86 lines
2.8 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"
|
|
},
|
|
};
|
|
|
|
// 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}`);
|
|
});
|
|
});
|