Skip to content

Commit e5dca1a

Browse files
Add colorblind-friendly color indicators for deprecation of each scope (bundle, channel, package) (#1172)
Signed-off-by: Rashmi Gottipati <[email protected]>
1 parent 6df3aba commit e5dca1a

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

alpha/declcfg/write.go

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

alpha/declcfg/write_test.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,11 +526,12 @@ func TestWriteMermaidChannels(t *testing.T) {
526526
startEdge: "",
527527
packageFilter: "",
528528
expected: `graph LR
529+
classDef deprecated fill:#E8960F
529530
%% package "anakin"
530531
subgraph "anakin"
531532
%% channel "dark"
532533
subgraph anakin-dark["dark"]
533-
anakin-dark-anakin.v0.0.1["anakin.v0.0.1"]
534+
anakin-dark-anakin.v0.0.1["anakin.v0.0.1"]:::deprecated
534535
anakin-dark-anakin.v0.1.0["anakin.v0.1.0"]
535536
anakin-dark-anakin.v0.0.1["anakin.v0.0.1"]-- replace --> anakin-dark-anakin.v0.1.0["anakin.v0.1.0"]
536537
anakin-dark-anakin.v0.1.1["anakin.v0.1.1"]
@@ -539,7 +540,7 @@ func TestWriteMermaidChannels(t *testing.T) {
539540
end
540541
%% channel "light"
541542
subgraph anakin-light["light"]
542-
anakin-light-anakin.v0.0.1["anakin.v0.0.1"]
543+
anakin-light-anakin.v0.0.1["anakin.v0.0.1"]:::deprecated
543544
anakin-light-anakin.v0.1.0["anakin.v0.1.0"]
544545
anakin-light-anakin.v0.0.1["anakin.v0.0.1"]-- replace --> anakin-light-anakin.v0.1.0["anakin.v0.1.0"]
545546
end
@@ -553,6 +554,8 @@ func TestWriteMermaidChannels(t *testing.T) {
553554
boba-fett-mando-boba-fett.v1.0.0["boba-fett.v1.0.0"]-- replace --> boba-fett-mando-boba-fett.v2.0.0["boba-fett.v2.0.0"]
554555
end
555556
end
557+
style anakin fill:#989695
558+
style anakin-light fill:#DCD0FF
556559
`,
557560
},
558561
{
@@ -561,6 +564,7 @@ func TestWriteMermaidChannels(t *testing.T) {
561564
startEdge: "anakin.v0.1.0",
562565
packageFilter: "",
563566
expected: `graph LR
567+
classDef deprecated fill:#E8960F
564568
%% package "anakin"
565569
subgraph "anakin"
566570
%% channel "dark"
@@ -574,6 +578,8 @@ func TestWriteMermaidChannels(t *testing.T) {
574578
anakin-light-anakin.v0.1.0["anakin.v0.1.0"]
575579
end
576580
end
581+
style anakin fill:#989695
582+
style anakin-light fill:#DCD0FF
577583
`,
578584
},
579585
{
@@ -582,6 +588,7 @@ func TestWriteMermaidChannels(t *testing.T) {
582588
startEdge: "",
583589
packageFilter: "boba-fett",
584590
expected: `graph LR
591+
classDef deprecated fill:#E8960F
585592
%% package "boba-fett"
586593
subgraph "boba-fett"
587594
%% channel "mando"

0 commit comments

Comments
 (0)