diff --git a/CHANGELOG.md b/CHANGELOG.md index e6d1927102b4..6681bc7e9fbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,6 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [Vis Builder] Change classname prefix wiz to vb ([#2581](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2581/files)) - [Vis Builder] Change wizard to vis_builder in file names and paths ([#2587](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2587)) - [Windows] Facilitate building and running OSD and plugins on Windows platforms ([#2601](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2601)) -- [Windows] Add helper functions to work around the differences of platforms ([#2681](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2681)) - [Multi DataSource] Address UX comments on Data source list and create page ([#2625](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2625)) - [Vis Builder] Rename wizard to visBuilder in i18n id and formatted message id ([#2635](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2635)) - [Vis Builder] Rename wizard to visBuilder in class name, type name and function name ([#2639](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2639)) diff --git a/package.json b/package.json index 437412617326..969ba11831e6 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,6 @@ "@osd/apm-config-loader": "1.0.0", "@osd/config": "1.0.0", "@osd/config-schema": "1.0.0", - "@osd/cross-platform": "1.0.0", "@osd/i18n": "1.0.0", "@osd/interpreter": "1.0.0", "@osd/logging": "1.0.0", diff --git a/packages/osd-config-schema/package.json b/packages/osd-config-schema/package.json index 52471e29527c..1e07c42cba5a 100644 --- a/packages/osd-config-schema/package.json +++ b/packages/osd-config-schema/package.json @@ -10,9 +10,8 @@ "osd:bootstrap": "yarn build" }, "devDependencies": { - "@osd/cross-platform": "1.0.0", - "tsd": "^0.21.0", - "typescript": "4.0.2" + "typescript": "4.0.2", + "tsd": "^0.21.0" }, "peerDependencies": { "lodash": "^4.17.21", diff --git a/packages/osd-config-schema/src/errors/schema_error.test.ts b/packages/osd-config-schema/src/errors/schema_error.test.ts index 345304c955e5..9e7b5a897081 100644 --- a/packages/osd-config-schema/src/errors/schema_error.test.ts +++ b/packages/osd-config-schema/src/errors/schema_error.test.ts @@ -31,8 +31,6 @@ import { relative, sep } from 'path'; import { SchemaError } from '.'; -import { standardize, PROCESS_WORKING_DIR } from '@osd/cross-platform'; - /** * Make all paths in stacktrace relative. */ @@ -48,7 +46,9 @@ export const cleanStack = (stack: string) => } const path = parts[1]; - const relativePath = standardize(relative(PROCESS_WORKING_DIR, path)); + // Cannot use `standardize` from `@osd/utils + let relativePath = relative(process.cwd(), path); + if (process.platform === 'win32') relativePath = relativePath.replace(/\\/g, '/'); return line.replace(path, relativePath); }) diff --git a/packages/osd-cross-platform/README.md b/packages/osd-cross-platform/README.md deleted file mode 100644 index a61a2f184f02..000000000000 --- a/packages/osd-cross-platform/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# `@osd/cross-platform` — OpenSearch Dashboards cross-platform helpers - -This package contains the helper functions to work around the differences of platforms diff --git a/packages/osd-cross-platform/package.json b/packages/osd-cross-platform/package.json deleted file mode 100644 index 1af90b00a98f..000000000000 --- a/packages/osd-cross-platform/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "@osd/cross-platform", - "main": "./target/index.js", - "version": "1.0.0", - "license": "Apache-2.0", - "private": true, - "scripts": { - "build": "tsc", - "osd:bootstrap": "yarn build" - }, - "devDependencies": { - "typescript": "4.0.2", - "tsd": "^0.21.0" - } -} diff --git a/packages/osd-cross-platform/src/index.ts b/packages/osd-cross-platform/src/index.ts deleted file mode 100644 index 343d7e9257a4..000000000000 --- a/packages/osd-cross-platform/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -export * from './path'; -export * from './process'; diff --git a/packages/osd-cross-platform/src/path.ts b/packages/osd-cross-platform/src/path.ts deleted file mode 100644 index 7e37443f1bca..000000000000 --- a/packages/osd-cross-platform/src/path.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { normalize } from 'path'; - -/** - * Get a standardized reference to a path - * @param {string} path - the path to standardize - * @param {boolean} [usePosix=true] - produce a posix reference - * @param {boolean} [escapedBackslashes=true] - on Windows, double-backslash the reference - * @internal - */ -export const standardize = ( - path: string, - usePosix: boolean = true, - escapedBackslashes: boolean = true -) => { - /* Force os-dependant separators - * path.posix.normalize doesn't convert backslashes to slashes on Windows so we manually force it afterwards - */ - const normal = normalize(path); - - // Filter out in-browser executions as well as non-windows ones - if (process?.platform !== 'win32') return normal; - - if (usePosix) return normal.replace(/\\/g, '/'); - return escapedBackslashes ? normal.replace(/\\/g, '\\\\') : normal; -}; diff --git a/packages/osd-cross-platform/src/process.ts b/packages/osd-cross-platform/src/process.ts deleted file mode 100644 index fa593c943687..000000000000 --- a/packages/osd-cross-platform/src/process.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - */ - -import { execSync } from 'child_process'; - -let workingDir = process.cwd(); - -if (process.platform === 'win32') { - try { - const pathFullName = execSync('powershell "(Get-Item -LiteralPath $pwd).FullName"', { - cwd: workingDir, - encoding: 'utf8', - })?.trim?.(); - if (pathFullName?.length > 2) workingDir = pathFullName; - } catch (ex) { - // Do nothing - } -} - -export const PROCESS_WORKING_DIR = workingDir; diff --git a/packages/osd-cross-platform/tsconfig.json b/packages/osd-cross-platform/tsconfig.json deleted file mode 100644 index e9dd6313e6f7..000000000000 --- a/packages/osd-cross-platform/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target", - "declaration": true, - "declarationMap": true - }, - "include": [ - "src/**/*" - ] -} diff --git a/packages/osd-optimizer/package.json b/packages/osd-optimizer/package.json index e3ffe9a4930a..2edb72e9d1e0 100644 --- a/packages/osd-optimizer/package.json +++ b/packages/osd-optimizer/package.json @@ -13,7 +13,6 @@ "@babel/cli": "^7.16.0", "@babel/core": "^7.16.5", "@osd/babel-preset": "1.0.0", - "@osd/cross-platform": "1.0.0", "@osd/dev-utils": "1.0.0", "@osd/std": "1.0.0", "@osd/ui-shared-deps": "1.0.0", diff --git a/packages/osd-optimizer/src/optimizer/get_changes.test.ts b/packages/osd-optimizer/src/optimizer/get_changes.test.ts index 6ccf686e43af..44e1637d5437 100644 --- a/packages/osd-optimizer/src/optimizer/get_changes.test.ts +++ b/packages/osd-optimizer/src/optimizer/get_changes.test.ts @@ -33,7 +33,7 @@ import path from 'path'; jest.mock('execa'); import { getChanges } from './get_changes'; -import { standardize } from '@osd/cross-platform'; +import { standardize } from '@osd/dev-utils'; const execa: jest.Mock = jest.requireMock('execa'); diff --git a/packages/osd-plugin-generator/package.json b/packages/osd-plugin-generator/package.json index 66028c53875f..73aaeba4cb13 100644 --- a/packages/osd-plugin-generator/package.json +++ b/packages/osd-plugin-generator/package.json @@ -9,7 +9,6 @@ "osd:watch": "node scripts/build --watch" }, "dependencies": { - "@osd/cross-platform": "1.0.0", "@osd/dev-utils": "1.0.0", "ejs": "^3.1.7", "execa": "^4.0.2", diff --git a/packages/osd-plugin-generator/src/integration_tests/generate_plugin.test.ts b/packages/osd-plugin-generator/src/integration_tests/generate_plugin.test.ts index c81f248369e8..45ec5a6986a1 100644 --- a/packages/osd-plugin-generator/src/integration_tests/generate_plugin.test.ts +++ b/packages/osd-plugin-generator/src/integration_tests/generate_plugin.test.ts @@ -32,8 +32,7 @@ import Path from 'path'; import del from 'del'; import execa from 'execa'; -import { standardize } from '@osd/cross-platform'; -import { REPO_ROOT, createAbsolutePathSerializer } from '@osd/dev-utils'; +import { REPO_ROOT, standardize, createAbsolutePathSerializer } from '@osd/dev-utils'; import globby from 'globby'; // Has to be a posix reference because it is used to generate glob patterns diff --git a/packages/osd-plugin-helpers/package.json b/packages/osd-plugin-helpers/package.json index 55e5e803fe47..3738aae36b1a 100644 --- a/packages/osd-plugin-helpers/package.json +++ b/packages/osd-plugin-helpers/package.json @@ -16,7 +16,6 @@ "osd:watch": "tsc --watch" }, "dependencies": { - "@osd/cross-platform": "1.0.0", "@osd/dev-utils": "1.0.0", "@osd/optimizer": "1.0.0", "del": "^5.1.0", diff --git a/packages/osd-plugin-helpers/src/cli.ts b/packages/osd-plugin-helpers/src/cli.ts index f108f9a2f6ca..82bd9f5adbe4 100644 --- a/packages/osd-plugin-helpers/src/cli.ts +++ b/packages/osd-plugin-helpers/src/cli.ts @@ -30,7 +30,6 @@ import Path from 'path'; -import { PROCESS_WORKING_DIR } from '@osd/cross-platform'; import { RunWithCommands, createFlagError, createFailError } from '@osd/dev-utils'; import { findOpenSearchDashboardsJson } from './find_opensearch_dashboards_json'; @@ -80,10 +79,10 @@ export function runCli() { throw createFlagError('expected a single --skip-archive flag'); } - const pluginDir = await findOpenSearchDashboardsJson(PROCESS_WORKING_DIR); + const pluginDir = await findOpenSearchDashboardsJson(process.cwd()); if (!pluginDir) { throw createFailError( - `Unable to find OpenSearch Dashboards Platform plugin in [${PROCESS_WORKING_DIR}] or any of its parent directories. Has it been migrated properly? Does it have a opensearch_dashboards.json file?` + `Unable to find OpenSearch Dashboards Platform plugin in [${process.cwd()}] or any of its parent directories. Has it been migrated properly? Does it have a opensearch_dashboards.json file?` ); } @@ -149,30 +148,30 @@ export function runCli() { allowUnexpected: true, }, async run({ log, flags }) { - const pluginDir = await findOpenSearchDashboardsJson(PROCESS_WORKING_DIR); + const pluginDir = await findOpenSearchDashboardsJson(process.cwd()); if (!pluginDir) { throw createFailError( - `Unable to find OpenSearch Dashboards Platform plugin in [${PROCESS_WORKING_DIR}] or any of its parent directories. Has it been migrated properly? Does it have a opensearch_dashboards.json file?` + `Unable to find OpenSearch Dashboards Platform plugin in [${process.cwd()}] or any of its parent directories. Has it been migrated properly? Does it have a opensearch_dashboards.json file?` ); } let dashboardsPackage; try { - dashboardsPackage = await import(Path.join(PROCESS_WORKING_DIR, '../../package.json')); + dashboardsPackage = await import(Path.join(process.cwd(), '../../package.json')); } catch (ex) { throw createFailError(`Unable to parse the OpenSearch Dashboards' package.json file`); } let pluginPackage; try { - pluginPackage = await import(Path.join(PROCESS_WORKING_DIR, 'package.json')); + pluginPackage = await import(Path.join(process.cwd(), 'package.json')); } catch (ex) { throw createFailError(`Unable to parse the plugin's package.json file`); } let manifestFile; try { - manifestFile = await import(Path.join(PROCESS_WORKING_DIR, 'opensearch_dashboards.json')); + manifestFile = await import(Path.join(process.cwd(), 'opensearch_dashboards.json')); } catch (ex) { throw createFailError(`Unable to parse the plugin's opensearch_dashboards.json file`); } @@ -241,7 +240,7 @@ export function runCli() { const context: VersionContext = { log, - sourceDir: PROCESS_WORKING_DIR, + sourceDir: process.cwd(), pluginVersion: updatedPluginVersion, compatibilityVersion: updatedCompatibilityVersion, }; diff --git a/packages/osd-plugin-helpers/src/integration_tests/build.test.ts b/packages/osd-plugin-helpers/src/integration_tests/build.test.ts index 12a0b52ace24..35195f9bc163 100644 --- a/packages/osd-plugin-helpers/src/integration_tests/build.test.ts +++ b/packages/osd-plugin-helpers/src/integration_tests/build.test.ts @@ -32,8 +32,12 @@ import Path from 'path'; import Fs from 'fs'; import execa from 'execa'; -import { standardize } from '@osd/cross-platform'; -import { REPO_ROOT, createStripAnsiSerializer, createReplaceSerializer } from '@osd/dev-utils'; +import { + REPO_ROOT, + standardize, + createStripAnsiSerializer, + createReplaceSerializer, +} from '@osd/dev-utils'; import extract from 'extract-zip'; import del from 'del'; import globby from 'globby'; diff --git a/packages/osd-pm/package.json b/packages/osd-pm/package.json index cda579e14fef..3af720ce1691 100644 --- a/packages/osd-pm/package.json +++ b/packages/osd-pm/package.json @@ -69,7 +69,6 @@ "write-pkg": "^4.0.0" }, "dependencies": { - "@osd/cross-platform": "1.0.0", "@osd/utils": "1.0.0", "tslib": "^2.0.0" } diff --git a/packages/osd-pm/src/utils/projects_tree.ts b/packages/osd-pm/src/utils/projects_tree.ts index 3c14be94ca0f..41f9e4331098 100644 --- a/packages/osd-pm/src/utils/projects_tree.ts +++ b/packages/osd-pm/src/utils/projects_tree.ts @@ -31,7 +31,7 @@ import chalk from 'chalk'; import path from 'path'; -import { standardize } from '@osd/cross-platform'; +import { standardize } from '@osd/utils'; import { Project } from './project'; const projectKey = Symbol('__project'); diff --git a/packages/osd-utils/package.json b/packages/osd-utils/package.json index 1d632cffbf69..802b03a0adb0 100644 --- a/packages/osd-utils/package.json +++ b/packages/osd-utils/package.json @@ -11,7 +11,6 @@ }, "dependencies": { "@osd/config-schema": "1.0.0", - "@osd/cross-platform": "1.0.0", "load-json-file": "^6.2.0" }, "devDependencies": { diff --git a/packages/osd-utils/src/path/index.ts b/packages/osd-utils/src/path/index.ts index c661b04fb6ad..263d2d39ac36 100644 --- a/packages/osd-utils/src/path/index.ts +++ b/packages/osd-utils/src/path/index.ts @@ -28,7 +28,7 @@ * under the License. */ -import { join } from 'path'; +import { join, normalize } from 'path'; import { accessSync, constants } from 'fs'; import { TypeOf, schema } from '@osd/config-schema'; import { REPO_ROOT } from '../repo_root'; @@ -94,3 +94,27 @@ export const config = { data: schema.string({ defaultValue: () => getDataPath() }), }), }; + +/** + * Get a standardized reference to a path + * @param {string} path - the path to standardize + * @param {boolean} [usePosix=true] - produce a posix reference + * @param {boolean} [escapedBackslashes=true] - on Windows, double-backslash the reference + * @internal + */ +export const standardize = ( + path: string, + usePosix: boolean = true, + escapedBackslashes: boolean = true +) => { + /* Force os-dependant separators + * path.posix.normalize doesn't convert backslashes to slashes on Windows so we manually force it afterwards + */ + const normal = normalize(path); + + // Filter out in-browser executions as well as non-windows ones + if (process?.platform !== 'win32') return normal; + + if (usePosix) return normal.replace(/\\/g, '/'); + return escapedBackslashes ? normal.replace(/\\/g, '\\\\') : normal; +}; diff --git a/src/dev/build/lib/config.test.ts b/src/dev/build/lib/config.test.ts index 8005f2d952aa..db96a8c18dd0 100644 --- a/src/dev/build/lib/config.test.ts +++ b/src/dev/build/lib/config.test.ts @@ -30,8 +30,7 @@ import { resolve } from 'path'; -import { standardize } from '@osd/cross-platform'; -import { REPO_ROOT } from '@osd/utils'; +import { REPO_ROOT, standardize } from '@osd/utils'; import { createAbsolutePathSerializer } from '@osd/dev-utils'; import pkg from '../../../../package.json';