@@ -54,14 +54,6 @@ data PackageConfig = PackageConfig
5454pathToTextUnsafe :: Turtle. FilePath -> Text
5555pathToTextUnsafe = either (error " Path.toText failed" ) id . Path. toText
5656
57- defaultPackage :: Version -> PackageName -> PackageConfig
58- defaultPackage pursVersion pkgName =
59- PackageConfig { name = pkgName
60- , depends = [ preludePackageName ]
61- , set = " psc-" <> pack (showVersion pursVersion)
62- , source = " https://github.com/purescript/package-sets.git"
63- }
64-
6557readPackageFile :: IO PackageConfig
6658readPackageFile = do
6759 exists <- testfile packageFile
@@ -213,24 +205,37 @@ getPureScriptVersion = do
213205 echoT " Unable to parse output of purs --version" >> exit (ExitFailure 1 )
214206 _ -> echoT " Unexpected output from purs --version" >> exit (ExitFailure 1 )
215207
216- initialize :: IO ()
217- initialize = do
218- exists <- testfile " psc-package.json"
219- when exists $ do
220- echoT " psc-package.json already exists"
221- exit (ExitFailure 1 )
222- echoT " Initializing new project in current directory"
223- pkgName <- packageNameFromPWD . pathToTextUnsafe . Path. filename <$> pwd
224- pursVersion <- getPureScriptVersion
225- echoT (" Using the default package set for PureScript compiler version " <>
226- fromString (showVersion pursVersion))
227- let pkg = defaultPackage pursVersion pkgName
228- writePackageFile pkg
229- updateImpl pkg
230-
208+ initialize :: Maybe (Text , Maybe Text ) -> IO ()
209+ initialize setAndSource = do
210+ exists <- testfile " psc-package.json"
211+ when exists $ do
212+ echoT " psc-package.json already exists"
213+ exit (ExitFailure 1 )
214+ echoT " Initializing new project in current directory"
215+ pkgName <- packageNameFromPWD . pathToTextUnsafe . Path. filename <$> pwd
216+ pkg <- case setAndSource of
217+ Nothing -> do
218+ pursVersion <- getPureScriptVersion
219+ echoT (" Using the default package set for PureScript compiler version " <>
220+ fromString (showVersion pursVersion))
221+ echoT " (Use --source / --set to override this behavior)"
222+ pure PackageConfig { name = pkgName
223+ , depends = [ preludePackageName ]
224+ , source = " https://github.com/purescript/package-sets.git"
225+ , set = (" psc-" <> pack (showVersion pursVersion))
226+ }
227+ Just (set, source) ->
228+ pure PackageConfig { name = pkgName
229+ , depends = [ preludePackageName ]
230+ , source = fromMaybe " https://github.com/purescript/package-sets.git" source
231+ , set
232+ }
233+
234+ writePackageFile pkg
235+ updateImpl pkg
231236 where
232- packageNameFromPWD =
233- either (const untitledPackageName) id . mkPackageName
237+ packageNameFromPWD =
238+ either (const untitledPackageName) id . mkPackageName
234239
235240install :: String -> IO ()
236241install pkgName' = do
@@ -453,7 +458,9 @@ main = do
453458 commands :: Parser (IO () )
454459 commands = (Opts. subparser . fold)
455460 [ Opts. command " init"
456- (Opts. info (pure initialize)
461+ (Opts. info (initialize <$> optional ((,) <$> (fromString <$> set)
462+ <*> optional (fromString <$> source))
463+ Opts. <**> Opts. helper)
457464 (Opts. progDesc " Initialize a new package" ))
458465 , Opts. command " uninstall"
459466 (Opts. info (uninstall <$> pkg Opts. <**> Opts. helper)
@@ -480,7 +487,7 @@ main = do
480487 (Opts. info (pure listSourcePaths)
481488 (Opts. progDesc " List all (active) source paths for dependencies" ))
482489 , Opts. command " available"
483- (Opts. info (listPackages <$> sorted)
490+ (Opts. info (listPackages <$> sorted Opts. <**> Opts. helper )
484491 (Opts. progDesc " List all packages available in the package set" ))
485492 , Opts. command " updates"
486493 (Opts. info (checkForUpdates <$> apply <*> applyMajor Opts. <**> Opts. helper)
@@ -494,6 +501,14 @@ main = do
494501 Opts. metavar " PACKAGE"
495502 <> Opts. help " The name of the package to install"
496503
504+ source = Opts. strOption $
505+ Opts. long " source"
506+ <> Opts. help " The Git repository for the package set"
507+
508+ set = Opts. strOption $
509+ Opts. long " set"
510+ <> Opts. help " The package set tag name"
511+
497512 apply = Opts. switch $
498513 Opts. long " apply"
499514 <> Opts. help " Apply all minor package updates"
0 commit comments