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 { globInjectable } from "./fs/glob.injectable";
|
||||
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
||||
import { awaitAll } from "./await-all";
|
||||
import { flatten, map, partition } from "lodash/fp";
|
||||
import { getInjectable } from "@ogre-tools/injectable";
|
||||
import { pipeline } from "@ogre-tools/fp";
|
||||
import { getLensLinkDirectoryInjectable } from "./get-lens-link-directory.injectable";
|
||||
@ -44,6 +44,8 @@ export const getSymlinkPathsInjectable = getInjectable({
|
||||
const notGlobbedFilesOrDirectories = await pipeline(
|
||||
toNotBeGlobbed,
|
||||
|
||||
uniq,
|
||||
|
||||
map(async (fileOrDirectory) => {
|
||||
const target = resolvePath(moduleDirectory, fileOrDirectory);
|
||||
|
||||
@ -77,6 +79,8 @@ export const getSymlinkPathsInjectable = getInjectable({
|
||||
awaitAll,
|
||||
|
||||
flatten,
|
||||
|
||||
uniqBy((x) => x.source),
|
||||
);
|
||||
};
|
||||
},
|
||||
|
||||
@ -236,6 +236,8 @@ describe("lens-link", () => {
|
||||
await readJsonFileMock.resolveSpecific(([path]) => path === "/some-directory/some-module/package.json", {
|
||||
name: "@some-scope/some-module",
|
||||
files: [
|
||||
"some-duplicate-file",
|
||||
"some-duplicate-file",
|
||||
"some-build-directory-with-asterisk/*",
|
||||
"some-build-directory-with-wild-card/**",
|
||||
"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", () => {
|
||||
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");
|
||||
@ -307,6 +310,12 @@ describe("lens-link", () => {
|
||||
"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-project/node_modules/@some-scope/some-module/some-build-directory-with-asterisk",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user