finish up the various ShowDiff* outputs

This commit is contained in:
Arya Irani 2020-01-14 14:23:49 -05:00
parent f9c21dfe33
commit 19181bf2bb
4 changed files with 103 additions and 17 deletions

View File

@ -402,7 +402,7 @@ loop = do
stepManyAt (makeDeleteTermNames ++ makeDeleteTypeNames)
root'' <- use root
diffHelper (Branch.head root') (Branch.head root'') >>=
respondNumbered . uncurry ShowDiffAfterDelete
respondNumbered . uncurry ShowDiffAfterDeleteDefinitions
else do
failed <-
loadSearchResults $ SR.fromNames failed
@ -481,7 +481,7 @@ loop = do
b <- updateAtM dest $ const (pure merged)
if b then do
diffHelper (Branch.head destb) (Branch.head merged) >>=
respondNumbered . uncurry (ShowDiffAfterMerge dest)
respondNumbered . uncurry (ShowDiffAfterMerge dest0 dest)
patch <- getPatchAt defaultPatchPath
void $ propagatePatch inputDescription patch dest
else respond (NothingTodo input)
@ -496,7 +496,7 @@ loop = do
if merged == destb then respond (NothingTodo input)
else
diffHelper (Branch.head destb) (Branch.head merged) >>=
respondNumbered . uncurry (ShowDiffAfterMergePreview dest)
respondNumbered . uncurry (ShowDiffAfterMergePreview dest0 dest)
DiffNamespaceI before0 after0 -> do
let [beforep, afterp] =
@ -578,7 +578,10 @@ loop = do
(Path.toName' (Path.unsplit' p))
(Branch.toNames0 b)
diff = Names3.diff0 deletedNames mempty
respond $ ShowDiff input diff
diffHelper b Branch.empty0 >>=
respondNumbered
. uncurry (ShowDiffAfterDeleteBranch
$ resolveToAbsolute (Path.unsplit' p))
else do
failed <- loadSearchResults $ SR.fromNames failed
failedDependents <- loadSearchResults $ SR.fromNames failedDependents
@ -1322,7 +1325,7 @@ loop = do
let destAbs = Path.toAbsolutePath currentPath' path
resolveConfiguredGitUrl Pull path mayRepo >>= \case
Left e -> eval . Notify $ e
Right ns -> loadRemoteBranchAt input inputDescription ns destAbs
Right ns -> pullRemoteBranchAt path input inputDescription ns destAbs
PushRemoteBranchI mayRepo path -> do
let srcAbs = Path.toAbsolutePath currentPath' path
@ -1730,15 +1733,16 @@ respondNumbered output = do
-- Merges the specified remote branch into the specified local absolute path.
-- Implementation detail of PullRemoteBranchI
loadRemoteBranchAt
pullRemoteBranchAt
:: Var v
=> Monad m
=> Input
=> Path.Path'
-> Input
-> Text
-> (RemoteRepo, Maybe ShortBranchHash, Path)
-> Path.Absolute
-> Action' m v ()
loadRemoteBranchAt input inputDescription (repo, sbh, remotePath) p = do
pullRemoteBranchAt p' input inputDescription (repo, sbh, remotePath) p = do
b <- eval $ maybe (LoadRemoteRootBranch FailIfMissing repo)
(LoadRemoteShortBranch repo) sbh
case b of
@ -1755,7 +1759,7 @@ loadRemoteBranchAt input inputDescription (repo, sbh, remotePath) p = do
doMerge b b0 = do
merged <- eval . Eval $ Branch.merge b b0
diffHelper (Branch.head b0) (Branch.head merged) >>=
respondNumbered . uncurry ShowDiffAfterPull
respondNumbered . uncurry (ShowDiffAfterPull p' p)
pure merged
syncRemoteRootBranch

View File

@ -71,12 +71,13 @@ pushPull push pull p = case p of
data NumberedOutput v
= ShowDiffNamespace Path.Absolute Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterDelete PPE.PrettyPrintEnv (BranchDiffOutput v Ann) -- path is Path.absoluteEmpty
| ShowDiffAfterMerge Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterMergePreview Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterUndo PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterPull PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterDeleteDefinitions PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterDeleteBranch Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterMerge Path.Path' Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterMergePreview Path.Path' Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
| ShowDiffAfterPull Path.Path' Path.Absolute PPE.PrettyPrintEnv (BranchDiffOutput v Ann)
-- | ShowDiff
data Output v
@ -311,4 +312,11 @@ isFailure o = case o of
isNumberedFailure :: NumberedOutput v -> Bool
isNumberedFailure = \case
ShowDiffNamespace{} -> False
ShowDiffAfterDeleteDefinitions{} -> False
ShowDiffAfterDeleteBranch{} -> False
ShowDiffAfterMerge{} -> False
ShowDiffAfterMergePreview{} -> False
ShowDiffAfterUndo{} -> False
ShowDiffAfterPull{} -> False

View File

@ -128,8 +128,60 @@ renderFileName dir = P.group . P.blue . fromString <$> shortenDirectory dir
notifyNumbered :: Var v => NumberedOutput v -> (Pretty, NumberedArgs)
notifyNumbered o = case o of
ShowDiffNamespace oldPath rightPath ppe diffOutput ->
showDiffNamespace ppe oldPath rightPath diffOutput
ShowDiffNamespace oldPrefix newPrefix ppe diffOutput ->
showDiffNamespace ppe oldPrefix newPrefix diffOutput
ShowDiffAfterDeleteDefinitions ppe diff ->
first (\p -> P.lines
[ p
, ""
, undoTip
]) (showDiffNamespace ppe e e diff)
ShowDiffAfterDeleteBranch bAbs ppe diff ->
first (\p -> P.lines
[ p
, ""
, undoTip
]) (showDiffNamespace ppe bAbs bAbs diff)
ShowDiffAfterMerge dest' destAbs ppe diffOutput ->
first (\p -> P.lines [
P.wrap $ "Here's the changed in " <> prettyPath' dest' <> "after the merge:"
, ""
, p
, ""
, tip $ "You can use " <> IP.makeExample' IP.todo
<> "to see if this generated any work to do in this branch"
<> "and " <> IP.makeExample' IP.test <> "to run the tests."
<> "You can always" <> IP.makeExample' IP.undo <> "to undo the results of this merge."
]) (showDiffNamespace ppe destAbs destAbs diffOutput)
ShowDiffAfterMergePreview dest' destAbs ppe diffOutput ->
first (\p -> P.lines [
P.wrap $ "Here's what would change in " <> prettyPath' dest' <> "after the merge:"
, ""
, p
]) (showDiffNamespace ppe destAbs destAbs diffOutput)
ShowDiffAfterUndo ppe diffOutput ->
first (\p -> P.lines ["Here's the changes I undid", "", p ])
(showDiffNamespace ppe e e diffOutput)
ShowDiffAfterPull dest' destAbs ppe diff ->
if OBD.isEmpty diff then
("✅ Looks like " <> prettyPath' dest' <> " is up to date.", mempty)
else
first (\p -> P.lines $ [
P.wrap $ "Here's what's changed in " <> prettyPath' dest' <> "after the pull:", "",
p, "",
undoTip
])
(showDiffNamespace ppe destAbs destAbs diff)
where e = Path.absoluteEmpty
undoTip = tip $ "You can always" <> IP.makeExample' IP.undo
<> "if this wasn't what you wanted."
notifyUser :: forall v . Var v => FilePath -> Output v -> IO Pretty
notifyUser dir o = case o of

View File

@ -66,15 +66,37 @@ unique type Y a b = Y a b
.> delete.term ns2.fromJust'
.> diff.namespace ns1 ns2
.> diff.namespace ns2 nsempty
.> delete.namespace ns2
```
## Display issues to fixup
- [ ] delete.term has some bonkers output
.> delete.term ns2.fromJust'
Here's what I deleted:
Updates:
1. ns1.fromJust#hs2i9lcgkd : Text
2. ns1.fromJust#jk19sm5bf8 : Nat
3. ns2.fromJust' : Nat
- 4. ns1.b : Nat
Name changes: -- this is ok vvv
Original Changes
5. ns2.fromJust ┐ 6. ns2.fromJust' (removed)
7. ns2.fromJust' ┘
Tip: You can always `undo` if this wasn't what you wanted.
- [ ] Things look screwy when the type signature doesn't fit and has to get broken
up into multiple lines. Maybe just disallow that?
- [ ] add tagging of propagated updates to test propagated updates output
- [ ] Delete blank line in between copies / renames entries if all entries are 1 to 1
see todo in the code
- [ ] Maybe group and/or add headings to the types, constructors, terms
- [ ] ~~Maybe group and/or add headings to the types, constructors, terms~~
- [x] Make a decision about how we want to show constructors in the diff
- [x] When you delete a name with metadata, it also shows up in updates section
with the deleted metadata.