fix(misc): handle cwd correctly when generating artifacts with as-provided (#22411)

This commit is contained in:
Leosvel Pérez Espinosa 2024-03-21 17:48:47 +01:00 committed by GitHub
parent a837f7f877
commit c20e00cab8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 3 deletions

View File

@ -166,6 +166,33 @@ describe('determineArtifactNameAndDirectoryOptions', () => {
restoreCwd();
});
it('should not duplicate the cwd when the provided directory starts with the cwd and format is "as-provided"', async () => {
addProjectConfiguration(tree, 'app1', {
root: 'apps/app1',
projectType: 'application',
});
setCwd('apps/app1');
const result = await determineArtifactNameAndDirectoryOptions(tree, {
name: 'myComponent',
directory: 'apps/app1',
nameAndDirectoryFormat: 'as-provided',
artifactType: 'component',
callingGenerator: '@my-org/my-plugin:component',
});
expect(result).toStrictEqual({
artifactName: 'myComponent',
directory: 'apps/app1',
fileName: 'myComponent',
filePath: 'apps/app1/myComponent.ts',
project: 'app1',
nameAndDirectoryFormat: 'as-provided',
});
restoreCwd();
});
it('should return the options as provided when directory is provided', async () => {
addProjectConfiguration(tree, 'app1', {
root: 'apps/app1',

View File

@ -237,9 +237,20 @@ function getAsProvidedOptions(
): NameAndDirectoryOptions {
const relativeCwd = getRelativeCwd();
const asProvidedDirectory = options.directory
? joinPathFragments(relativeCwd, options.directory)
: relativeCwd;
let asProvidedDirectory: string;
if (options.directory) {
// append the directory to the current working directory if it doesn't start with it
if (
options.directory === relativeCwd ||
options.directory.startsWith(`${relativeCwd}/`)
) {
asProvidedDirectory = options.directory;
} else {
asProvidedDirectory = joinPathFragments(relativeCwd, options.directory);
}
} else {
asProvidedDirectory = relativeCwd;
}
const asProvidedProject = findProjectFromPath(tree, asProvidedDirectory);
const asProvidedFileName =