mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
feat: Support duplicate files in linking
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi> Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
parent
2de353294e
commit
3cf2948c7a
@ -1,8 +1,8 @@
|
|||||||
|
import { flatten, map, partition, uniq, uniqBy } from "lodash/fp";
|
||||||
import type { PackageJsonAndPath } from "./package-json-and-path";
|
import type { PackageJsonAndPath } from "./package-json-and-path";
|
||||||
import { globInjectable } from "./fs/glob.injectable";
|
import { globInjectable } from "./fs/glob.injectable";
|
||||||
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
||||||
import { awaitAll } from "./await-all";
|
import { awaitAll } from "./await-all";
|
||||||
import { flatten, map, partition } from "lodash/fp";
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { pipeline } from "@ogre-tools/fp";
|
import { pipeline } from "@ogre-tools/fp";
|
||||||
import { getLensLinkDirectoryInjectable } from "./get-lens-link-directory.injectable";
|
import { getLensLinkDirectoryInjectable } from "./get-lens-link-directory.injectable";
|
||||||
@ -44,6 +44,8 @@ export const getSymlinkPathsInjectable = getInjectable({
|
|||||||
const notGlobbedFilesOrDirectories = await pipeline(
|
const notGlobbedFilesOrDirectories = await pipeline(
|
||||||
toNotBeGlobbed,
|
toNotBeGlobbed,
|
||||||
|
|
||||||
|
uniq,
|
||||||
|
|
||||||
map(async (fileOrDirectory) => {
|
map(async (fileOrDirectory) => {
|
||||||
const target = resolvePath(moduleDirectory, fileOrDirectory);
|
const target = resolvePath(moduleDirectory, fileOrDirectory);
|
||||||
|
|
||||||
@ -77,6 +79,8 @@ export const getSymlinkPathsInjectable = getInjectable({
|
|||||||
awaitAll,
|
awaitAll,
|
||||||
|
|
||||||
flatten,
|
flatten,
|
||||||
|
|
||||||
|
uniqBy((x) => x.source),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|||||||
@ -236,6 +236,8 @@ describe("lens-link", () => {
|
|||||||
await readJsonFileMock.resolveSpecific(([path]) => path === "/some-directory/some-module/package.json", {
|
await readJsonFileMock.resolveSpecific(([path]) => path === "/some-directory/some-module/package.json", {
|
||||||
name: "@some-scope/some-module",
|
name: "@some-scope/some-module",
|
||||||
files: [
|
files: [
|
||||||
|
"some-duplicate-file",
|
||||||
|
"some-duplicate-file",
|
||||||
"some-build-directory-with-asterisk/*",
|
"some-build-directory-with-asterisk/*",
|
||||||
"some-build-directory-with-wild-card/**",
|
"some-build-directory-with-wild-card/**",
|
||||||
"some-build-directory-with-wild-card-before-asterisk/**/*",
|
"some-build-directory-with-wild-card-before-asterisk/**/*",
|
||||||
@ -286,8 +288,9 @@ describe("lens-link", () => {
|
|||||||
|
|
||||||
describe("when globbing resolves and files or directories are identified", () => {
|
describe("when globbing resolves and files or directories are identified", () => {
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await globMock.resolve(["some-directory-from-glob/some-file-from-glob.txt"]);
|
await globMock.resolve(["some-directory-from-glob/some-file-from-glob.txt", "some-duplicate-file"]);
|
||||||
|
|
||||||
|
await isFileOrDirectoryMock.resolve("file");
|
||||||
await isFileOrDirectoryMock.resolve("dir");
|
await isFileOrDirectoryMock.resolve("dir");
|
||||||
await isFileOrDirectoryMock.resolve("dir");
|
await isFileOrDirectoryMock.resolve("dir");
|
||||||
await isFileOrDirectoryMock.resolve("dir");
|
await isFileOrDirectoryMock.resolve("dir");
|
||||||
@ -307,6 +310,12 @@ describe("lens-link", () => {
|
|||||||
"file",
|
"file",
|
||||||
],
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
"/some-directory/some-module/some-duplicate-file",
|
||||||
|
"/some-directory/some-project/node_modules/@some-scope/some-module/some-duplicate-file",
|
||||||
|
"file",
|
||||||
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
"/some-directory/some-module/some-build-directory-with-asterisk",
|
"/some-directory/some-module/some-build-directory-with-asterisk",
|
||||||
"/some-directory/some-project/node_modules/@some-scope/some-module/some-build-directory-with-asterisk",
|
"/some-directory/some-project/node_modules/@some-scope/some-module/some-build-directory-with-asterisk",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user