5
5
{-# LANGUAGE DuplicateRecordFields #-}
6
6
{-# LANGUAGE TypeApplications #-}
7
7
{-# LANGUAGE NumericUnderscores #-}
8
+ {-# LANGUAGE ViewPatterns #-}
8
9
9
10
module GHCup.OptParse.Common where
10
11
@@ -693,52 +694,52 @@ fromVersion' :: ( HasLog env
693
694
] m (GHCTargetVersion , Maybe VersionInfo )
694
695
fromVersion' SetRecommended tool = do
695
696
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
696
- bimap mkTVer Just <$> getRecommended dls tool
697
+ second Just <$> getRecommended dls tool
697
698
?? TagNotFound Recommended tool
698
699
fromVersion' (SetGHCVersion v) tool = do
699
700
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
700
- let vi = getVersionInfo (_tvVersion v) tool dls
701
+ let vi = getVersionInfo v tool dls
701
702
case pvp $ prettyVer (_tvVersion v) of -- need to be strict here
702
703
Left _ -> pure (v, vi)
703
704
Right pvpIn ->
704
- lift (getLatestToolFor tool pvpIn dls) >>= \ case
705
- Just (pvp_, vi') -> do
705
+ lift (getLatestToolFor tool (_tvTarget v) pvpIn dls) >>= \ case
706
+ Just (pvp_, vi', mt ) -> do
706
707
v' <- lift $ pvpToVersion pvp_ " "
707
708
when (v' /= _tvVersion v) $ lift $ logWarn (" Assuming you meant version " <> prettyVer v')
708
- pure (GHCTargetVersion (_tvTarget v) v', Just vi')
709
+ pure (GHCTargetVersion mt v', Just vi')
709
710
Nothing -> pure (v, vi)
710
- fromVersion' (SetToolVersion v ) tool = do
711
+ fromVersion' (SetToolVersion (mkTVer -> v) ) tool = do
711
712
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
712
713
let vi = getVersionInfo v tool dls
713
- case pvp $ prettyVer v of -- need to be strict here
714
- Left _ -> pure (mkTVer v, vi)
714
+ case pvp $ prettyVer (_tvVersion v) of -- need to be strict here
715
+ Left _ -> pure (v, vi)
715
716
Right pvpIn ->
716
- lift (getLatestToolFor tool pvpIn dls) >>= \ case
717
- Just (pvp_, vi') -> do
717
+ lift (getLatestToolFor tool (_tvTarget v) pvpIn dls) >>= \ case
718
+ Just (pvp_, vi', mt ) -> do
718
719
v' <- lift $ pvpToVersion pvp_ " "
719
- when (v' /= v) $ lift $ logWarn (" Assuming you meant version " <> prettyVer v')
720
- pure (GHCTargetVersion mempty v', Just vi')
721
- Nothing -> pure (mkTVer v, vi)
720
+ when (v' /= _tvVersion v) $ lift $ logWarn (" Assuming you meant version " <> prettyVer v')
721
+ pure (GHCTargetVersion mt v', Just vi')
722
+ Nothing -> pure (v, vi)
722
723
fromVersion' (SetToolTag Latest ) tool = do
723
724
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
724
- bimap mkTVer Just <$> getLatest dls tool ?? TagNotFound Latest tool
725
+ bimap id Just <$> getLatest dls tool ?? TagNotFound Latest tool
725
726
fromVersion' (SetToolDay day) tool = do
726
727
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
727
- bimap mkTVer Just <$> case getByReleaseDay dls tool day of
728
+ bimap id Just <$> case getByReleaseDay dls tool day of
728
729
Left ad -> throwE $ DayNotFound day tool ad
729
730
Right v -> pure v
730
731
fromVersion' (SetToolTag LatestPrerelease ) tool = do
731
732
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
732
- bimap mkTVer Just <$> getLatestPrerelease dls tool ?? TagNotFound LatestPrerelease tool
733
+ bimap id Just <$> getLatestPrerelease dls tool ?? TagNotFound LatestPrerelease tool
733
734
fromVersion' (SetToolTag LatestNightly ) tool = do
734
735
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
735
- bimap mkTVer Just <$> getLatestNightly dls tool ?? TagNotFound LatestNightly tool
736
+ bimap id Just <$> getLatestNightly dls tool ?? TagNotFound LatestNightly tool
736
737
fromVersion' (SetToolTag Recommended ) tool = do
737
738
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
738
- bimap mkTVer Just <$> getRecommended dls tool ?? TagNotFound Recommended tool
739
+ bimap id Just <$> getRecommended dls tool ?? TagNotFound Recommended tool
739
740
fromVersion' (SetToolTag (Base pvp'')) GHC = do
740
741
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
741
- bimap mkTVer Just <$> getLatestBaseVersion dls pvp'' ?? TagNotFound (Base pvp'') GHC
742
+ bimap id Just <$> getLatestBaseVersion dls pvp'' ?? TagNotFound (Base pvp'') GHC
742
743
fromVersion' SetNext tool = do
743
744
GHCupInfo { _ghcupDownloads = dls } <- lift getGHCupInfo
744
745
next <- case tool of
@@ -783,7 +784,7 @@ fromVersion' SetNext tool = do
783
784
. sort
784
785
$ stacks) ?? NoToolVersionSet tool
785
786
GHCup -> fail " GHCup cannot be set"
786
- let vi = getVersionInfo (_tvVersion next) tool dls
787
+ let vi = getVersionInfo next tool dls
787
788
pure (next, vi)
788
789
fromVersion' (SetToolTag t') tool =
789
790
throwE $ TagNotFound t' tool
@@ -799,15 +800,15 @@ checkForUpdates :: ( MonadReader env m
799
800
, MonadIO m
800
801
, MonadFail m
801
802
)
802
- => m [(Tool , Version )]
803
+ => m [(Tool , GHCTargetVersion )]
803
804
checkForUpdates = do
804
805
GHCupInfo { _ghcupDownloads = dls } <- getGHCupInfo
805
806
lInstalled <- listVersions Nothing [ListInstalled True ] False False (Nothing , Nothing )
806
- let latestInstalled tool = (fmap lVer . lastMay . filter (\ lr -> lTool lr == tool)) lInstalled
807
+ let latestInstalled tool = (fmap ( \ lr -> GHCTargetVersion (lCross lr) ( lVer lr)) . lastMay . filter (\ lr -> lTool lr == tool)) lInstalled
807
808
808
- ghcup <- forMM (getLatest dls GHCup ) $ \ (l, _) -> do
809
+ ghcup <- forMM (getLatest dls GHCup ) $ \ (GHCTargetVersion _ l, _) -> do
809
810
(Right ghcup_ver) <- pure $ version $ prettyPVP ghcUpVer
810
- if (l > ghcup_ver) then pure $ Just (GHCup , l) else pure Nothing
811
+ if (l > ghcup_ver) then pure $ Just (GHCup , mkTVer l) else pure Nothing
811
812
812
813
otherTools <- forM [GHC , Cabal , HLS , Stack ] $ \ t ->
813
814
forMM (getLatest dls t) $ \ (l, _) -> do
0 commit comments