mirror of
https://github.com/unisonweb/unison.git
synced 2024-09-22 07:48:10 +03:00
started adding ShareRepo constructors
This commit is contained in:
parent
00355fd8bd
commit
fc39e2e24e
@ -173,6 +173,7 @@ default-extensions:
|
||||
- DerivingStrategies
|
||||
- DerivingVia
|
||||
- DoAndIfThenElse
|
||||
- DuplicateRecordFields
|
||||
- FlexibleContexts
|
||||
- FlexibleInstances
|
||||
- GeneralizedNewtypeDeriving
|
||||
|
@ -13,24 +13,31 @@ import Unison.Prelude
|
||||
|
||||
data ReadRepo
|
||||
= ReadRepoGit ReadGitRepo
|
||||
| ReadRepoShare ShareRepo
|
||||
deriving (Eq, Show)
|
||||
|
||||
data ReadGitRepo = ReadGitRepo {url :: Text, ref :: Maybe Text}
|
||||
deriving (Eq, Show)
|
||||
|
||||
data WriteRepo = WriteRepoGit WriteGitRepo
|
||||
newtype ShareRepo = ShareRepo {url :: Text}
|
||||
deriving (Eq, Show)
|
||||
|
||||
data WriteGitRepo = WriteGitRepo {url' :: Text, branch :: Maybe Text}
|
||||
data WriteRepo
|
||||
= WriteRepoGit WriteGitRepo
|
||||
| WriteRepoShare ShareRepo
|
||||
deriving (Eq, Show)
|
||||
|
||||
data WriteGitRepo = WriteGitRepo {url :: Text, branch :: Maybe Text}
|
||||
deriving (Eq, Show)
|
||||
|
||||
writeToRead :: WriteRepo -> ReadRepo
|
||||
writeToRead = \case
|
||||
WriteRepoGit repo -> ReadRepoGit (writeToReadGit repo)
|
||||
WriteRepoShare repo -> ReadRepoShare repo
|
||||
|
||||
writeToReadGit :: WriteGitRepo -> ReadGitRepo
|
||||
writeToReadGit = \case
|
||||
WriteGitRepo {url', branch} -> ReadGitRepo {url = url', ref = branch}
|
||||
WriteGitRepo {url, branch} -> ReadGitRepo {url = url, ref = branch}
|
||||
|
||||
writePathToRead :: WriteRemotePath -> ReadRemoteNamespace
|
||||
writePathToRead (w, p) = (writeToRead w, Nothing, p)
|
||||
@ -38,11 +45,14 @@ writePathToRead (w, p) = (writeToRead w, Nothing, p)
|
||||
printReadRepo :: ReadRepo -> Text
|
||||
printReadRepo = \case
|
||||
ReadRepoGit ReadGitRepo {url, ref} -> url <> Monoid.fromMaybe (Text.cons ':' <$> ref)
|
||||
ReadRepoShare ShareRepo {url} -> url
|
||||
|
||||
printWriteRepo :: WriteRepo -> Text
|
||||
printWriteRepo = \case
|
||||
WriteRepoGit WriteGitRepo {url', branch} -> url' <> Monoid.fromMaybe (Text.cons ':' <$> branch)
|
||||
WriteRepoGit WriteGitRepo {url, branch} -> url <> Monoid.fromMaybe (Text.cons ':' <$> branch)
|
||||
WriteRepoShare ShareRepo {url} -> url
|
||||
|
||||
-- | print remote namespace
|
||||
printNamespace :: ReadRepo -> Maybe ShortBranchHash -> Path -> Text
|
||||
printNamespace repo sbh path =
|
||||
printReadRepo repo <> case sbh of
|
||||
@ -56,6 +66,7 @@ printNamespace repo sbh path =
|
||||
then mempty
|
||||
else "." <> Path.toText path
|
||||
|
||||
-- | print remote path
|
||||
printHead :: WriteRepo -> Path -> Text
|
||||
printHead repo path =
|
||||
printWriteRepo repo
|
||||
|
@ -863,7 +863,7 @@ pushGitBranch srcConn repo (PushGitBranchOpts setRoot _syncMode) action = Unlift
|
||||
|
||||
-- Commit our changes
|
||||
push :: forall n. MonadIO n => Git.GitRepo -> WriteGitRepo -> Branch m -> n Bool -- withIOError needs IO
|
||||
push remotePath repo@(WriteGitRepo {url' = url, branch = mayGitBranch}) newRootBranch = time "SqliteCodebase.pushGitRootBranch.push" $ do
|
||||
push remotePath repo@(WriteGitRepo {url, branch = mayGitBranch}) newRootBranch = time "SqliteCodebase.pushGitRootBranch.push" $ do
|
||||
-- has anything changed?
|
||||
-- note: -uall recursively shows status for all files in untracked directories
|
||||
-- we want this so that we see
|
||||
|
@ -178,6 +178,7 @@ library
|
||||
DerivingStrategies
|
||||
DerivingVia
|
||||
DoAndIfThenElse
|
||||
DuplicateRecordFields
|
||||
FlexibleContexts
|
||||
FlexibleInstances
|
||||
GeneralizedNewtypeDeriving
|
||||
@ -349,6 +350,7 @@ test-suite parser-typechecker-tests
|
||||
DerivingStrategies
|
||||
DerivingVia
|
||||
DoAndIfThenElse
|
||||
DuplicateRecordFields
|
||||
FlexibleContexts
|
||||
FlexibleInstances
|
||||
GeneralizedNewtypeDeriving
|
||||
|
@ -58,7 +58,7 @@ import qualified Unison.Codebase.Editor.Output as Output
|
||||
import qualified Unison.Codebase.Editor.Output.BranchDiff as OBranchDiff
|
||||
import qualified Unison.Codebase.Editor.Output.DumpNamespace as Output.DN
|
||||
import qualified Unison.Codebase.Editor.Propagate as Propagate
|
||||
import Unison.Codebase.Editor.RemoteRepo (ReadGitRemoteNamespace, ReadRepo (ReadRepoGit), WriteGitRepo, WriteRemotePath, WriteRepo (WriteRepoGit), printNamespace, writePathToRead)
|
||||
import Unison.Codebase.Editor.RemoteRepo (ReadGitRemoteNamespace, ReadRepo (ReadRepoGit), WriteGitRepo, WriteRemotePath, WriteRepo (WriteRepoGit, WriteRepoShare), printNamespace, writePathToRead)
|
||||
import qualified Unison.Codebase.Editor.Slurp as Slurp
|
||||
import Unison.Codebase.Editor.SlurpComponent (SlurpComponent (..))
|
||||
import qualified Unison.Codebase.Editor.SlurpComponent as SC
|
||||
@ -1757,10 +1757,10 @@ doPushRemoteBranch repo localPath syncMode remoteTarget = do
|
||||
currentPath' <- use LoopState.currentPath
|
||||
getAt (Path.resolve currentPath' localPath)
|
||||
|
||||
unlessError do
|
||||
case repo of
|
||||
WriteRepoGit repo ->
|
||||
withExceptT Output.GitError $ do
|
||||
case repo of
|
||||
WriteRepoGit repo ->
|
||||
unlessError do
|
||||
withExceptT Output.GitError do
|
||||
case remoteTarget of
|
||||
Nothing -> do
|
||||
let opts = PushGitBranchOpts {setRoot = False, syncMode}
|
||||
@ -1780,6 +1780,14 @@ doPushRemoteBranch repo localPath syncMode remoteTarget = do
|
||||
syncGitRemoteBranch repo opts withRemoteRoot >>= \case
|
||||
Left output -> respond output
|
||||
Right _branch -> respond Success
|
||||
WriteRepoShare repo -> do
|
||||
case remoteTarget of
|
||||
Nothing ->
|
||||
-- do a gist
|
||||
error "don't do a gist"
|
||||
Just (remotePath, pushBehavior) ->
|
||||
-- let (userSegment :| pathSegments) = undefined
|
||||
handlePushToUnisonShare _userSegment _pathSegments _localPath pushBehavior
|
||||
where
|
||||
-- Per `pushBehavior`, we are either:
|
||||
--
|
||||
|
@ -52,7 +52,7 @@ writeRepo :: P WriteRepo
|
||||
writeRepo = P.label "repo root for writing" $ do
|
||||
uri <- parseProtocol
|
||||
treeish <- P.optional treeishSuffix
|
||||
pure (WriteRepoGit WriteGitRepo {url' = printProtocol uri, branch = treeish})
|
||||
pure (WriteRepoGit WriteGitRepo {url = printProtocol uri, branch = treeish})
|
||||
|
||||
writeRepoPath :: P WriteRemotePath
|
||||
writeRepoPath = P.label "generic git repo" $ do
|
||||
|
@ -2821,10 +2821,14 @@ prettyTypeName ppe r =
|
||||
prettyHashQualified (PPE.typeName ppe r)
|
||||
|
||||
prettyReadRepo :: ReadRepo -> Pretty
|
||||
prettyReadRepo (RemoteRepo.ReadRepoGit RemoteRepo.ReadGitRepo {url}) = P.blue (P.text url)
|
||||
prettyReadRepo = \case
|
||||
RemoteRepo.ReadRepoGit RemoteRepo.ReadGitRepo {url} -> P.blue (P.text url)
|
||||
RemoteRepo.ReadRepoShare RemoteRepo.ShareRepo {url} -> P.blue (P.text url)
|
||||
|
||||
prettyWriteRepo :: WriteRepo -> Pretty
|
||||
prettyWriteRepo (RemoteRepo.WriteRepoGit RemoteRepo.WriteGitRepo {url'}) = P.blue (P.text url')
|
||||
prettyWriteRepo = \case
|
||||
RemoteRepo.WriteRepoGit RemoteRepo.WriteGitRepo {url} -> P.blue (P.text url)
|
||||
RemoteRepo.WriteRepoShare RemoteRepo.ShareRepo {url} -> P.blue (P.text url)
|
||||
|
||||
isTestOk :: Term v Ann -> Bool
|
||||
isTestOk tm = case tm of
|
||||
|
Loading…
Reference in New Issue
Block a user