Fixed relative path problem for init script

main
Jackson Morgan 4 months ago
parent f458ee0084
commit 0f1d862a4a
  1. 1
      packages/cli/example-init-placeholder/src/index.ts
  2. 52
      packages/cli/src/init.ts

@ -15,33 +15,36 @@ const DEFAULT_LDO_FOLDER = "./.ldo";
const POTENTIAL_PARENT_DIRECTORIES = ["src", "lib", "bin"]; const POTENTIAL_PARENT_DIRECTORIES = ["src", "lib", "bin"];
export async function init(directory?: string) { export async function init(directory?: string) {
console.log("directory", directory);
// Find folder to save to // Find folder to save to
let parentDirectory = directory!; const projectDirectory = directory ?? "./";
if (!parentDirectory) {
parentDirectory = "./"; // Get the parent directory for the ldo files
const allDirectories = ( let parentDirectory = projectDirectory;
await fs.promises.readdir("./", { parentDirectory = "./";
withFileTypes: true, const allDirectories = (
}) await fs.promises.readdir("./", {
).filter((file) => file.isDirectory()); withFileTypes: true,
for (let i = 0; i < POTENTIAL_PARENT_DIRECTORIES.length; i++) { })
if ( ).filter((file) => file.isDirectory());
allDirectories.some( for (let i = 0; i < POTENTIAL_PARENT_DIRECTORIES.length; i++) {
(dir) => dir.name === POTENTIAL_PARENT_DIRECTORIES[i], if (
) allDirectories.some((dir) => dir.name === POTENTIAL_PARENT_DIRECTORIES[i])
) { ) {
parentDirectory = POTENTIAL_PARENT_DIRECTORIES[i]; parentDirectory = POTENTIAL_PARENT_DIRECTORIES[i];
break; break;
}
} }
} }
console.log("parentDirectory", parentDirectory);
// Install dependencies // Install dependencies
await exec(`cd ${parentDirectory} && npm install @ldo/ldo --save`); await exec(`cd ${projectDirectory} && npm install @ldo/ldo --save`);
await exec( await exec(
`cd ${parentDirectory} && npm install @ldo/cli @types/shexj @types/jsonld --save-dev`, `cd ${projectDirectory} && npm install @ldo/cli @types/shexj @types/jsonld --save-dev`,
); );
console.log("Ran installs");
// Create "shapes" folder // Create "shapes" folder
const shapesFolderPath = path.join(parentDirectory, DEFAULT_SHAPES_FOLDER); const shapesFolderPath = path.join(parentDirectory, DEFAULT_SHAPES_FOLDER);
await fs.promises.mkdir(shapesFolderPath); await fs.promises.mkdir(shapesFolderPath);
@ -61,19 +64,22 @@ export async function init(directory?: string) {
}), }),
); );
console.log("Createed shapes folder and filled with default shex shapes");
// Add build script // Add build script
await modifyPackageJson(parentDirectory, async (packageJson) => { await modifyPackageJson("./", async (packageJson) => {
if (!packageJson.scripts) { if (!packageJson.scripts) {
packageJson.scripts = {}; packageJson.scripts = {};
} }
const ldoFolder = path.join(parentDirectory, DEFAULT_LDO_FOLDER); const ldoFolder = path.join(parentDirectory, DEFAULT_LDO_FOLDER);
console.log("ldo folder", ldoFolder);
packageJson.scripts["build:ldo"] = `ldo build --input ${path.relative( packageJson.scripts["build:ldo"] = `ldo build --input ${path.relative(
parentDirectory, projectDirectory,
shapesFolderPath, shapesFolderPath,
)} --output ${path.relative(parentDirectory, ldoFolder)}`; )} --output ${path.relative(projectDirectory, ldoFolder)}`;
return packageJson; return packageJson;
}); });
// Build LDO // Build LDO
await exec(`cd ${parentDirectory} && npm run build:ldo`); await exec(`cd ${projectDirectory} && npm run build:ldo`);
} }

Loading…
Cancel
Save