🎨 Add rainbow colouring of steps label#290
Conversation
|
The following is the coverage report on pkg/.
|
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: chmouel, gavinfish The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
vdemeester
left a comment
There was a problem hiding this comment.
Nice 👍🏼 one comment though 😅
There was a problem hiding this comment.
There might be a race here if this is called in different goroutine 🤔
There was a problem hiding this comment.
yeah i tough about that but since we werent using it i didn't follow tough, what do you suggest? external lib for locking etc...
There was a problem hiding this comment.
and fyi i did test it with -race and it was running well but i'll just sync/lock/release it in case off,
There was a problem hiding this comment.
@chmouel right, we might not be in the case of race condition in the cli, but if somebody uses this might hit it
92af56a to
d51799c
Compare
|
The following is the coverage report on pkg/.
|
There was a problem hiding this comment.
nit: usually this is done using rc.current = (rc.current +1) % len(rc.all) without having the need for an if
There was a problem hiding this comment.
mux must be part of the rc and not a package level variable; this allows for mulitple RainbowColors to be used without having one instance to wait for another instance.
There was a problem hiding this comment.
it is better to use Rlock and RWlocks
There was a problem hiding this comment.
mux should be instance variable and not package var since it only locks the rc.cached and not a package level variable.
sthaha
left a comment
There was a problem hiding this comment.
❤️ Neat!
some comments about sync.Mutex that needs addressing.
d51799c to
d3d9e95
Compare
|
The following is the coverage report on pkg/.
|
DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
|
/hold |
There was a problem hiding this comment.
red is avoided since we keep it for error messages, (probably should have put this in the comment instead of here)
There was a problem hiding this comment.
when I mentione RLock and Lock() I was hinting to having a single mutex in the rainbow. which will be RLocked for checking if the item is in cache and if not, Lock() to add the item in cache. but i like your implementation to create a round robin counter but for the counter itself, Get and increase isn't quite as useful as just a next which returns the next value.
please consider one of these implemention for counter. 1. that uses atomic, the other that uses a mutex
type atomicCounter struct {
value uint32
threshold int
}
func (c *atomicCounter) next() int {
v := atomic.AddUint32(&c.value, 1)
next := int(v-1) % c.threshold
atomic.CompareAndSwapUint32(&c.value, uint32(c.threshold), 0)
return next
}
type counter struct {
value int
threshold int
m sync.Mutex
}
func (c *counter) next() int {
c.m.Lock()
defer c.m.Unlock()
v := c.value
c.value = (v + 1) % c.threshold
return v
}and the rainbow would be some what like this
type rainbow struct {
cache sync.Map
counter counter
}
func newRainbow() *rainbow {
return &rainbow{
counter: counter{threshold: len(palette)},
}
}
func (r *rainbow) colorFor(x string) color {
if value, ok := r.cache.Load(x); ok {
return value.(color)
}
clr := palette[r.counter.next()]
r.cache.Store(x, clr)
return clr
}We were showing the same blue color for every steps, let's now cycle of a list of colors. Signed-off-by: Chmouel Boudjnah <chmouel@redhat.com>
d3d9e95 to
ce502af
Compare
|
The following is the coverage report on pkg/.
|
sthaha
left a comment
There was a problem hiding this comment.
looks good to me expect for the Fprintf
#290 | [Chmouel Boudjnah] Add rainbow colouring of the steps | 2019/09/08-05:36 #292 | [danielhelfand] add SilenceUsage: true to root.go | 2019/09/08-22:11 #293 | [Carlos Santana] Update install instructions in readme to 0.3.1 | 2019/09/08-23:39 #279 | [16yuki0702] Add deletion scenario to e2e test | 2019/09/09-02:17 #279 | [16yuki0702] Fix to use -f flag | 2019/09/09-02:17 #300 | [Chmouel Boudjnah] Use a older version of thrift | 2019/09/09-08:48 #300 | [Chmouel Boudjnah] Don't run go mod vendor on every build | 2019/09/09-08:48 #301 | [Chmouel Boudjnah] E2E tests fixes | 2019/09/09-12:00 #303 | [danielhelfand] add taskrun describe command | 2019/09/10-02:15 #304 | [16yuki0702] Fix document typos | 2019/09/10-04:45 null | [Piyush Garg] Fix interactive prompt with --last | 2019/09/10-07:04 null | [16yuki0702] Add canceling feature to taskrun command | 2019/09/10-08:23 null | [Chmouel Boudjnah] Improve release script | 2019/09/11-10:35 null | [Sunil Thaha] Doc: Improve taskrun help example | 2019/09/12-02:09 null | [Piyush Garg] Fix -n not working with pipeline logs | 2019/09/12-02:23 null | [Piyush Garg] Show descriptive failure message | 2019/09/12-03:36 null | [danielhelfand] change error message returned by task for namespace | 2019/09/16-06:48 null | [Chmouel Boudjnah] Add a Tasrun to build rpm. | 2019/09/17-01:52 null | [Chmouel Boudjnah] Add information about copr rpm package repo in README | 2019/09/17-01:52 null | [Chmouel Boudjnah] Use khuram spec files which does a proper source build | 2019/09/17-01:52 null | [Chmouel Boudjnah] Update README with distros supported for dnf install | 2019/09/17-01:52 null | [Nikhil Thomas] Fix CI breakage | 2019/09/19-23:57 null | [Andrea Frittoli] Fix the logs command when creating a pipelinerun | 2019/09/20-01:57 null | [16yuki0702] Adding missing copyright header | 2019/09/23-04:47 null | [danielhelfand] correct copr package section typos | 2019/09/23-08:38 null | [danielhelfand] align pipeline describe output with other describe commands | 2019/09/24-04:58 null | [Chmouel Boudjnah] Add no colour option | 2019/09/24-05:24 null | [Chmouel Boudjnah] Disable nocolour test | 2019/09/24-05:24 null | [Chmouel Boudjnah] Generate documentation | 2019/09/24-05:24 null | [danielhelfand] align output with task describe command | 2019/09/24-05:36 null | [cappyzawa] fix misspell based on https://goreportcard.com/report/github.com/tektoncd/cli#misspell | 2019/09/24-06:20 null | [danielhelfand] add check to taskrun cancel for already executed taskrun | 2019/09/24-07:56 null | [Pradeep Kumar] Common method to get last run for a pipeline | 2019/09/24-08:17 null | [Pradeep Kumar] correts imports order | 2019/09/24-08:17 null | [Andrea Frittoli] Improve the error message on pipeline create | 2019/09/24-09:40 null | [Andrea Frittoli] Fix the logs command when creating a pipelinerun | 2019/09/24-09:40 null | [danielhelfand] add check to pipelinerun cancel for already executed pipelinerun | 2019/09/25-09:11 null | [Vincent Demeester] Bump tektoncd/pipeline to 0.7.x | 2019/09/25-10:02 null | [Vincent Demeester] bump github.com/AlecAivazis/survey/v2 to v2.0.4 | 2019/09/25-10:02 null | [Khurram Baig] Add Vendored Dependencies to RPM Spec | 2019/09/26-03:03 Signed-off-by: Chmouel Boudjnah <chmouel@redhat.com>

We were showing the same blue color for every steps, let's now cycle of a list of
colors.
Demo: https://asciinema.org/a/hbJk1PqMFE8hleRpDsraPw0WB
Closes #285
Release Notes