Make TarDir backwardscompat
This commit is contained in:
		
							parent
							
								
									27b2d2ac7d
								
							
						
					
					
						commit
						dac64f5718
					
				@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					# !!! if you use RegexDir, then the version must be bumped !!!
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
toolRequirements:
 | 
					toolRequirements:
 | 
				
			||||||
  GHC:
 | 
					  GHC:
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,7 @@ module GHCup.Types.JSON where
 | 
				
			|||||||
import           GHCup.Types
 | 
					import           GHCup.Types
 | 
				
			||||||
import           GHCup.Utils.Prelude
 | 
					import           GHCup.Utils.Prelude
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import           Control.Applicative            ( (<|>) )
 | 
				
			||||||
import           Data.Aeson
 | 
					import           Data.Aeson
 | 
				
			||||||
import           Data.Aeson.TH
 | 
					import           Data.Aeson.TH
 | 
				
			||||||
import           Data.Aeson.Types
 | 
					import           Data.Aeson.Types
 | 
				
			||||||
@ -195,5 +196,16 @@ instance FromJSON (Path Rel) where
 | 
				
			|||||||
      Left  e -> fail $ "Failure in HPath Rel (FromJSON)" <> show e
 | 
					      Left  e -> fail $ "Failure in HPath Rel (FromJSON)" <> show e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
deriveJSON defaultOptions{ sumEncoding = ObjectWithSingleField } ''TarDir
 | 
					instance ToJSON TarDir where
 | 
				
			||||||
 | 
					  toJSON (RealDir  p) = toJSON p
 | 
				
			||||||
 | 
					  toJSON (RegexDir r) = object ["RegexDir" .= r]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					instance FromJSON TarDir where
 | 
				
			||||||
 | 
					  parseJSON v = realDir v <|> regexDir v
 | 
				
			||||||
 | 
					   where
 | 
				
			||||||
 | 
					    realDir = withText "TarDir" $ \t -> do
 | 
				
			||||||
 | 
					      fp <- parseJSON (String t)
 | 
				
			||||||
 | 
					      pure (RealDir fp)
 | 
				
			||||||
 | 
					    regexDir = withObject "TarDir" $ \o -> do
 | 
				
			||||||
 | 
					      r <- o .: "RegexDir"
 | 
				
			||||||
 | 
					      pure $ RegexDir r
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user