From 674a8b766334a5340c0d606182bf5f46d9801854 Mon Sep 17 00:00:00 2001 From: Aravind Shankar Date: Thu, 27 Feb 2020 20:00:27 +0530 Subject: [PATCH 1/3] fix to use prerelease tag as a channel for console assets --- cli/version/console.go | 18 +++++++++--------- cli/version/console_test.go | 1 + scripts/get-console-assets-version.sh | 14 +++++++------- scripts/get-version.sh | 1 + server/graphql-engine.cabal | 3 +++ server/src-lib/Hasura/Server/Version.hs | 11 +++++++---- 6 files changed, 28 insertions(+), 20 deletions(-) diff --git a/cli/version/console.go b/cli/version/console.go index 266fa29bf4197..9acc1fbe2f9b7 100644 --- a/cli/version/console.go +++ b/cli/version/console.go @@ -2,7 +2,7 @@ package version import ( "fmt" - "strings" + "regexp" ) var ( @@ -44,14 +44,14 @@ func (v *Version) GetConsoleAssetsVersion() (av string) { // check for release channels preRelease := v.ServerSemver.Prerelease() channel := "stable" - if strings.HasPrefix(preRelease, "alpha") { - channel = "alpha" - } - if strings.HasPrefix(preRelease, "beta") { - channel = "beta" - } - if strings.HasPrefix(preRelease, "rc") { - channel = "rc" + if preRelease != "" { + // Get the correct channel from the prerelease tag + var re = regexp.MustCompile(`^[a-z]+`) + re.FindStringIndex(preRelease) + tag := re.FindString(preRelease) + if tag != "" { + channel = tag + } } return fmt.Sprintf("channel/%s/v%d.%d", channel, v.ServerSemver.Major(), v.ServerSemver.Minor()) } diff --git a/cli/version/console_test.go b/cli/version/console_test.go index 514e08fdfe653..b205564bb452d 100644 --- a/cli/version/console_test.go +++ b/cli/version/console_test.go @@ -39,6 +39,7 @@ func TestGetConsoleAssetsVersion(t *testing.T) { {"tagged alpha release without .", "v1.0.0-alpha45", "channel/alpha/v1.0"}, {"tagged beta release with .", "v1.0.0-beta.01", "channel/beta/v1.0"}, {"tagged rc release with .", "v2.3.1-rc.11", "channel/rc/v2.3"}, + {"tagged rj release with .", "v1.2.0-rj.1", "channel/rj/v1.2"}, } for _, tc := range tt { diff --git a/scripts/get-console-assets-version.sh b/scripts/get-console-assets-version.sh index 8c3a1cbcf847d..dc1b0f2d7f2a6 100755 --- a/scripts/get-console-assets-version.sh +++ b/scripts/get-console-assets-version.sh @@ -5,7 +5,8 @@ IFS=$'\n\t' ROOT="${BASH_SOURCE[0]%/*}" -SEMVER_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$" +SEMVER_REGEX="v?([0-9]+)(\.[0-9]+)?(\.[0-9]+)?(-([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?(\+([0-9A-Za-z\-]+(\.[0-9A-Za-z\-]+)*))?" +CHANNEL_REGEX="^[a-z]+" LATEST_TAG=$(git describe --tags --abbrev=0) VERSION="" @@ -14,12 +15,11 @@ channel="stable" if [[ "$LATEST_TAG" =~ $SEMVER_REGEX ]]; then major=${BASH_REMATCH[1]} minor=${BASH_REMATCH[2]} - release=${BASH_REMATCH[4]} - if [[ $release == -alpha* ]]; then channel="alpha"; fi - if [[ $release == -beta* ]]; then channel="beta"; fi - if [[ $release == -rc* ]]; then channel="rc"; fi - - VERSION="channel/$channel/v$major.$minor" + release=${BASH_REMATCH[5]} + if [[ "$release" =~ $CHANNEL_REGEX ]]; then + channel="${BASH_REMATCH[0]}" + fi + VERSION="channel/$channel/v$major$minor" fi if [ -z "$VERSION" ]; then VERSION="versioned/$($ROOT/get-version.sh)"; fi diff --git a/scripts/get-version.sh b/scripts/get-version.sh index 65a136fbd4ca4..1692a22322a63 100755 --- a/scripts/get-version.sh +++ b/scripts/get-version.sh @@ -11,3 +11,4 @@ test -n "$VERSION" || VERSION="${GIT_BRANCH}-${GIT_SHA}${GIT_DIRTY}" VERSION="$(echo $VERSION | tr -cd '[[:alnum:]]._-')" echo "$VERSION" +#echo "v1.2.0-rj.1" \ No newline at end of file diff --git a/server/graphql-engine.cabal b/server/graphql-engine.cabal index 80e304731ce45..0a25eead6f1de 100644 --- a/server/graphql-engine.cabal +++ b/server/graphql-engine.cabal @@ -194,6 +194,9 @@ library , directory + -- regex + , regex-posix + exposed-modules: Control.Arrow.Extended , Control.Arrow.Trans , Control.Monad.Stateless diff --git a/server/src-lib/Hasura/Server/Version.hs b/server/src-lib/Hasura/Server/Version.hs index 6e5cae3629d98..8aa8d438218c5 100644 --- a/server/src-lib/Hasura/Server/Version.hs +++ b/server/src-lib/Hasura/Server/Version.hs @@ -17,6 +17,7 @@ import qualified Data.SemVer as V import qualified Data.Text as T import qualified Language.Haskell.TH.Syntax as TH +import Text.Regex.Posix ((=~~)) import Control.Lens ((^.), (^?)) import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.Text.Conversions (FromText (..), ToText (..)) @@ -86,10 +87,12 @@ consoleAssetsVersion = case currentVersion of (mr:_) -> case getTextFromId mr of Nothing -> Nothing Just r -> if - | "alpha" `T.isPrefixOf` r -> Just "alpha" - | "beta" `T.isPrefixOf` r -> Just "beta" - | "rc" `T.isPrefixOf` r -> Just "rc" - | otherwise -> Nothing + | T.null r -> Nothing + | otherwise -> T.pack <$> (getChannelFromPreRelease $ T.unpack r) + + getChannelFromPreRelease :: String -> Maybe String + getChannelFromPreRelease sv = sv =~~ ("^([a-z]+)"::String) + getTextFromId :: V.Identifier -> Maybe Text getTextFromId i = Just i ^? (toTextualM . V._Textual) From 1cfb8feec36eb699f8310fa5fa7c2fc84b001e41 Mon Sep 17 00:00:00 2001 From: Aravind Shankar Date: Fri, 28 Feb 2020 15:12:52 +0530 Subject: [PATCH 2/3] use regex-tdfa instead of regex-posix --- scripts/get-version.sh | 3 +-- server/graphql-engine.cabal | 3 --- server/src-lib/Hasura/Server/Version.hs | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/get-version.sh b/scripts/get-version.sh index 1692a22322a63..43af70cce03cf 100755 --- a/scripts/get-version.sh +++ b/scripts/get-version.sh @@ -10,5 +10,4 @@ test -n "$VERSION" || VERSION="${GIT_BRANCH}-${GIT_SHA}${GIT_DIRTY}" VERSION="$(echo $VERSION | tr -cd '[[:alnum:]]._-')" -echo "$VERSION" -#echo "v1.2.0-rj.1" \ No newline at end of file +echo "$VERSION" \ No newline at end of file diff --git a/server/graphql-engine.cabal b/server/graphql-engine.cabal index 0a25eead6f1de..80e304731ce45 100644 --- a/server/graphql-engine.cabal +++ b/server/graphql-engine.cabal @@ -194,9 +194,6 @@ library , directory - -- regex - , regex-posix - exposed-modules: Control.Arrow.Extended , Control.Arrow.Trans , Control.Monad.Stateless diff --git a/server/src-lib/Hasura/Server/Version.hs b/server/src-lib/Hasura/Server/Version.hs index 8aa8d438218c5..79ae2377f54ab 100644 --- a/server/src-lib/Hasura/Server/Version.hs +++ b/server/src-lib/Hasura/Server/Version.hs @@ -17,7 +17,7 @@ import qualified Data.SemVer as V import qualified Data.Text as T import qualified Language.Haskell.TH.Syntax as TH -import Text.Regex.Posix ((=~~)) +import Text.Regex.TDFA ((=~~)) import Control.Lens ((^.), (^?)) import Data.Aeson (FromJSON (..), ToJSON (..)) import Data.Text.Conversions (FromText (..), ToText (..)) From 1b2046ada6aec27e39dbe1b7d59022ca0bdf470e Mon Sep 17 00:00:00 2001 From: Aravind Shankar Date: Wed, 4 Mar 2020 19:06:23 +0530 Subject: [PATCH 3/3] Update console.go --- cli/version/console.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/version/console.go b/cli/version/console.go index 9acc1fbe2f9b7..924c1bf177175 100644 --- a/cli/version/console.go +++ b/cli/version/console.go @@ -47,7 +47,6 @@ func (v *Version) GetConsoleAssetsVersion() (av string) { if preRelease != "" { // Get the correct channel from the prerelease tag var re = regexp.MustCompile(`^[a-z]+`) - re.FindStringIndex(preRelease) tag := re.FindString(preRelease) if tag != "" { channel = tag