Skip to content

Commit ac8dfa3

Browse files
committed
fix: support retrieving agent pseudo type
1 parent 7ac6b71 commit ac8dfa3

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/commands/project/retrieve/start.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,11 @@ const buildRetrieveAndDeleteTargets = async (
423423
}
424424
return result;
425425
} else {
426-
const retrieveFromOrg = flags.metadata?.some(isRegexMatch) ? flags['target-org'].getUsername() : undefined;
426+
const hasPseudoType = flags.metadata?.some(isPseudoType);
427+
const hasRegexMatch = flags.metadata?.some(isRegexMatch);
428+
// Deliberately using logical or
429+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
430+
const retrieveFromOrg = hasRegexMatch || hasPseudoType ? flags['target-org'].getUsername() : undefined;
427431
if (format === 'source' && (await flags['target-org'].supportsSourceTracking())) {
428432
await SourceTracking.create({
429433
org: flags['target-org'],
@@ -503,3 +507,5 @@ const isRegexMatch = (mdEntry: string): boolean => {
503507
const mdName = mdEntry.split(':')[1];
504508
return mdName?.includes('*') && mdName?.length > 1 && !mdName?.includes('.*');
505509
};
510+
511+
const isPseudoType = (mdEntry: string): boolean => mdEntry.split(':')[0] === 'Agent';

test/commands/retrieve/start.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,40 @@ describe('project retrieve start', () => {
193193
ensureRetrieveArgs({ format: 'source' });
194194
});
195195

196+
it('should pass along metadata and org for pseudo-type matching', async () => {
197+
const metadata = ['Agent:My_Agent'];
198+
const result = await RetrieveMetadata.run(['--metadata', metadata[0], '--json']);
199+
expect(result).to.deep.equal(expectedResults);
200+
ensureCreateComponentSetArgs({
201+
metadata: {
202+
metadataEntries: metadata,
203+
directoryPaths: [expectedDirectoryPath],
204+
},
205+
org: {
206+
username: testOrg.username,
207+
exclude: [],
208+
},
209+
});
210+
ensureRetrieveArgs({ format: 'source' });
211+
});
212+
213+
it('should pass along metadata and org for pseudo-type wildcard matching', async () => {
214+
const metadata = ['ApexClass', 'Agent'];
215+
const result = await RetrieveMetadata.run(['--metadata', metadata[0], '--metadata', metadata[1], '--json']);
216+
expect(result).to.deep.equal(expectedResults);
217+
ensureCreateComponentSetArgs({
218+
metadata: {
219+
metadataEntries: metadata,
220+
directoryPaths: [expectedDirectoryPath],
221+
},
222+
org: {
223+
username: testOrg.username,
224+
exclude: [],
225+
},
226+
});
227+
ensureRetrieveArgs({ format: 'source' });
228+
});
229+
196230
it('should pass along manifest', async () => {
197231
const manifest = 'package.xml';
198232
const result = await RetrieveMetadata.run(['--manifest', manifest, '--json']);

0 commit comments

Comments
 (0)