cleaning up and manual tests

This commit is contained in:
Yann Esposito (Yogsototh) 2018-10-07 00:18:40 +02:00
parent 9b341ba8b0
commit f22c7e0e67
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646

View file

@ -18,7 +18,7 @@ module GPM.Review
)
where
import Protolude hiding (ask, die, (%))
import Protolude hiding (ask, die, (%),stdout)
import Turtle
import Data.FileEmbed (embedStringFile)
@ -35,6 +35,8 @@ data ReviewCommand = ReviewStart ReviewOptions
| ReviewFeedback ReviewOptions
| ReviewQuestion ReviewOptions
| ReviewReject ReviewOptions
| ReviewShow
| ReviewRetrieve
deriving (Eq)
-- | init gpm branch to handle reviews
@ -72,7 +74,6 @@ parseFullNewReview = do
, title = fromMaybe "Review Title" nrTitle
, user = nrUser
, branch = nrBranch
, reviewer = nrUser
, description = nrDescription
}
@ -92,7 +93,6 @@ parsePartialNewReview status = do
, title = fromMaybe "Review Title" nrTitle
, user = nrUser
, branch = nrBranch
, reviewer = nrUser
, description = nrDescription
}
@ -112,6 +112,10 @@ parseReviewCmd =
(ReviewStart <$> parseFullReviewOptions)
<|> subcommand "end" "End a review"
(pure ReviewCommit)
<|> subcommand "show" "Show the review"
(pure ReviewShow)
<|> subcommand "retrieve" "Retrieve all the reviews for current branch"
(pure ReviewRetrieve)
gatherNewReviewInfos :: NewReview -> Text -> IO NewReview
@ -151,6 +155,29 @@ handleReview (ReviewChangeRequest opts) br =
handleNewReview (setStatus opts "CHANGE_REQUESTED") br
handleReview (ReviewReject opts) br =
handleNewReview (setStatus opts "REJECTED") br
handleReview ReviewShow br = showReview br
handleReview ReviewRetrieve br = retrieveReview br
communicateFp :: MonadIO m => Turtle.FilePath -> m ()
communicateFp filepath = do
let fptxt = format fp filepath
putText $ "Review file: " <> fptxt
export "GPM_REVIEW_FILE" fptxt
putText $ "export GPM_REVIEW_FILE=" <> fptxt
retrieveReview :: Text -> IO ()
retrieveReview br = do
reviewName <- getTmpReviewFile br
let gpmReviewFile = "reviews" </>
fromString (toS ("review-" <> protectStr br <> ".org"))
mktree (directory reviewName)
cp gpmReviewFile reviewName
communicateFp reviewName
showReview :: Text -> IO ()
showReview br = do
reviewName <- getTmpReviewFile br
stdout (input reviewName)
protectStr :: Text -> Text
protectStr =
@ -164,13 +191,14 @@ validTmpNewReview br = do
let dstReview = "reviews" </>
fromString (toS ("review-" <> protectStr br <> ".org"))
appendFile (toS (format fp dstReview)) ("\n\n" <> tmpReview)
debug_ $ "git add " <> toS (format fp dstReview)
debug_ $ "git commit -m \"review for " <> br <> "\""
data NewReview =
NewReview { status :: Text
, title :: Text
, user :: Maybe User
, branch :: Maybe Text
, reviewer :: Maybe User
, description :: Maybe Text
} deriving (Eq)
@ -182,7 +210,6 @@ instance ToMustache NewReview where
, "title" ~> title
, "user" ~> user
, "branch" ~> branch
, "reviewer" ~> reviewer
, "description" ~> description
]
@ -194,6 +221,7 @@ getTmpReviewFile br = do
createTmpNewReview :: NewReview -> IO ()
createTmpNewReview nr = do
putText "DEBUG: create temporary file for the new review"
ecompiled <- automaticCompile ["./templates"] "new-review.org"
case ecompiled of
Left pe -> do
@ -202,8 +230,9 @@ createTmpNewReview nr = do
Right compiled -> do
reviewName <- getTmpReviewFile (fromMaybe "no-name" (branch nr))
let tmpReviewFilename = format fp reviewName
mktree (directory reviewName)
writeFile (toS tmpReviewFilename) (substitute compiled nr)
putText $ "Review file: " <> tmpReviewFilename
communicateFp reviewName
interactiveNewReview :: NewReview -> IO NewReview
interactiveNewReview nr =
@ -217,8 +246,6 @@ interactiveNewReview nr =
ask "user" (fromMaybe "your name" (user nr)) identity)
<*> (maybe (branch nr) Just
<$> ask "branch" (fromMaybe "related branch" (branch nr)) identity)
<*> (maybe (reviewer nr) Just
<$> ask "reviewer" "a single nick" identity)
<*> (maybe (description nr) Just
<$> ask "description" "the long description" identity)
where