summary history branches tags files
commit:4d10516102d8075b01f23778f8c90d12e3ca2e29
author:avh4
committer:avh4
date:Sun Jan 22 17:58:56 2023 -0800
parents:7636874ad9dd4108935bce88ba4f62cd18aa9892
Standardize formatFileSize
diff --git a/sizer.hs b/sizer.hs
line changes: +7/-4
index 199a9e3..fef366b
--- a/sizer.hs
+++ b/sizer.hs
@@ -5,6 +5,7 @@ import Control.Exception (Exception, IOException, try, throwIO)
 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)
@@ -119,10 +120,12 @@ totalSize = sum . fmap pathInfoNarSize
 
 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