@@ -53,6 +53,9 @@ exitWithErr errText = errT errText >> exit (ExitFailure 1)
53
53
packageFile :: Path. FilePath
54
54
packageFile = " psc-package.json"
55
55
56
+ localPackageSet :: Path. FilePath
57
+ localPackageSet = " packages.json"
58
+
56
59
data PackageConfig = PackageConfig
57
60
{ name :: PackageName
58
61
, depends :: [PackageName ]
@@ -152,6 +155,10 @@ getPackageSet PackageConfig{ source, set } = do
152
155
readPackageSet :: PackageConfig -> IO PackageSet
153
156
readPackageSet PackageConfig { set } = do
154
157
let dbFile = " .psc-package" </> fromText set </> " .set" </> " packages.json"
158
+ handleReadPackageSet dbFile
159
+
160
+ handleReadPackageSet :: Path. FilePath -> IO PackageSet
161
+ handleReadPackageSet dbFile = do
155
162
exists <- testfile dbFile
156
163
unless exists $ exitWithErr $ format (fp% " does not exist" ) dbFile
157
164
mdb <- Aeson. eitherDecodeStrict . encodeUtf8 <$> readTextFile dbFile
@@ -164,6 +171,12 @@ writePackageSet PackageConfig{ set } =
164
171
let dbFile = " .psc-package" </> fromText set </> " .set" </> " packages.json"
165
172
in writeTextFile dbFile . packageSetToJSON
166
173
174
+ readLocalPackageSet :: IO PackageSet
175
+ readLocalPackageSet = handleReadPackageSet localPackageSet
176
+
177
+ writeLocalPackageSet :: PackageSet -> IO ()
178
+ writeLocalPackageSet = writeTextFile localPackageSet . packageSetToJSON
179
+
167
180
performInstall :: Text -> PackageName -> PackageInfo -> IO Turtle. FilePath
168
181
performInstall set pkgName PackageInfo { repo, version } = do
169
182
let pkgDir = " .psc-package" </> fromText set </> fromText (runPackageName pkgName) </> fromText version
@@ -518,6 +531,10 @@ addFromBower name = do
518
531
stripBowerNamePrefix s = fromMaybe s $ T. stripPrefix " purescript-" s
519
532
mkPackageName' = Bifunctor. first show . mkPackageName . stripBowerNamePrefix
520
533
534
+ formatPackageFile :: IO ()
535
+ formatPackageFile =
536
+ readLocalPackageSet >>= writeLocalPackageSet
537
+
521
538
main :: IO ()
522
539
main = do
523
540
IO. hSetEncoding IO. stdout IO. utf8
@@ -585,6 +602,9 @@ main = do
585
602
, Opts. command " add-from-bower"
586
603
(Opts. info (addFromBower <$> pkg Opts. <**> Opts. helper)
587
604
(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" ))
588
608
]
589
609
where
590
610
pkg = Opts. strArgument $
0 commit comments