diff --git a/src/Subgraph.ts b/src/Subgraph.ts index e42c6e2..1bd2429 100644 --- a/src/Subgraph.ts +++ b/src/Subgraph.ts @@ -254,7 +254,7 @@ export class Subgraph extends vscode.TreeItem { type: 'node', request: 'launch', name: this.label, - program: '${workspaceRoot}' + `/${this.filePath}/server.js`, + program: `${this.filePath}/server.js`, skipFiles: ['/**'], // eslint-disable-next-line @typescript-eslint/naming-convention env: { NODE_ENV: 'local' }, diff --git a/src/setup.ts b/src/setup.ts index 367f6db..3b122e2 100644 --- a/src/setup.ts +++ b/src/setup.ts @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ import { commands, window, workspace } from 'vscode'; import { existsSync, mkdirSync, writeFileSync } from 'fs'; +import { isAbsolute, join } from 'path'; import axios from 'axios'; export const sampleSupergraphJson = { @@ -38,15 +39,22 @@ export const generateTemplate = (rootPath: string) => { mkdirSync(rootPath + '/.vscode'); } if (!existsSync(rootPath + '/.rover-runner/supergraph.json')) { - writeFileSync(`${rootPath}/.rover-runner/supergraph.json`, JSON.stringify(sampleSupergraphJson, null, 2), 'utf-8'); + writeFileSync( + `${rootPath}/.rover-runner/supergraph.json`, + JSON.stringify(sampleSupergraphJson, null, 2), + 'utf-8' + ); commands.executeCommand('subgraphsList.refreshEntry'); } }; export const isApolloConfigured = () => { if ( - workspace.getConfiguration().get('apolloStudioConfiguration.apolloKey', '').length > 0 && - workspace.getConfiguration().get('apolloStudioConfiguration.apolloGraphRef', '').length > 0 + workspace.getConfiguration().get('apolloStudioConfiguration.apolloKey', '') + .length > 0 && + workspace + .getConfiguration() + .get('apolloStudioConfiguration.apolloGraphRef', '').length > 0 ) { return true; } @@ -54,8 +62,12 @@ export const isApolloConfigured = () => { }; export const fetchSubgraphUrls = async () => { - let apolloKey = workspace.getConfiguration().get('apolloStudioConfiguration.apolloKey', ''); - let graphRef = workspace.getConfiguration().get('apolloStudioConfiguration.apolloGraphRef', ''); + let apolloKey = workspace + .getConfiguration() + .get('apolloStudioConfiguration.apolloKey', ''); + let graphRef = workspace + .getConfiguration() + .get('apolloStudioConfiguration.apolloGraphRef', ''); let body = { operationName: 'GetSubgraphUrls', query: @@ -91,3 +103,13 @@ export const fetchSubgraphUrls = async () => { return {}; }); }; + +export const makePathAbsolute = (filePath: string, configPath: string) => { + // If absolute or empty path, then return + if (isAbsolute(filePath) || filePath.length === 0) { + return filePath; + } + // Convert relative path to be absolute + const workspaceRoot = configPath.split('.rover-runner')[0]; + return join(workspaceRoot, filePath); +}; diff --git a/src/supergraph.ts b/src/supergraph.ts index 49b6625..045acfe 100644 --- a/src/supergraph.ts +++ b/src/supergraph.ts @@ -1,6 +1,6 @@ import { readFileSync } from 'fs'; import { setTimeout } from 'timers/promises'; -import { fetchSubgraphUrls } from './setup'; +import { fetchSubgraphUrls, makePathAbsolute } from './setup'; import { ExtensionContext, TreeItem, TreeItemCollapsibleState, window, workspace } from 'vscode'; import { SupergraphYaml, writeSupergraphYaml } from './supergraphYaml'; import { Subgraph } from './Subgraph'; @@ -35,6 +35,7 @@ export class Supergraph extends TreeItem { const current = context.workspaceState.get(subgraphName + 'currentUrl', 'devUrl'); // Can either be Stopped or Running const contextValue = context.workspaceState.get(subgraphName, 'StoppedSubgraph'); + const filePath = makePathAbsolute(subgraphConfig.path, configPath); return [ new Subgraph( subgraphName, @@ -42,7 +43,7 @@ export class Supergraph extends TreeItem { subgraphConfig.localUrl, usedDevUrl, contextValue, - subgraphConfig.path, + filePath, TreeItemCollapsibleState.None ), ];