1
1
mirror of https://github.com/anoma/juvix.git synced 2024-09-21 05:28:17 +03:00
juvix/app/Commands/Init/Options.hs
Paul Cadman 7b5211664e
Add PackageDescription.Basic module Package variant (#2509)
This PR adds the `PackageDescription.Basic` module, available to
Package.juvix files.

```
module Package;

import PackageDescription.Basic open;

package : Package := basicPackage;
```

The `PackageDescription.Basic` module provides a Package type that is
translated to a Juvix Package with all default arguments. It is not
possible to customize a basic package.

A basic package does not depend on the standard library, so loads much
more quickly.

Additionally this PR:
* Adds `juvix init --basic/-b` option to generate a basic Package.juvix.
* Migrates Package.juvix files that only use default arguments, or only
customise the name field, to basic Package files.

* Closes https://github.com/anoma/juvix/issues/2508
2023-11-13 17:36:18 +00:00

28 lines
687 B
Haskell

module Commands.Init.Options where
import CommonOptions
data InitOptions = InitOptions
{ _initOptionsNonInteractive :: Bool,
_initOptionsBasic :: Bool
}
deriving stock (Data)
makeLenses ''InitOptions
parseInitOptions :: Parser InitOptions
parseInitOptions = do
_initOptionsNonInteractive <-
switch
( long "non-interactive"
<> short 'n'
<> help "Run non-interactively. Generates a default Package.juvix"
)
_initOptionsBasic <-
switch
( long "basic"
<> short 'b'
<> help "Run non-interactively. Generates a basic Package.juvix that does not depend on the standard library"
)
pure InitOptions {..}