Skip to content

Commit be23668

Browse files
authored
add format command to format packages.json (#85)
1 parent 4f9c1ee commit be23668

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

app/Main.hs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ exitWithErr errText = errT errText >> exit (ExitFailure 1)
5353
packageFile :: Path.FilePath
5454
packageFile = "psc-package.json"
5555

56+
localPackageSet :: Path.FilePath
57+
localPackageSet = "packages.json"
58+
5659
data PackageConfig = PackageConfig
5760
{ name :: PackageName
5861
, depends :: [PackageName]
@@ -152,6 +155,10 @@ getPackageSet PackageConfig{ source, set } = do
152155
readPackageSet :: PackageConfig -> IO PackageSet
153156
readPackageSet PackageConfig{ set } = do
154157
let dbFile = ".psc-package" </> fromText set </> ".set" </> "packages.json"
158+
handleReadPackageSet dbFile
159+
160+
handleReadPackageSet :: Path.FilePath -> IO PackageSet
161+
handleReadPackageSet dbFile = do
155162
exists <- testfile dbFile
156163
unless exists $ exitWithErr $ format (fp%" does not exist") dbFile
157164
mdb <- Aeson.eitherDecodeStrict . encodeUtf8 <$> readTextFile dbFile
@@ -164,6 +171,12 @@ writePackageSet PackageConfig{ set } =
164171
let dbFile = ".psc-package" </> fromText set </> ".set" </> "packages.json"
165172
in writeTextFile dbFile . packageSetToJSON
166173

174+
readLocalPackageSet :: IO PackageSet
175+
readLocalPackageSet = handleReadPackageSet localPackageSet
176+
177+
writeLocalPackageSet :: PackageSet -> IO ()
178+
writeLocalPackageSet = writeTextFile localPackageSet . packageSetToJSON
179+
167180
performInstall :: Text -> PackageName -> PackageInfo -> IO Turtle.FilePath
168181
performInstall set pkgName PackageInfo{ repo, version } = do
169182
let pkgDir = ".psc-package" </> fromText set </> fromText (runPackageName pkgName) </> fromText version
@@ -518,6 +531,10 @@ addFromBower name = do
518531
stripBowerNamePrefix s = fromMaybe s $ T.stripPrefix "purescript-" s
519532
mkPackageName' = Bifunctor.first show . mkPackageName . stripBowerNamePrefix
520533

534+
formatPackageFile :: IO ()
535+
formatPackageFile =
536+
readLocalPackageSet >>= writeLocalPackageSet
537+
521538
main :: IO ()
522539
main = do
523540
IO.hSetEncoding IO.stdout IO.utf8
@@ -585,6 +602,9 @@ main = do
585602
, Opts.command "add-from-bower"
586603
(Opts.info (addFromBower <$> pkg Opts.<**> Opts.helper)
587604
(Opts.progDesc "Add a package from the Bower registry to the package set. This requires Bower to be installed on your system."))
605+
, Opts.command "format"
606+
(Opts.info (pure formatPackageFile)
607+
(Opts.progDesc "Format the packages.json file for consistency"))
588608
]
589609
where
590610
pkg = Opts.strArgument $

0 commit comments

Comments
 (0)