diff --git a/unison-cli/src/Unison/Codebase/Editor/VersionParser.hs b/unison-cli/src/Unison/Codebase/Editor/VersionParser.hs index d5d1c930bc..74e756858a 100644 --- a/unison-cli/src/Unison/Codebase/Editor/VersionParser.hs +++ b/unison-cli/src/Unison/Codebase/Editor/VersionParser.hs @@ -14,25 +14,31 @@ import qualified Unison.Codebase.Path as Path -- | Parse git version strings into valid unison namespaces. -- -- >>> parseMaybe defaultBaseLib "release/M1j" --- Just (ReadShareRemoteNamespace {server = DefaultCodeserver, repo = "unison", path = public.dev.base.releases._M1j}) +-- Just (ReadShareRemoteNamespace {server = DefaultCodeserver, repo = "unison", path = public.base.releases._M1j}) -- -- >>> parseMaybe defaultBaseLib "release/M1j.2" --- Just (ReadShareRemoteNamespace {server = DefaultCodeserver, repo = "unison", path = public.dev.base.releases._M1j_2}) +-- Just (ReadShareRemoteNamespace {server = DefaultCodeserver, repo = "unison", path = public.base.releases._M1j_2}) -- -- >>> parseMaybe defaultBaseLib "latest-1234" --- Just (ReadShareRemoteNamespace {server = DefaultCodeserver, repo = "unison", path = public.dev.base.trunk}) +-- Just (ReadShareRemoteNamespace {server = DefaultCodeserver, repo = "unison", path = public.base.main}) +-- +-- A version with the 'dirty' flag +-- >>> parseMaybe defaultBaseLib "release/M3-409-gbcdf68db3'" +-- Nothing defaultBaseLib :: Parsec Void Text ReadShareRemoteNamespace defaultBaseLib = fmap makeNS $ latest <|> release where latest, release, version :: Parsec Void Text Text - latest = "latest-" *> many anySingle *> eof $> "trunk" + latest = "latest-" *> many anySingle *> eof $> "main" release = fmap ("releases._" <>) $ "release/" *> version <* eof version = do - Text.pack <$> some (alphaNumChar <|> ('_' <$ oneOf ['.', '_', '-'])) + v <- Text.pack <$> some (alphaNumChar <|> ('_' <$ oneOf ['.', '_', '-'])) + _dirty <- optional (char '\'') + pure v makeNS :: Text -> ReadShareRemoteNamespace makeNS t = ReadShareRemoteNamespace { server = DefaultCodeserver, repo = "unison", - path = "public" Path.:< "dev" Path.:< "base" Path.:< Path.fromText t + path = "public" Path.:< "base" Path.:< Path.fromText t } diff --git a/unison-cli/src/Unison/CommandLine/Welcome.hs b/unison-cli/src/Unison/CommandLine/Welcome.hs index 1b3eccf216..dc30ebe167 100644 --- a/unison-cli/src/Unison/CommandLine/Welcome.hs +++ b/unison-cli/src/Unison/CommandLine/Welcome.hs @@ -27,6 +27,7 @@ data Welcome = Welcome data DownloadBase = DownloadBase ReadShareRemoteNamespace | DontDownloadBase + deriving (Show, Eq) -- Previously Created is different from Previously Onboarded because a user can -- 1.) create a new codebase @@ -35,6 +36,7 @@ data DownloadBase data CodebaseInitStatus = NewlyCreatedCodebase -- Can transition to [Base, Author, Finished] | PreviouslyCreatedCodebase -- Can transition to [Base, Author, Finished, PreviouslyOnboarded]. + deriving (Show, Eq) data Onboarding = Init CodebaseInitStatus -- Can transition to [DownloadingBase, Author, Finished, PreviouslyOnboarded] @@ -43,6 +45,7 @@ data Onboarding -- End States | Finished | PreviouslyOnboarded + deriving (Show, Eq) welcome :: CodebaseInitStatus -> DownloadBase -> FilePath -> Text -> Welcome welcome initStatus downloadBase filePath unisonVersion = diff --git a/unison-cli/tests/Unison/Test/VersionParser.hs b/unison-cli/tests/Unison/Test/VersionParser.hs index 3417e84b48..bf779fdbba 100644 --- a/unison-cli/tests/Unison/Test/VersionParser.hs +++ b/unison-cli/tests/Unison/Test/VersionParser.hs @@ -15,7 +15,7 @@ test = scope "versionparser" . tests . fmap makeTest $ [ ("release/M1j", "releases._M1j"), ("release/M1j.2", "releases._M1j_2"), - ("latest-abc", "trunk"), + ("latest-abc", "main"), ("release/M2i_3", "releases._M2i_3"), ("release/M2i-HOTFIX", "releases._M2i_HOTFIX") ] @@ -29,7 +29,7 @@ makeTest (version, path) = ( ReadShareRemoteNamespace { server = DefaultCodeserver, repo = "unison", - path = Path.fromList ["public", "dev", "base"] <> Path.fromText path + path = Path.fromList ["public", "base"] <> Path.fromText path } ) ) diff --git a/unison-cli/unison/Main.hs b/unison-cli/unison/Main.hs index bfb92dd584..7eb0218f79 100644 --- a/unison-cli/unison/Main.hs +++ b/unison-cli/unison/Main.hs @@ -13,9 +13,9 @@ import ArgParse Command (Init, Launch, PrintVersion, Run, Transcript), GlobalOptions (GlobalOptions, codebasePathOption, exitOption), IsHeadless (Headless, WithCLI), - ShouldExit(Exit, DoNotExit), RunSource (..), ShouldDownloadBase (..), + ShouldExit (DoNotExit, Exit), ShouldForkCodebase (..), ShouldSaveCodebase (..), UsageRenderer, @@ -212,7 +212,7 @@ main = withCP65001 do getCodebaseOrExit mCodePathOption \(initRes, _, theCodebase) -> do runtime <- RTI.startRuntime RTI.Persistent Version.gitDescribeWithDate Server.startServer (Backend.BackendEnv {Backend.useNamesIndex = False}) codebaseServerOpts runtime theCodebase $ \baseUrl -> do - case exitOption of + case exitOption of DoNotExit -> do case isHeadless of Headless -> do