Skip to content

Commit fbb81f2

Browse files
committed
feat: delete bundle member but not the bundle
1 parent 981d4a2 commit fbb81f2

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

src/sourceTracking.ts

+25-4
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
RegistryAccess,
2222
VirtualTreeContainer,
2323
} from '@salesforce/source-deploy-retrieve';
24+
import { trimUntil } from '@salesforce/source-deploy-retrieve/lib/src/utils/path';
2425
import { RemoteSourceTrackingService, remoteChangeElementToChangeResult } from './shared/remoteSourceTrackingService';
2526
import { ShadowRepo } from './shared/localShadowRepo';
2627

@@ -128,6 +129,30 @@ export class SourceTracking extends AsyncCreatable {
128129
undefined,
129130
VirtualTreeContainer.fromFilePaths(grouping.deletes)
130131
);
132+
133+
allDeletes
134+
.flatMap((filename) => resolverForDeletes.getComponentsFromPath(filename))
135+
.filter(sourceComponentGuard)
136+
.map((component) => {
137+
// if the component is a file in a bundle type AND there are files from the bundle that are not deleted, set the bundle for deploy, not for delete
138+
if (component.type.strategies?.adapter === 'bundle') {
139+
const filename = component.xml ?? component.content ?? component.walkContent()?.[0];
140+
// all bundle types have a directory name
141+
if (fs.existsSync(trimUntil(filename, component.type.directoryName as string))) {
142+
try {
143+
resolverForNonDeletes
144+
.getComponentsFromPath(resolve(filename))
145+
.filter(sourceComponentGuard)
146+
.map((nonDeletedComponent) => componentSet.add(nonDeletedComponent));
147+
} catch (e) {
148+
this.logger.warn(`unable to resolve ${filename}`);
149+
}
150+
}
151+
} else {
152+
componentSet.add(component, DestructiveChangesType.POST);
153+
}
154+
});
155+
131156
allNonDeletes
132157
.flatMap((filename) => {
133158
try {
@@ -140,10 +165,6 @@ export class SourceTracking extends AsyncCreatable {
140165
.filter(sourceComponentGuard)
141166
.map((component) => componentSet.add(component));
142167

143-
allDeletes
144-
.flatMap((filename) => resolverForDeletes.getComponentsFromPath(filename))
145-
.filter(sourceComponentGuard)
146-
.map((component) => componentSet.add(component, DestructiveChangesType.POST));
147168
return componentSet;
148169
})
149170
.filter((componentSet) => componentSet.size > 0);

0 commit comments

Comments
 (0)