Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove cli stacktrace from cli error output #303

Merged
merged 3 commits into from
Jan 22, 2024
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 14 additions & 6 deletions packages/cli/cli_internal.ts
Original file line number Diff line number Diff line change
@@ -16,7 +16,15 @@
along with the library. If not, see <http://www.gnu.org/licenses/>.
*/

import { Project, web3, NetworkId, networkIds, validateNFTBaseUri, enableDebugMode } from '@alephium/web3'
import {
Project,
web3,
NetworkId,
networkIds,
validateNFTBaseUri,
enableDebugMode,
isDebugModeEnabled
} from '@alephium/web3'
import { program } from 'commander'
import { run as runJestTests } from 'jest'
import path from 'path'
@@ -26,7 +34,7 @@
import { generateImagesWithOpenAI, uploadImagesAndMetadataToIPFS } from './scripts/pre-designed-nft'
import { codegen, getConfigFile, isNetworkLive, loadConfig } from './src'

function getConfig(options: any): Configuration {

Check warning on line 37 in packages/cli/cli_internal.ts

GitHub Actions / build (16)

Unexpected any. Specify a different type

Check warning on line 37 in packages/cli/cli_internal.ts

GitHub Actions / build (18)

Unexpected any. Specify a different type
const configFile = options.config ? (options.config as string) : getConfigFile()
console.log(`Loading alephium config file: ${configFile}`)
const config = loadConfig(configFile)
@@ -83,7 +91,7 @@
try {
const config = getConfig(options)
const networkId = checkAndGetNetworkId(options.network)
const nodeUrl = config.networks[networkId].nodeUrl

Check warning on line 94 in packages/cli/cli_internal.ts

GitHub Actions / build (16)

Generic Object Injection Sink

Check warning on line 94 in packages/cli/cli_internal.ts

GitHub Actions / build (18)

Generic Object Injection Sink
if (!(await isNetworkLive(nodeUrl))) {
throw new Error(`${networkId} is not live`)
}
@@ -96,11 +104,11 @@
if (options.skipGenerate) {
return
}
const artifactDir = config.artifactDir! // there is a default value always

Check warning on line 107 in packages/cli/cli_internal.ts

GitHub Actions / build (16)

Forbidden non-null assertion

Check warning on line 107 in packages/cli/cli_internal.ts

GitHub Actions / build (18)

Forbidden non-null assertion
codegen(artifactDir)
console.log('✅ Codegen completed!')
} catch (error) {
program.error(`✘ Failed to compile, error: ${buildErrorOutput(error, options.debug)}`)
program.error(`✘ Failed to compile, error: ${buildErrorOutput(error, isDebugModeEnabled())}`)
}
})

@@ -174,7 +182,7 @@
const toIndex = tryGetScriptIndex(options.to)
await deployAndSaveProgress(config, networkId, fromIndex, toIndex)
} catch (error) {
program.error(`✘ Failed to deploy contracts, error: ${buildErrorOutput(error, options.debug)}`)
program.error(`✘ Failed to deploy contracts, error: ${buildErrorOutput(error, isDebugModeEnabled())}`)
}
})

@@ -193,7 +201,7 @@
try {
const config = getConfig(options)
const networkId = checkAndGetNetworkId(options.network)
const openaiAPIKey = config.networks[networkId].settings.openaiAPIKey

Check warning on line 204 in packages/cli/cli_internal.ts

GitHub Actions / build (16)

Generic Object Injection Sink

Check warning on line 204 in packages/cli/cli_internal.ts

GitHub Actions / build (18)

Generic Object Injection Sink
if (!openaiAPIKey) {
throw new Error('OpenAI API key not specified')
}
@@ -204,7 +212,7 @@

await generateImagesWithOpenAI(openaiAPIKey, prompt, numberOfImages, imageSize, storedDir)
} catch (error) {
program.error(`✘ Failed to generate images, error: ${buildErrorOutput(error, options.debug)}`)
program.error(`✘ Failed to generate images, error: ${buildErrorOutput(error, isDebugModeEnabled())}`)
}
})

@@ -224,7 +232,7 @@
const metadataFile = options.metadataFile as string
const config = getConfig(options)
const networkId = checkAndGetNetworkId(options.network)
const settings = config.networks[networkId].settings

Check warning on line 235 in packages/cli/cli_internal.ts

GitHub Actions / build (16)

Generic Object Injection Sink

Check warning on line 235 in packages/cli/cli_internal.ts

GitHub Actions / build (18)

Generic Object Injection Sink
const projectId = settings.ipfs.infura.projectId
const projectSecret = settings.ipfs.infura.projectSecret
if (!projectId || !projectSecret) {
@@ -235,7 +243,7 @@
console.log('NFTBaseUri:')
console.log(result)
} catch (error) {
program.error(`✘ Failed to upload images, error: ${buildErrorOutput(error, options.debug)}`)
program.error(`✘ Failed to upload images, error: ${buildErrorOutput(error, isDebugModeEnabled())}`)
}
})

@@ -253,7 +261,7 @@
console.log('Token Metadataz:')
console.log(result)
} catch (error) {
program.error(`✘ Failed to upload images metadata, error: ${buildErrorOutput(error, options.debug)}`)
program.error(`✘ Failed to upload images metadata, error: ${buildErrorOutput(error, isDebugModeEnabled())}`)
}
})


Unchanged files with check annotations Beta

import path from 'path'
import { Configuration, CreateImageRequestSizeEnum, OpenAIApi } from 'openai'
import { create as ipfsHttpClient } from 'ipfs-http-client'
import { validateNFTBaseUri, NFTTokenUriMetaData, validNFTUriMetaDataAttributeTypes } from '@alephium/web3'

Check warning on line 22 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (16)

'validateNFTBaseUri' is defined but never used

Check warning on line 22 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (18)

'validateNFTBaseUri' is defined but never used
import { parse } from 'yaml'
export interface NFTMetadataConfig {
})
for (let i = 0; i < numberOfImages; i++) {
const imageUrl = response.data.data[i].url!

Check warning on line 59 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (16)

Forbidden non-null assertion

Check warning on line 59 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (16)

Generic Object Injection Sink

Check warning on line 59 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (18)

Forbidden non-null assertion

Check warning on line 59 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (18)

Generic Object Injection Sink
const imageResponse: Response = await fetch(imageUrl)
const fileStream = fs.createWriteStream(`${storedDir}/${i}`, { flags: 'wx' })
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
await imageResponse.body!.pipe(fileStream)

Check warning on line 64 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (16)

Forbidden non-null assertion

Check warning on line 64 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (18)

Forbidden non-null assertion
}
}
if (remoteDirURL) {
files.forEach((file, index) => {
metadata.push({
name: metadataConfig[file]?.name ?? `#${padding(index, numberLength)}`,

Check warning on line 105 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (16)

Generic Object Injection Sink

Check warning on line 105 in packages/cli/scripts/pre-designed-nft.ts

GitHub Actions / build (18)

Generic Object Injection Sink
description: metadataConfig[file]?.description,
image: `${remoteDirURL}/${file}`,
attributes: convertAttributes(metadataConfig[file]?.attributes)