Standardize formatFileSize
import Data.Aeson qualified as Aeson
import Data.Aeson (ToJSON(..), FromJSON(..), Value(..), (.:), (.=), object)
import Data.Aeson.Types (prependFailure, typeMismatch)
+import Data.Bits (shiftR)
import Data.List (isPrefixOf, isSuffixOf, stripPrefix)
import Data.Maybe (catMaybes, fromMaybe)
import Data.Set (Set)
formatFileSize :: Int -> String
formatFileSize s
- | s >= 10*1024*1024*1024 = show (s `quotInt` (1024*1024*1024)) ++ "GB"
- | s >= 10*1024*1024 = show (s `quotInt` (1024*1024)) ++ "MB"
- | s >= 10*1024 = show (s `quotInt` 1024) ++ "kb"
- | otherwise = show s ++ "b"
+ | s >= 10*(2^50) = show (shiftR s 50) ++ "P"
+ | s >= 10*(2^40) = show (shiftR s 40) ++ "T"
+ | s >= 10*(2^30) = show (shiftR s 30) ++ "G"
+ | s >= 10*(2^20) = show (shiftR s 20) ++ "M"
+ | s >= 10*(2^10) = show (shiftR s 10) ++ "k"
+ | otherwise = show s
data AnalysisState = AnalysisState
{ analysisStateSeen :: Set Text