Created
April 7, 2023 09:23
-
-
Save slonka/0e24760cf8963ab1efd8aeb7fc8c7fb6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<!-- saved from url=(0073)file:///private/var/folders/ts/xg_0vxrd0yj9n7pckrc0fq5r0000gn/T/diff.html --> | |
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
<title>Pretty Diff</title> | |
<style> | |
body { | |
text-align: center; | |
} | |
#wrapper { | |
display: inline-block; | |
margin-top: 1em; | |
min-width: 800px; | |
text-align: left; | |
} | |
h2 { | |
background: #fafafa; | |
background: -moz-linear-gradient(#fafafa, #eaeaea); | |
background: -webkit-linear-gradient(#fafafa, #eaeaea); | |
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#fafafa',endColorstr='#eaeaea')"; | |
border: 1px solid #d8d8d8; | |
border-bottom: 0; | |
color: #555; | |
font: 14px sans-serif; | |
overflow: hidden; | |
padding: 10px 6px; | |
text-shadow: 0 1px 0 white; | |
margin: 0; | |
} | |
.copy { | |
float: right; | |
} | |
.file-diff { | |
border: 1px solid #d8d8d8; | |
margin-bottom: 1em; | |
overflow: auto; | |
padding: 0.5em 0; | |
} | |
.file-diff > div { | |
width: 100%; | |
} | |
pre { | |
margin: 0; | |
font-family: "Bitstream Vera Sans Mono", Courier, monospace; | |
font-size: 12px; | |
line-height: 1.4em; | |
text-indent: 0.5em; | |
} | |
.file { | |
color: #aaa; | |
} | |
.delete { | |
background-color: #fdd; | |
} | |
.insert { | |
background-color: #dfd; | |
} | |
.info { | |
color: #a0b; | |
} | |
</style> | |
</head> | |
<body> | |
<div id="wrapper"> | |
<h2>tmp/1.txt<button class="copy" onclick="navigator.clipboard.writeText("tmp/1.txt")">copy path</button></h2><div class="file-diff"><div><pre class="file">diff --git a/tmp/1.txt b/tmp/2.txt</pre> | |
<pre class="file">index 4b06279b..29d190a7 100644</pre> | |
<pre class="delete">--- a/tmp/1.txt</pre> | |
<pre class="insert">+++ b/tmp/2.txt</pre> | |
<pre class="info">@@ -4,12 +4,11 @@ import (</pre> | |
<pre class="context"> "encoding/json"</pre> | |
<pre class="context"> "fmt"</pre> | |
<pre class="context"> "github.com/kumahq/ci-tools/cmd/internal/github"</pre> | |
<pre class="insert">+ "github.com/kumahq/ci-tools/cmd/internal/version"</pre> | |
<pre class="insert">+ "github.com/kumahq/ci-tools/cmd/internal/versionfile"</pre> | |
<pre class="context"> "github.com/spf13/cobra"</pre> | |
<pre class="context"> "gopkg.in/yaml.v3"</pre> | |
<pre class="delete">- "regexp"</pre> | |
<pre class="context"> "sort"</pre> | |
<pre class="delete">- "strconv"</pre> | |
<pre class="delete">- "strings"</pre> | |
<pre class="context"> "time"</pre> | |
<pre class="context"> )</pre> | |
<pre class="context"> </pre> | |
<pre class="info">@@ -19,18 +18,6 @@ var minVersion string</pre> | |
<pre class="context"> var includeDev bool</pre> | |
<pre class="context"> var activeBranches bool</pre> | |
<pre class="context"> </pre> | |
<pre class="delete">-type VersionEntry struct {</pre> | |
<pre class="delete">- Edition string `yaml:"edition"`</pre> | |
<pre class="delete">- Version string `yaml:"version"`</pre> | |
<pre class="delete">- Release string `yaml:"release"`</pre> | |
<pre class="delete">- Latest bool `yaml:"latest,omitempty"`</pre> | |
<pre class="delete">- ReleaseDate string `yaml:"releaseDate"`</pre> | |
<pre class="delete">- EndOfLifeDate string `yaml:"endOfLifeDate"`</pre> | |
<pre class="delete">- Branch string `yaml:"branch"`</pre> | |
<pre class="delete">-}</pre> | |
<pre class="delete">-</pre> | |
<pre class="delete">-var releasedOnRegexp = regexp.MustCompile("^> Released on ([0-9]{4}/[0-9]{2}/[0-9]{2})")</pre> | |
<pre class="delete">-</pre> | |
<pre class="context"> var versionFile = &cobra.Command{</pre> | |
<pre class="context"> Use: "version-file",</pre> | |
<pre class="context"> Short: "Recreate the versions.yaml using github releases",</pre> | |
<pre class="info">@@ -43,66 +30,35 @@ var versionFile = &cobra.Command{</pre> | |
<pre class="context"> if err != nil {</pre> | |
<pre class="context"> return err</pre> | |
<pre class="context"> }</pre> | |
<pre class="delete">- minMajor, minMinor, _ := MustSplitSemVer(minVersion)</pre> | |
<pre class="insert">+ minMajor, minMinor, _ := version.MustSplitSemVer(minVersion)</pre> | |
<pre class="context"> byVersion := map[string][]github.GQLRelease{}</pre> | |
<pre class="context"> for i := range res {</pre> | |
<pre class="delete">- major, minor, _ := MustSplitSemVer(res[i].Name)</pre> | |
<pre class="insert">+ major, minor, _ := version.MustSplitSemVer(res[i].Name)</pre> | |
<pre class="context"> if major < minMajor || (major == minMajor && minor < minMinor) {</pre> | |
<pre class="context"> continue</pre> | |
<pre class="context"> }</pre> | |
<pre class="context"> release := fmt.Sprintf("%d.%d.x", major, minor)</pre> | |
<pre class="context"> byVersion[release] = append(byVersion[release], res[i])</pre> | |
<pre class="context"> }</pre> | |
<pre class="delete">- var out []VersionEntry</pre> | |
<pre class="delete">- for v, releases := range byVersion {</pre> | |
<pre class="delete">- latest := false</pre> | |
<pre class="delete">- for _, r := range releases {</pre> | |
<pre class="delete">- latest = latest || r.IsLatest</pre> | |
<pre class="delete">- }</pre> | |
<pre class="delete">- sort.Slice(releases, func(i, j int) bool {</pre> | |
<pre class="delete">- iv, _ := strconv.Atoi(strings.Split(releases[i].Name, ".")[2])</pre> | |
<pre class="delete">- jv, _ := strconv.Atoi(strings.Split(releases[j].Name, ".")[2])</pre> | |
<pre class="delete">- return iv < jv</pre> | |
<pre class="delete">- })</pre> | |
<pre class="delete">- releaseDate, err := ExtractReleaseDate(releases[0])</pre> | |
<pre class="insert">+ var out []versionfile.VersionEntry</pre> | |
<pre class="insert">+ for releaseName, releases := range byVersion {</pre> | |
<pre class="insert">+ res, err := versionfile.BuildVersionEntry(edition, releaseName, lifetimeMonths, releases)</pre> | |
<pre class="context"> if err != nil {</pre> | |
<pre class="delete">- return fmt.Errorf("failed to extract release date for %s because of: %s", releases[0].Name, err.Error())</pre> | |
<pre class="delete">- }</pre> | |
<pre class="delete">- EOLDate := releaseDate.AddDate(0, lifetimeMonths, 0)</pre> | |
<pre class="delete">- entry := VersionEntry{</pre> | |
<pre class="delete">- Release: v,</pre> | |
<pre class="delete">- Edition: edition,</pre> | |
<pre class="delete">- Version: releases[len(releases)-1].Name,</pre> | |
<pre class="delete">- Latest: latest,</pre> | |
<pre class="delete">- ReleaseDate: releaseDate.Format(time.DateOnly),</pre> | |
<pre class="delete">- EndOfLifeDate: EOLDate.Format(time.DateOnly),</pre> | |
<pre class="delete">- Branch: ExtractBranch(releases[0].Name),</pre> | |
<pre class="insert">+ return err</pre> | |
<pre class="context"> }</pre> | |
<pre class="delete">- out = append(out, entry)</pre> | |
<pre class="insert">+ out = append(out, res)</pre> | |
<pre class="context"> }</pre> | |
<pre class="context"> sort.Slice(out, func(i, j int) bool {</pre> | |
<pre class="delete">- majorI, minorI, _ := MustSplitSemVer(strings.ReplaceAll(out[i].Release, "x", "0"))</pre> | |
<pre class="delete">- majorJ, minorJ, _ := MustSplitSemVer(strings.ReplaceAll(out[j].Release, "x", "0"))</pre> | |
<pre class="delete">- if majorI == majorJ {</pre> | |
<pre class="delete">- return minorI < minorJ</pre> | |
<pre class="delete">- }</pre> | |
<pre class="delete">- return majorI < majorJ</pre> | |
<pre class="insert">+ return out[i].Less(out[j])</pre> | |
<pre class="context"> })</pre> | |
<pre class="context"> if includeDev {</pre> | |
<pre class="delete">- out = append(out, VersionEntry{</pre> | |
<pre class="delete">- Release: "dev",</pre> | |
<pre class="delete">- Edition: edition,</pre> | |
<pre class="delete">- Version: "preview",</pre> | |
<pre class="delete">- Branch: "master",</pre> | |
<pre class="delete">- ReleaseDate: "2020-01-01",</pre> | |
<pre class="delete">- EndOfLifeDate: "2030-01-01",</pre> | |
<pre class="delete">- })</pre> | |
<pre class="insert">+ out = append(out, versionfile.Dev(edition))</pre> | |
<pre class="context"> }</pre> | |
<pre class="context"> if activeBranches {</pre> | |
<pre class="context"> var branches []string</pre> | |
<pre class="context"> for _, v := range out {</pre> | |
<pre class="context"> t, _ := time.Parse(time.DateOnly, v.EndOfLifeDate)</pre> | |
<pre class="delete">- if time.Now().Before(t) {</pre> | |
<pre class="insert">+ if v.EndOfLifeDate == "" || time.Now().Before(t) {</pre> | |
<pre class="context"> branches = append(branches, v.Branch)</pre> | |
<pre class="context"> }</pre> | |
<pre class="context"> }</pre> | |
<pre class="info">@@ -112,19 +68,6 @@ var versionFile = &cobra.Command{</pre> | |
<pre class="context"> },</pre> | |
<pre class="context"> }</pre> | |
<pre class="context"> </pre> | |
<pre class="delete">-func ExtractBranch(name string) string {</pre> | |
<pre class="delete">- major, minor, _ := MustSplitSemVer(name)</pre> | |
<pre class="delete">- return fmt.Sprintf("release-%d.%d", major, minor)</pre> | |
<pre class="delete">-}</pre> | |
<pre class="delete">-</pre> | |
<pre class="delete">-func ExtractReleaseDate(r github.GQLRelease) (time.Time, error) {</pre> | |
<pre class="delete">- res := releasedOnRegexp.FindStringSubmatch(r.Description)</pre> | |
<pre class="delete">- if len(res) == 2 {</pre> | |
<pre class="delete">- return time.Parse("2006/01/02", res[1])</pre> | |
<pre class="delete">- }</pre> | |
<pre class="delete">- return r.PublishedAt, nil</pre> | |
<pre class="delete">-}</pre> | |
<pre class="delete">-</pre> | |
<pre class="context"> func init() {</pre> | |
<pre class="context"> versionFile.Flags().StringVar(&config.repo, "repo", "kumahq/kuma", "The repository to query")</pre> | |
<pre class="context"> versionFile.Flags().StringVar(&edition, "edition", "kuma", "The edition of the product")</pre></div></div> | |
</div> | |
</body></html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment