bin: hledger-check-tag-files, a script using stack's script command
This commit is contained in:
		
							parent
							
								
									e7e9f1ee3b
								
							
						
					
					
						commit
						a38694b247
					
				
							
								
								
									
										32
									
								
								bin/hledger-check-tag-files.hs
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										32
									
								
								bin/hledger-check-tag-files.hs
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | #!/usr/bin/env stack | ||||||
|  | -- stack script --compile --resolver nightly-2020-03-26 --package hledger-lib --package hledger --package directory --package text | ||||||
|  | -- Add this to see more progress: --verbosity info | ||||||
|  | -- Change --resolver to an already-installed one if you like | ||||||
|  | 
 | ||||||
|  | -- Read the default journal and give an error if any tag values | ||||||
|  | -- containing '/' do not exist as file paths. Usage: | ||||||
|  | -- | ||||||
|  | -- $ hledger-check-tag-files.hs    # compiles if needed | ||||||
|  | -- | ||||||
|  | -- or: | ||||||
|  | -- | ||||||
|  | -- $ hledger check-tag-files       # compiles if there's no compiled version | ||||||
|  | 
 | ||||||
|  | import Control.Monad | ||||||
|  | import qualified Data.Text as T | ||||||
|  | import Hledger.Cli | ||||||
|  | import System.Directory | ||||||
|  | import System.Exit | ||||||
|  | 
 | ||||||
|  | main = withJournalDo defcliopts $ \j -> do | ||||||
|  |   let filetags = [ (t,v) | ||||||
|  |                  | (t',v') <- concatMap transactionAllTags $ jtxns j | ||||||
|  |                  , let t = T.unpack t' | ||||||
|  |                  , let v = T.unpack v' | ||||||
|  |                  , '/' `elem` v | ||||||
|  |                  ] | ||||||
|  |   forM_ filetags $ \(t,f) -> do | ||||||
|  |     exists <- doesFileExist f | ||||||
|  |     when (not exists) $ do | ||||||
|  |       putStrLn $ "file not found in tag: " ++ t ++ ": " ++ f | ||||||
|  |       exitFailure | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user