/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { normalize, join, dirname } from 'vs/base/common/path'; import { URI } from 'vs/base/common/uri'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { Schemas } from 'vs/base/common/network'; export function resolveCurrentDirectory(uri: string, rootPath?: string): string | undefined { let sqlUri = URI.parse(uri); let currentDirectory: string | undefined; // use current directory of the sql file if sql file is saved if (sqlUri.scheme === Schemas.file) { currentDirectory = dirname(sqlUri.fsPath); } else if (sqlUri.scheme === Schemas.untitled) { // if sql file is unsaved/untitled but a workspace is open use workspace root let root = rootPath; if (root) { currentDirectory = root; } } else { currentDirectory = dirname(sqlUri.path); } return currentDirectory; } export function resolveFilePath(uri: string, filePath: string, rootPath?: string): string | undefined { let currentDirectory = resolveCurrentDirectory(uri, rootPath); if (currentDirectory) { return normalize(join(currentDirectory, filePath)); } return undefined; } export function getRootPath(contextService: IWorkspaceContextService): string | undefined { let isWorkspace = contextService.getWorkbenchState() === WorkbenchState.WORKSPACE; if (isWorkspace) { let folder = contextService.getWorkspace().folders[0]; if (folder && folder.uri) { return folder.uri.fsPath; } } return undefined; }