Replace repository URL in records with published repo record id #67
@ -4,14 +4,23 @@ import path from 'path';
|
|||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
import { hideBin } from 'yargs/helpers';
|
import { hideBin } from 'yargs/helpers';
|
||||||
|
|
||||||
|
import { StdFee } from '@cosmjs/stargate';
|
||||||
import { Registry } from '@cerc-io/registry-sdk';
|
import { Registry } from '@cerc-io/registry-sdk';
|
||||||
|
|
||||||
import { getConfig, getGasAndFees, getConnectionInfo, txOutput } from '../../src/util';
|
import { getConfig, getGasAndFees, getConnectionInfo, txOutput } from '../../src/util';
|
||||||
|
|
||||||
|
enum RecordType {
|
||||||
|
RepositoryRecord = 'RepositoryRecord',
|
||||||
|
ServiceRecord = 'ServiceRecord',
|
||||||
|
StackRecord = 'StackRecord',
|
||||||
|
SubgraphRecord = 'SubgraphRecord',
|
||||||
|
WatcherRecord = 'WatcherRecord',
|
||||||
|
}
|
||||||
|
|
||||||
const recordTypeToRecordField = new Map<string, string>([
|
const recordTypeToRecordField = new Map<string, string>([
|
||||||
['WatcherRecord', 'watcher'],
|
[RecordType.WatcherRecord, 'watcher'],
|
||||||
['SubgraphRecord', 'subgraph'],
|
[RecordType.SubgraphRecord, 'subgraph'],
|
||||||
['ServiceRecord', 'service']
|
[RecordType.ServiceRecord, 'service']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let registry: Registry;
|
let registry: Registry;
|
||||||
@ -81,7 +90,7 @@ async function publishRecordsFromDir (recordsDir: string): Promise<void> {
|
|||||||
const record = readRecord(filePath);
|
const record = readRecord(filePath);
|
||||||
|
|
||||||
// Publish record
|
// Publish record
|
||||||
const result = await registry.setRecord({ privateKey: userKey, record, bondId }, userKey, fee);
|
const result = await publishRecord(userKey, bondId, fee, record);
|
||||||
|
|
||||||
console.log(`Published record ${file}`);
|
console.log(`Published record ${file}`);
|
||||||
txOutput(result, JSON.stringify(result, undefined, 2), '', false);
|
txOutput(result, JSON.stringify(result, undefined, 2), '', false);
|
||||||
@ -91,7 +100,7 @@ async function publishRecordsFromDir (recordsDir: string): Promise<void> {
|
|||||||
|
|
||||||
// Check if deployment record files exist
|
// Check if deployment record files exist
|
||||||
const deploymentRecordsDir = path.resolve(recordsDir, 'deployments');
|
const deploymentRecordsDir = path.resolve(recordsDir, 'deployments');
|
||||||
if (!fs.statSync(deploymentRecordsDir).isDirectory()) {
|
if (!fs.existsSync(deploymentRecordsDir) || !fs.statSync(deploymentRecordsDir).isDirectory()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.log('--------------------------------------');
|
console.log('--------------------------------------');
|
||||||
@ -142,6 +151,25 @@ function readRecord (filePath: string): any {
|
|||||||
return record;
|
return record;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function publishRecord (userKey: string, bondId: string, fee: StdFee, record: any): Promise<any> {
|
||||||
|
if (record.repository) {
|
||||||
|
const repoUrl = record.repository;
|
||||||
|
|
||||||
|
const queryResult = await registry.queryRecords({ type: RecordType.RepositoryRecord, url: repoUrl }, true);
|
||||||
|
if (queryResult.length === 0) {
|
||||||
|
throw new Error(`Record not found, type: ${RecordType.RepositoryRecord}, url: ${repoUrl}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume the first query result
|
||||||
|
const repoRecordId = queryResult[0].id;
|
||||||
|
|
||||||
|
// Replace repository URL with the repo record id
|
||||||
|
record.repository = repoRecordId;
|
||||||
|
}
|
||||||
|
|
||||||
|
return registry.setRecord({ privateKey: userKey, record, bondId }, userKey, fee);
|
||||||
|
}
|
||||||
|
|
||||||
function getArgs (): any {
|
function getArgs (): any {
|
||||||
return yargs(hideBin(process.argv)).parserConfiguration({
|
return yargs(hideBin(process.argv)).parserConfiguration({
|
||||||
'parse-numbers': false
|
'parse-numbers': false
|
||||||
|
Loading…
Reference in New Issue
Block a user