@@ -13,7 +13,7 @@ import { marked } from 'marked';
1313import * as TerminalRenderer from 'marked-terminal' ;
1414import { Env } from '@salesforce/kit' ;
1515import { Flags , SfCommand , loglevel } from '@salesforce/sf-plugins-core' ;
16- import { Lifecycle , Logger , Messages } from '@salesforce/core' ;
16+ import { Lifecycle , Logger , Messages , SfError } from '@salesforce/core' ;
1717import { AnyJson , JsonMap } from '@salesforce/ts-types' ;
1818import { getInfoConfig } from '../../../shared/getInfoConfig' ;
1919import { getReleaseNotes } from '../../../shared/getReleaseNotes' ;
@@ -40,6 +40,13 @@ export default class Display extends SfCommand<DisplayOutput> {
4040
4141 public static readonly examples = messages . getMessages ( 'examples' , [ Display . helpers . join ( ', ' ) ] ) ;
4242
43+ public static args = [
44+ {
45+ name : 'plugin' ,
46+ description : messages . getMessage ( 'flags.plugin.summary' ) ,
47+ } ,
48+ ] ;
49+
4350 public static readonly flags = {
4451 version : Flags . string ( {
4552 char : 'v' ,
@@ -54,7 +61,7 @@ export default class Display extends SfCommand<DisplayOutput> {
5461
5562 public async run ( ) : Promise < DisplayOutput > {
5663 const logger = Logger . childFromRoot ( this . constructor . name ) ;
57- const { flags } = await this . parse ( Display ) ;
64+ const { flags, args } = await this . parse ( Display ) ;
5865 const env = new Env ( ) ;
5966
6067 const isHook = ! ! flags . hook ;
@@ -70,9 +77,13 @@ export default class Display extends SfCommand<DisplayOutput> {
7077 }
7178
7279 try {
73- const installedVersion = this . config . pjson . version ;
80+ const [ plugin ] = args . plugin ? this . config . plugins . filter ( ( p ) => p . name === args . plugin ) : [ this . config ] ;
81+
82+ if ( ! plugin ) throw new SfError ( `No plugin '${ args . plugin as string } ' found` ) ;
83+
84+ const installedVersion = plugin . pjson . version ;
7485
75- const infoConfig = await getInfoConfig ( this . config . root ) ;
86+ const infoConfig = await getInfoConfig ( plugin . root ) ;
7687
7788 const { distTagUrl, releaseNotesPath, releaseNotesFilename } = infoConfig . releasenotes ;
7889
@@ -90,7 +101,7 @@ export default class Display extends SfCommand<DisplayOutput> {
90101 renderer : new TerminalRenderer ( { emoji : false } ) ,
91102 } ) ;
92103
93- tokens . unshift ( marked . lexer ( `# Release notes for '${ this . config . bin } ':` ) [ 0 ] ) ;
104+ tokens . unshift ( marked . lexer ( `# Release notes for '${ plugin . name } ':` ) [ 0 ] ) ;
94105
95106 if ( flags . json ) {
96107 const body = tokens . map ( ( token ) => token . raw ) . join ( os . EOL ) ;
@@ -104,7 +115,7 @@ export default class Display extends SfCommand<DisplayOutput> {
104115 if ( env . getBoolean ( HIDE_FOOTER ) ) {
105116 await Lifecycle . getInstance ( ) . emitTelemetry ( { eventName : 'FOOTER_HIDDEN' } ) ;
106117 } else {
107- const footer = messages . getMessage ( 'footer' , [ this . config . bin , releaseNotesPath , HIDE_NOTES , HIDE_FOOTER ] ) ;
118+ const footer = messages . getMessage ( 'footer' , [ plugin . name , releaseNotesPath , HIDE_NOTES , HIDE_FOOTER ] ) ;
108119 this . log ( marked . parse ( footer ) ) ;
109120 }
110121 }
0 commit comments