🚧 WIP 🚧

This commit is contained in:
Yann Esposito (Yogsototh) 2018-10-09 21:49:24 +02:00
parent 2d434d9b8a
commit f6cb951c88
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646

View file

@ -137,7 +137,6 @@ parseReviewCmd =
<|> subcommand "retrieve" "Retrieve all the reviews for current branch" <|> subcommand "retrieve" "Retrieve all the reviews for current branch"
(pure ReviewRetrieve) (pure ReviewRetrieve)
gatherNewReviewInfos :: NewReview -> Text -> IO NewReview gatherNewReviewInfos :: NewReview -> Text -> IO NewReview
gatherNewReviewInfos iss br = do gatherNewReviewInfos iss br = do
user <- if isNothing (user iss) user <- if isNothing (user iss)
@ -155,7 +154,7 @@ handleNewReview opts br = do
newReview <- if interactive opts newReview <- if interactive opts
then interactiveNewReview newReviewTmp then interactiveNewReview newReviewTmp
else return newReviewTmp else return newReviewTmp
createTmpNewReview newReview createTmpNewReview newReview br
setStatus :: ReviewOptions -> Text -> ReviewOptions setStatus :: ReviewOptions -> Text -> ReviewOptions
setStatus ro status = ro { newReview = (newReview ro) { status = status } } setStatus ro status = ro { newReview = (newReview ro) { status = status } }
@ -178,9 +177,11 @@ handleReview (ReviewReject opts) br =
handleReview ReviewShow br = showReview br handleReview ReviewShow br = showReview br
handleReview ReviewRetrieve br = retrieveReview br handleReview ReviewRetrieve br = retrieveReview br
communicateFp :: MonadIO m => Turtle.FilePath -> m () communicateFp :: Turtle.FilePath -> IO ()
communicateFp filepath = do communicateFp filepath = do
let fptxt = format fp filepath let fptxt = format fp filepath
mainReviewName <- getMainReviewFile
putText $ "Main review file: " <> format fp mainReviewName
putText $ "Review file: " <> fptxt putText $ "Review file: " <> fptxt
export "GPM_REVIEW_FILE" fptxt export "GPM_REVIEW_FILE" fptxt
putText $ "export GPM_REVIEW_FILE=" <> fptxt putText $ "export GPM_REVIEW_FILE=" <> fptxt
@ -194,12 +195,25 @@ retrieveReview br = do
cp gpmReviewFile reviewName cp gpmReviewFile reviewName
communicateFp reviewName communicateFp reviewName
getMainReviewFile :: IO Turtle.FilePath
getMainReviewFile = do
gpmDataDir <- getGPMDataDir
return $ gpmDataDir </> "current-review.org"
-- | Use a single main name for current review
linkReviewFile :: Turtle.FilePath -> IO Turtle.FilePath
linkReviewFile reviewFile = do
mainReviewFile <- getMainReviewFile
debug_ $ format ("ln -s "%fp%" "%fp) reviewFile mainReviewFile
return mainReviewFile
showReview :: Text -> IO () showReview :: Text -> IO ()
showReview br = do showReview br = do
reviewName <- getTmpReviewFile br reviewName <- getTmpReviewFile br
mainReviewName <- getMainReviewFile
putText "--------------------------------------------------------------------------------" putText "--------------------------------------------------------------------------------"
putText $ format ("Review file: "%fp) reviewName putText $ format ("Review file: "%fp) reviewName
putText $ format ("(setq org-annotate-file-storage-file \""%fp%"\")") reviewName putText $ format ("Main Review file: "%fp) mainReviewName
putText "--------------------------------------------------------------------------------" putText "--------------------------------------------------------------------------------"
stdout (input reviewName) stdout (input reviewName)
putText "--------------------------------------------------------------------------------" putText "--------------------------------------------------------------------------------"
@ -225,8 +239,8 @@ getTmpReviewFile br = do
let reviewFilename = "review-" <> protectStr br <> ".org" let reviewFilename = "review-" <> protectStr br <> ".org"
return $ gpmDataDir </> fromString (toS reviewFilename) return $ gpmDataDir </> fromString (toS reviewFilename)
createTmpNewReview :: NewReview -> IO () createTmpNewReview :: NewReview -> Text -> IO ()
createTmpNewReview nr = do createTmpNewReview nr br = do
putText "DEBUG: create temporary file for the new review" putText "DEBUG: create temporary file for the new review"
ecompiled <- automaticCompile ["./templates"] "new-review.org" ecompiled <- automaticCompile ["./templates"] "new-review.org"
case ecompiled of case ecompiled of
@ -234,10 +248,10 @@ createTmpNewReview nr = do
print pe print pe
die "Parse ERROR, check your template ./templates/new-review.org" die "Parse ERROR, check your template ./templates/new-review.org"
Right compiled -> do Right compiled -> do
reviewName <- getTmpReviewFile (fromMaybe "no-name" (branch nr)) reviewName <- getTmpReviewFile (fromMaybe br (branch nr))
let tmpReviewFilename = format fp reviewName
mktree (directory reviewName) mktree (directory reviewName)
writeFile (toS tmpReviewFilename) (substitute compiled nr) writeFile (toS (format fp reviewName)) (substitute compiled nr)
linkReviewFile reviewName
communicateFp reviewName communicateFp reviewName
interactiveNewReview :: NewReview -> IO NewReview interactiveNewReview :: NewReview -> IO NewReview
@ -257,5 +271,10 @@ interactiveNewReview nr =
where where
ask :: Text -> Text -> (Text -> a) -> IO (Maybe a) ask :: Text -> Text -> (Text -> a) -> IO (Maybe a)
ask field ex tr = do ask field ex tr = do
putText $ "Please enter " <> field <> "("<> ex <>"): " putText $ "Please enter " <> field <> " ("<> ex <>"): "
fmap (tr . lineToText) <$> readline mline <- readline
case mline of
Nothing -> return Nothing
Just line -> if line == ""
then return Nothing
else return . Just . tr . lineToText $ line