mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Refactor for simpler application root
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi> Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
parent
395d75a9b4
commit
d61deb8b73
@ -0,0 +1,16 @@
|
|||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
||||||
|
import { workingDirectoryInjectable } from "./working-directory.injectable";
|
||||||
|
|
||||||
|
const configFilePathInjectable = getInjectable({
|
||||||
|
id: "config-file-path",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const resolvePath = di.inject(resolvePathInjectable);
|
||||||
|
const workingDirectory = di.inject(workingDirectoryInjectable);
|
||||||
|
|
||||||
|
return resolvePath(workingDirectory, ".lens-links.json");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default configFilePathInjectable;
|
||||||
@ -0,0 +1,18 @@
|
|||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import { writeJsonFileInjectable } from "./fs/write-json-file.injectable";
|
||||||
|
import configFilePathInjectable from "./config-file-path.injectable";
|
||||||
|
|
||||||
|
const createEmptyConfigInjectable = getInjectable({
|
||||||
|
id: "create-empty-config",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const configFilePath = di.inject(configFilePathInjectable);
|
||||||
|
const writeJsonFile = di.inject(writeJsonFileInjectable);
|
||||||
|
|
||||||
|
return async () => {
|
||||||
|
await writeJsonFile(configFilePath, []);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default createEmptyConfigInjectable;
|
||||||
@ -3,16 +3,20 @@ import { awaitAll } from "./await-all";
|
|||||||
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 { createSymlinkInjectable } from "./fs/create-symlink.injectable";
|
import { createSymlinkInjectable } from "./fs/create-symlink.injectable";
|
||||||
|
import type { PackageJsonAndPath } from "./package-json-and-path";
|
||||||
|
import { getSymlinkPathsInjectable } from "./get-symlink-paths.injectable";
|
||||||
|
|
||||||
export const createSymLinksInjectable = getInjectable({
|
export const createSymlinksInjectable = getInjectable({
|
||||||
id: "create-sym-links",
|
id: "create-symlinks",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
|
const getSymlinkPaths = di.inject(getSymlinkPathsInjectable);
|
||||||
const createSymlink = di.inject(createSymlinkInjectable);
|
const createSymlink = di.inject(createSymlinkInjectable);
|
||||||
|
|
||||||
return async (symlinkPaths: { target: string; source: string; type: "file" | "dir" }[]) => {
|
return async (packageJsons: PackageJsonAndPath[]) => {
|
||||||
await pipeline(
|
await pipeline(
|
||||||
symlinkPaths,
|
packageJsons,
|
||||||
|
getSymlinkPaths,
|
||||||
map(({ target, source, type }) => createSymlink(target, source, type)),
|
map(({ target, source, type }) => createSymlink(target, source, type)),
|
||||||
awaitAll,
|
awaitAll,
|
||||||
);
|
);
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import { existsInjectable } from "./fs/exists.injectable";
|
||||||
|
import { readJsonFileInjectable } from "./fs/read-json-file.injectable";
|
||||||
|
import configFilePathInjectable from "./config-file-path.injectable";
|
||||||
|
|
||||||
|
export type Config = string[];
|
||||||
|
|
||||||
|
const getConfigInjectable = getInjectable({
|
||||||
|
id: "get-config",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
const exists = di.inject(existsInjectable);
|
||||||
|
const readJsonFile = di.inject(readJsonFileInjectable);
|
||||||
|
const configFilePath = di.inject(configFilePathInjectable);
|
||||||
|
|
||||||
|
return async () => {
|
||||||
|
const configFileExists = await exists(configFilePath);
|
||||||
|
|
||||||
|
if (!configFileExists) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return readJsonFile(configFilePath) as unknown as Config;
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default getConfigInjectable;
|
||||||
@ -1,20 +1,16 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
||||||
import { workingDirectoryInjectable } from "./working-directory.injectable";
|
import { workingDirectoryInjectable } from "./working-directory.injectable";
|
||||||
import { readJsonFileInjectable } from "./fs/read-json-file.injectable";
|
import type { Config } from "./get-config.injectable";
|
||||||
|
|
||||||
export const getPackageJsonPathsInjectable = getInjectable({
|
export const getPackageJsonPathsInjectable = getInjectable({
|
||||||
id: "get-package-json-paths",
|
id: "get-package-json-paths",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const readJsonFile = di.inject(readJsonFileInjectable);
|
|
||||||
const resolvePath = di.inject(resolvePathInjectable);
|
const resolvePath = di.inject(resolvePathInjectable);
|
||||||
const workingDirectory = di.inject(workingDirectoryInjectable);
|
const workingDirectory = di.inject(workingDirectoryInjectable);
|
||||||
|
|
||||||
return async (configFilePath: string) => {
|
return (config: Config) =>
|
||||||
const configFile = (await readJsonFile(configFilePath)) as string[];
|
config.map((linkPath: string) => resolvePath(workingDirectory, linkPath, "package.json"));
|
||||||
|
|
||||||
return configFile.map((linkPath: string) => resolvePath(workingDirectory, linkPath, "package.json"));
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@ -4,15 +4,24 @@ import { map } from "lodash/fp";
|
|||||||
import type { PackageJson } from "./package-json-and-path";
|
import type { PackageJson } from "./package-json-and-path";
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { readJsonFileInjectable } from "./fs/read-json-file.injectable";
|
import { readJsonFileInjectable } from "./fs/read-json-file.injectable";
|
||||||
|
import { getPackageJsonPathsInjectable } from "./get-package-json-paths.injectable";
|
||||||
|
import { checkForMissingPackageJsonsInjectable } from "./check-for-missing-package-jsons.injectable";
|
||||||
|
import type { Config } from "./get-config.injectable";
|
||||||
|
|
||||||
export const getPackageJsonsInjectable = getInjectable({
|
export const getPackageJsonsInjectable = getInjectable({
|
||||||
id: "get-package-jsons",
|
id: "get-package-jsons",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const readJsonFile = di.inject(readJsonFileInjectable);
|
const readJsonFile = di.inject(readJsonFileInjectable);
|
||||||
|
const getPackageJsonPaths = di.inject(getPackageJsonPathsInjectable);
|
||||||
|
const checkForMissingPackageJsons = di.inject(checkForMissingPackageJsonsInjectable);
|
||||||
|
|
||||||
return async (packageJsonPaths: string[]) =>
|
return async (config: Config) => {
|
||||||
pipeline(
|
const packageJsonPaths = await getPackageJsonPaths(config);
|
||||||
|
|
||||||
|
await checkForMissingPackageJsons(packageJsonPaths);
|
||||||
|
|
||||||
|
return pipeline(
|
||||||
packageJsonPaths,
|
packageJsonPaths,
|
||||||
|
|
||||||
map(async (packageJsonPath) => ({
|
map(async (packageJsonPath) => ({
|
||||||
@ -22,5 +31,6 @@ export const getPackageJsonsInjectable = getInjectable({
|
|||||||
|
|
||||||
awaitAll,
|
awaitAll,
|
||||||
);
|
);
|
||||||
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,15 +1,10 @@
|
|||||||
import { removeExistingLensLinkDirectoriesInjectable } from "./remove-existing-lens-link-directories.injectable";
|
import { removeExistingLensLinkDirectoriesInjectable } from "./remove-existing-lens-link-directories.injectable";
|
||||||
import { createLensLinkDirectoriesInjectable } from "./create-lens-link-directories.injectable";
|
import { createLensLinkDirectoriesInjectable } from "./create-lens-link-directories.injectable";
|
||||||
import { getPackageJsonsInjectable } from "./get-package-jsons.injectable";
|
import { getPackageJsonsInjectable } from "./get-package-jsons.injectable";
|
||||||
import { getPackageJsonPathsInjectable } from "./get-package-json-paths.injectable";
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { resolvePathInjectable } from "./path/resolve-path.injectable";
|
import { createSymlinksInjectable } from "./create-symlinks.injectable";
|
||||||
import { existsInjectable } from "./fs/exists.injectable";
|
import getConfigInjectable from "./get-config.injectable";
|
||||||
import { writeJsonFileInjectable } from "./fs/write-json-file.injectable";
|
import createEmptyConfigInjectable from "./create-empty-config.injectable";
|
||||||
import { workingDirectoryInjectable } from "./working-directory.injectable";
|
|
||||||
import { getSymlinkPathsInjectable } from "./get-symlink-paths.injectable";
|
|
||||||
import { createSymLinksInjectable } from "./create-sym-links.injectable";
|
|
||||||
import { checkForMissingPackageJsonsInjectable } from "./check-for-missing-package-jsons.injectable";
|
|
||||||
|
|
||||||
export type LensLink = () => Promise<void>;
|
export type LensLink = () => Promise<void>;
|
||||||
|
|
||||||
@ -20,39 +15,24 @@ const lensLinkInjectable = getInjectable({
|
|||||||
const getPackageJsons = di.inject(getPackageJsonsInjectable);
|
const getPackageJsons = di.inject(getPackageJsonsInjectable);
|
||||||
const removeExistingLensLinkDirectories = di.inject(removeExistingLensLinkDirectoriesInjectable);
|
const removeExistingLensLinkDirectories = di.inject(removeExistingLensLinkDirectoriesInjectable);
|
||||||
const createLensLinkDirectories = di.inject(createLensLinkDirectoriesInjectable);
|
const createLensLinkDirectories = di.inject(createLensLinkDirectoriesInjectable);
|
||||||
const getPackageJsonPaths = di.inject(getPackageJsonPathsInjectable);
|
const createSymlinks = di.inject(createSymlinksInjectable);
|
||||||
const resolvePath = di.inject(resolvePathInjectable);
|
const getConfig = di.inject(getConfigInjectable);
|
||||||
const exists = di.inject(existsInjectable);
|
const createEmptyConfig = di.inject(createEmptyConfigInjectable);
|
||||||
const writeJsonFile = di.inject(writeJsonFileInjectable);
|
|
||||||
const workingDirectory = di.inject(workingDirectoryInjectable);
|
|
||||||
const getSymlinkPaths = di.inject(getSymlinkPathsInjectable);
|
|
||||||
const createSymLinks = di.inject(createSymLinksInjectable);
|
|
||||||
const checkForMissingPackageJsons = di.inject(checkForMissingPackageJsonsInjectable);
|
|
||||||
|
|
||||||
return async () => {
|
return async () => {
|
||||||
const configFilePath = resolvePath(workingDirectory, ".lens-links.json");
|
const config = await getConfig();
|
||||||
|
|
||||||
const configFileExists = await exists(configFilePath);
|
if (!config) {
|
||||||
|
await createEmptyConfig();
|
||||||
if (!configFileExists) {
|
|
||||||
await writeJsonFile(configFilePath, []);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const packageJsonPaths = await getPackageJsonPaths(configFilePath);
|
const packageJsons = await getPackageJsons(config);
|
||||||
|
|
||||||
await checkForMissingPackageJsons(packageJsonPaths);
|
|
||||||
|
|
||||||
const packageJsons = await getPackageJsons(packageJsonPaths);
|
|
||||||
|
|
||||||
await removeExistingLensLinkDirectories(packageJsons);
|
await removeExistingLensLinkDirectories(packageJsons);
|
||||||
|
|
||||||
await createLensLinkDirectories(packageJsons);
|
await createLensLinkDirectories(packageJsons);
|
||||||
|
await createSymlinks(packageJsons);
|
||||||
const symlinkPaths = await getSymlinkPaths(packageJsons);
|
|
||||||
|
|
||||||
await createSymLinks(symlinkPaths);
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user