Skip to content

Commit

Permalink
add format command to format packages.json (#85)
Browse files Browse the repository at this point in the history
  • Loading branch information
justinwoo authored Feb 26, 2018
1 parent 4f9c1ee commit be23668
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ exitWithErr errText = errT errText >> exit (ExitFailure 1)
packageFile :: Path.FilePath
packageFile = "psc-package.json"

localPackageSet :: Path.FilePath
localPackageSet = "packages.json"

data PackageConfig = PackageConfig
{ name :: PackageName
, depends :: [PackageName]
Expand Down Expand Up @@ -152,6 +155,10 @@ getPackageSet PackageConfig{ source, set } = do
readPackageSet :: PackageConfig -> IO PackageSet
readPackageSet PackageConfig{ set } = do
let dbFile = ".psc-package" </> fromText set </> ".set" </> "packages.json"
handleReadPackageSet dbFile

handleReadPackageSet :: Path.FilePath -> IO PackageSet
handleReadPackageSet dbFile = do
exists <- testfile dbFile
unless exists $ exitWithErr $ format (fp%" does not exist") dbFile
mdb <- Aeson.eitherDecodeStrict . encodeUtf8 <$> readTextFile dbFile
Expand All @@ -164,6 +171,12 @@ writePackageSet PackageConfig{ set } =
let dbFile = ".psc-package" </> fromText set </> ".set" </> "packages.json"
in writeTextFile dbFile . packageSetToJSON

readLocalPackageSet :: IO PackageSet
readLocalPackageSet = handleReadPackageSet localPackageSet

writeLocalPackageSet :: PackageSet -> IO ()
writeLocalPackageSet = writeTextFile localPackageSet . packageSetToJSON

performInstall :: Text -> PackageName -> PackageInfo -> IO Turtle.FilePath
performInstall set pkgName PackageInfo{ repo, version } = do
let pkgDir = ".psc-package" </> fromText set </> fromText (runPackageName pkgName) </> fromText version
Expand Down Expand Up @@ -518,6 +531,10 @@ addFromBower name = do
stripBowerNamePrefix s = fromMaybe s $ T.stripPrefix "purescript-" s
mkPackageName' = Bifunctor.first show . mkPackageName . stripBowerNamePrefix

formatPackageFile :: IO ()
formatPackageFile =
readLocalPackageSet >>= writeLocalPackageSet

main :: IO ()
main = do
IO.hSetEncoding IO.stdout IO.utf8
Expand Down Expand Up @@ -585,6 +602,9 @@ main = do
, Opts.command "add-from-bower"
(Opts.info (addFromBower <$> pkg Opts.<**> Opts.helper)
(Opts.progDesc "Add a package from the Bower registry to the package set. This requires Bower to be installed on your system."))
, Opts.command "format"
(Opts.info (pure formatPackageFile)
(Opts.progDesc "Format the packages.json file for consistency"))
]
where
pkg = Opts.strArgument $
Expand Down

0 comments on commit be23668

Please sign in to comment.