@@ -106,6 +106,26 @@ func (writer *MermaidWriter) WriteChannels(cfg DeclarativeConfig, out io.Writer)
106106
107107 minEdgePackage := writer .getMinEdgePackage (& cfg )
108108
109+ depByPackage := sets.Set [string ]{}
110+ depByChannel := sets.Set [string ]{}
111+ depByBundle := sets.Set [string ]{}
112+
113+ for _ , d := range cfg .Deprecations {
114+ for _ , e := range d .Entries {
115+ switch e .Reference .Schema {
116+ case SchemaPackage :
117+ depByPackage .Insert (d .Package )
118+ case SchemaChannel :
119+ depByChannel .Insert (e .Reference .Name )
120+ case SchemaBundle :
121+ depByBundle .Insert (e .Reference .Name )
122+ }
123+ }
124+ }
125+
126+ var deprecatedPackage string
127+ deprecatedChannels := []string {}
128+
109129 for _ , c := range cfg .Channels {
110130 filteredChannel := writer .filterChannel (& c , versionMap , minVersion , minEdgePackage )
111131 if filteredChannel != nil {
@@ -119,10 +139,23 @@ func (writer *MermaidWriter) WriteChannels(cfg DeclarativeConfig, out io.Writer)
119139 pkgBuilder .WriteString (fmt .Sprintf (" %%%% channel %q\n " , filteredChannel .Name ))
120140 pkgBuilder .WriteString (fmt .Sprintf (" subgraph %s[%q]\n " , channelID , filteredChannel .Name ))
121141
142+ if depByPackage .Has (filteredChannel .Package ) {
143+ deprecatedPackage = filteredChannel .Package
144+ }
145+
146+ if depByChannel .Has (filteredChannel .Name ) {
147+ deprecatedChannels = append (deprecatedChannels , channelID )
148+ }
149+
122150 for _ , ce := range filteredChannel .Entries {
123151 if versionMap [ce .Name ].GE (minVersion ) {
152+ bundleDeprecation := ""
153+ if depByBundle .Has (ce .Name ) {
154+ bundleDeprecation = ":::deprecated"
155+ }
156+
124157 entryId := fmt .Sprintf ("%s-%s" , channelID , ce .Name )
125- pkgBuilder .WriteString (fmt .Sprintf (" %s[%q]\n " , entryId , ce .Name ))
158+ pkgBuilder .WriteString (fmt .Sprintf (" %s[%q]%s \n " , entryId , ce .Name , bundleDeprecation ))
126159
127160 if len (ce .Replaces ) > 0 {
128161 replacesId := fmt .Sprintf ("%s-%s" , channelID , ce .Replaces )
@@ -154,6 +187,7 @@ func (writer *MermaidWriter) WriteChannels(cfg DeclarativeConfig, out io.Writer)
154187 }
155188
156189 out .Write ([]byte ("graph LR\n " ))
190+ out .Write ([]byte (fmt .Sprintf (" classDef deprecated fill:#E8960F\n " )))
157191 pkgNames := []string {}
158192 for pname := range pkgs {
159193 pkgNames = append (pkgNames , pname )
@@ -168,6 +202,16 @@ func (writer *MermaidWriter) WriteChannels(cfg DeclarativeConfig, out io.Writer)
168202 out .Write ([]byte (" end\n " ))
169203 }
170204
205+ if deprecatedPackage != "" {
206+ out .Write ([]byte (fmt .Sprintf ("style %s fill:#989695\n " , deprecatedPackage )))
207+ }
208+
209+ if len (deprecatedChannels ) > 0 {
210+ for _ , deprecatedChannel := range deprecatedChannels {
211+ out .Write ([]byte (fmt .Sprintf ("style %s fill:#DCD0FF\n " , deprecatedChannel )))
212+ }
213+ }
214+
171215 return nil
172216}
173217
0 commit comments