Skip to content

Commit 5e36583

Browse files
committed
fix: use path.join to manage path concat
1 parent 000810b commit 5e36583

File tree

1 file changed

+32
-5
lines changed

1 file changed

+32
-5
lines changed

cli/helpers.ts

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import fs from 'fs'
2+
import path from 'path'
23
import * as dotenv from 'dotenv'
34

4-
import { utils, providers, Wallet } from 'ethers'
5+
import { utils, BigNumber, BigNumberish, Signer } from 'ethers'
56
import ipfsHttpClient from 'ipfs-http-client'
67
import inquirer from 'inquirer'
78

@@ -15,6 +16,8 @@ import {
1516
jsonToSubgraphMetadata,
1617
jsonToVersionMetadata,
1718
} from './metadata'
19+
import { solidityKeccak256 } from 'ethers/lib/utils'
20+
import { GraphToken } from '../build/types/GraphToken'
1821

1922
dotenv.config()
2023

@@ -46,20 +49,24 @@ export class IPFS {
4649
export const pinMetadataToIPFS = async (
4750
ipfs: string,
4851
type: string,
49-
path?: string, // Only pass path or metadata, not both
52+
filepath?: string, // Only pass path or metadata, not both
5053
metadata?: SubgraphMetadata | VersionMetadata,
5154
): Promise<string> => {
52-
if (metadata == undefined && path != undefined) {
55+
if (metadata == undefined && filepath != undefined) {
5356
if (type == 'subgraph') {
54-
metadata = jsonToSubgraphMetadata(JSON.parse(fs.readFileSync(__dirname + path).toString()))
57+
metadata = jsonToSubgraphMetadata(
58+
JSON.parse(fs.readFileSync(path.join(__dirname, filepath)).toString()),
59+
)
5560
logger.info('Meta data:')
5661
logger.info(` Subgraph Description: ${metadata.description}`)
5762
logger.info(`Subgraph Display Name: ${metadata.displayName}`)
5863
logger.info(` Subgraph Image: ${metadata.image}`)
5964
logger.info(` Subgraph Code Repository: ${metadata.codeRepository}`)
6065
logger.info(` Subgraph Website: ${metadata.website}`)
6166
} else if (type == 'version') {
62-
metadata = jsonToVersionMetadata(JSON.parse(fs.readFileSync(__dirname + path).toString()))
67+
metadata = jsonToVersionMetadata(
68+
JSON.parse(fs.readFileSync(path.join(__dirname, filepath)).toString()),
69+
)
6370
logger.info('Meta data:')
6471
logger.info(` Version Description: ${metadata.description}`)
6572
logger.info(` Version Label: ${metadata.label}`)
@@ -104,3 +111,23 @@ export const confirm = async (message: string, skip: boolean): Promise<boolean>
104111
}
105112
return true
106113
}
114+
115+
export const buildSubgraphID = (account: string, seqID: BigNumber): string =>
116+
solidityKeccak256(['address', 'uint256'], [account, seqID])
117+
118+
export const ensureGRTAllowance = async (
119+
owner: Signer,
120+
spender: string,
121+
amount: BigNumberish,
122+
grt: GraphToken,
123+
): Promise<void> => {
124+
const ownerAddress = await owner.getAddress()
125+
const allowance = await grt.allowance(ownerAddress, spender)
126+
const allowTokens = BigNumber.from(amount).sub(allowance)
127+
if (allowTokens.gt(0)) {
128+
console.log(
129+
`\nApproving ${spender} to spend ${allowTokens} tokens on ${ownerAddress} behalf...`,
130+
)
131+
await grt.connect(owner).approve(spender, amount)
132+
}
133+
}

0 commit comments

Comments
 (0)