mirror of
https://github.com/unisonweb/unison.git
synced 2024-10-05 14:17:33 +03:00
Project UI mostly wired up
This commit is contained in:
parent
ab703fff81
commit
1a518073f6
@ -83,6 +83,7 @@ import Unison.Codebase.Editor.HandleInput.Pull (doPullRemoteBranch, mergeBranchA
|
||||
import Unison.Codebase.Editor.HandleInput.Push (handleGist, handlePushRemoteBranch)
|
||||
import Unison.Codebase.Editor.HandleInput.ReleaseDraft (handleReleaseDraft)
|
||||
import Unison.Codebase.Editor.HandleInput.TermResolution (resolveCon, resolveMainRef, resolveTermRef)
|
||||
import Unison.Codebase.Editor.HandleInput.UI (openUI)
|
||||
import Unison.Codebase.Editor.HandleInput.Update (doSlurpAdds, handleUpdate)
|
||||
import Unison.Codebase.Editor.Input
|
||||
import Unison.Codebase.Editor.Input qualified as Input
|
||||
@ -286,9 +287,9 @@ loop e = do
|
||||
P.lines
|
||||
[ "The API information is as follows:",
|
||||
P.newline,
|
||||
P.indentN 2 (P.hiBlue ("UI: " <> fromString (Server.urlFor (Server.UI Path.absoluteEmpty Nothing) baseUrl))),
|
||||
P.indentN 2 (P.hiBlue ("UI: " <> Pretty.text (Server.urlFor (Server.LooseCodeUI Path.absoluteEmpty Nothing) baseUrl))),
|
||||
P.newline,
|
||||
P.indentN 2 (P.hiBlue ("API: " <> fromString (Server.urlFor Server.Api baseUrl)))
|
||||
P.indentN 2 (P.hiBlue ("API: " <> Pretty.text (Server.urlFor Server.Api baseUrl)))
|
||||
]
|
||||
CreateMessage pretty ->
|
||||
Cli.respond $ PrintMessage pretty
|
||||
|
@ -4,6 +4,7 @@ import Control.Lens qualified as Lens
|
||||
import Control.Monad.Reader (ask)
|
||||
import Data.Map qualified as Map
|
||||
import Data.Set qualified as Set
|
||||
import Data.Text qualified as Text
|
||||
import U.Codebase.Branch.Type qualified as V2Branch
|
||||
import U.Codebase.Reference qualified as V2 (Reference)
|
||||
import U.Codebase.Referent qualified as V2 (Referent)
|
||||
@ -16,7 +17,6 @@ import Unison.Cli.Monad (Cli)
|
||||
import Unison.Cli.Monad qualified as Cli
|
||||
import Unison.Cli.MonadUtils qualified as Cli
|
||||
import Unison.Cli.ProjectUtils qualified as Project
|
||||
import Unison.Cli.ProjectUtils qualified as ProjectUtils
|
||||
import Unison.Codebase (Codebase)
|
||||
import Unison.Codebase qualified as Codebase
|
||||
import Unison.Codebase.Path qualified as Path
|
||||
@ -25,7 +25,6 @@ import Unison.ConstructorType qualified as ConstructorType
|
||||
import Unison.HashQualified qualified as HQ
|
||||
import Unison.Name (Name)
|
||||
import Unison.Name qualified as Name
|
||||
import Unison.NameSegment (NameSegment)
|
||||
import Unison.Parser.Ann (Ann (..))
|
||||
import Unison.Prelude
|
||||
import Unison.Project (ProjectAndBranch)
|
||||
@ -49,16 +48,14 @@ openUIForProject :: Server.BaseUrl -> ProjectAndBranch Sqlite.Project Sqlite.Pro
|
||||
openUIForProject url projectAndBranch pathFromProjectRoot = do
|
||||
Cli.Env {codebase} <- ask
|
||||
mayDefinitionRef <- getDefinitionRef codebase
|
||||
let projectBranchNames = bimap Project.projectName ProjectBranch.branchName projectAndBranch
|
||||
_success <- liftIO (openBrowser (Server.urlFor (Server.ProjectBranchUI projectBranchNames mayDefinitionRef) url))
|
||||
let projectBranchNames = bimap Project.name ProjectBranch.name projectAndBranch
|
||||
_success <- liftIO . openBrowser . Text.unpack $ Server.urlFor (Server.ProjectBranchUI projectBranchNames mayDefinitionRef) url
|
||||
pure ()
|
||||
where
|
||||
projectRootPath :: Path.Absolute
|
||||
projectRootPath = ProjectUtils.projectBranchPath (bimap Project.projectId ProjectBranch.branchId projectAndBranch)
|
||||
-- If the provided ui path matches a definition, find it.
|
||||
getDefinitionRef :: Codebase m Symbol Ann -> Cli (Maybe (Server.DefinitionReference))
|
||||
getDefinitionRef codebase = runMaybeT $ do
|
||||
(pathToDefinitionNamespace, nameSeg) <- hoistMaybe $ Lens.unsnoc pathFromProjectRoot
|
||||
(pathToDefinitionNamespace, _nameSeg) <- hoistMaybe $ Lens.unsnoc pathFromProjectRoot
|
||||
namespaceBranch <- lift $ Cli.runTransaction (Codebase.getShallowBranchAtPath pathToDefinitionNamespace Nothing)
|
||||
let fqn = Path.unsafeToName pathFromProjectRoot
|
||||
getTermOrTypeRef codebase namespaceBranch fqn
|
||||
@ -81,7 +78,7 @@ openUIForLooseCode url path' = do
|
||||
Cli.Env {codebase} <- ask
|
||||
(perspective, definitionRef) <- getUIUrlParts codebase
|
||||
|
||||
_success <- liftIO (openBrowser (Server.urlFor (Server.LooseCodeUI perspective definitionRef) url))
|
||||
_success <- liftIO . openBrowser . Text.unpack $ Server.urlFor (Server.LooseCodeUI perspective definitionRef) url
|
||||
pure ()
|
||||
where
|
||||
getUIUrlParts :: Codebase m Symbol Ann -> Cli (Path.Absolute, Maybe (Server.DefinitionReference))
|
||||
|
@ -278,9 +278,9 @@ main = withCP65001 . runInUnboundThread . Ki.scoped $ \scope -> do
|
||||
PT.putPrettyLn $
|
||||
P.lines
|
||||
[ "I've started the Codebase API server at",
|
||||
P.string $ Server.urlFor Server.Api baseUrl,
|
||||
P.text $ Server.urlFor Server.Api baseUrl,
|
||||
"and the Codebase UI at",
|
||||
P.string $ Server.urlFor (Server.UI Path.absoluteEmpty Nothing) baseUrl
|
||||
P.text $ Server.urlFor (Server.LooseCodeUI Path.absoluteEmpty Nothing) baseUrl
|
||||
]
|
||||
PT.putPrettyLn $
|
||||
P.string "Running the codebase manager headless with "
|
||||
|
@ -198,7 +198,8 @@ instance Show BaseUrl where
|
||||
--
|
||||
-- >>> import qualified Unison.Syntax.Name as Name
|
||||
-- >>> let service = ProjectBranchUI (ProjectAndBranch (ProjectName "base") (ProjectBranchName "main")) (Just (TermReference (NameOnly (Name.unsafeFromText "List.map"))))
|
||||
-- >>> urlFor
|
||||
-- >>> let baseUrl = (BaseUrl{ urlHost = "https://localhost", urlToken = "asdf", urlPort = 1234 })
|
||||
-- >>> urlFor service baseUrl
|
||||
urlFor :: Service -> BaseUrl -> Text
|
||||
urlFor service baseUrl =
|
||||
case service of
|
||||
|
Loading…
Reference in New Issue
Block a user