1
1
mirror of https://github.com/anoma/juvix.git synced 2024-12-15 10:03:22 +03:00
juvix/app
Paul Cadman 145f20fc68
Update juvix init to generate Package.juvix instead of juvix.yaml (#2483)
`juvix init` now generates a `Package.juvix` file in the current
directory instead of a `juvix.yaml` file. It uses the prompts from the
user to fill in the name and version options.

### Validity check

After the file is generated, the Juvix project in the current directory
is loaded to check that the generated file is valid.

### Version support

Each version of the PackageDescription module must have a corresponding
[PackageDescriptionType](c39c27000c/src/Juvix/Compiler/Pipeline/Package/Loader/Versions.hs (L12))
which defines:

* The path relative to `include/package` that the file exists at (e.g
`PackageDescription/V1.juvix`)
* The name of the Package type in the file (e.g `Package`)
* A function that translates a Package type into a Concrete function
definition that represents the code that is generated in the
`Package.juvix`
* A function that returns a Bool that determines if the generated
function definition depends on the standard library. (i.e that the
standard library needs to be imported by Package.juvix).

The last point is necessary because in the V1 spec, the `SemVer` type
uses `Maybe` to encode the release and meta components of the of the
version:

```
package : Package :=
  defaultPackage
    {name := "dd";
     version := mkVersion 1 2 3 {just "prerel"} {just "meta"}};
```

So if the user specifies a release or meta component in their version -
then the standard library needs to be imported to provide the `just`
constructor. If the user only specifies major, minor and patch
components then the standard library does not need to be imported.

* Closes https://github.com/anoma/juvix/issues/2485
2023-11-03 09:54:44 +00:00
..
Commands Update juvix init to generate Package.juvix instead of juvix.yaml (#2483) 2023-11-03 09:54:44 +00:00
TopCommand Add juvix dependencies update command (#2419) 2023-10-03 18:09:13 +02:00
App.hs Rename Roots type to Root (#2480) 2023-10-30 14:05:52 +01:00
AsmInterpreter.hs Refactor Core datastructures (#1975) 2023-04-04 18:58:05 +02:00
CommonOptions.hs Add FileExt type (#2467) 2023-10-25 12:02:12 +02:00
Evaluator.hs Use a Juvix source file to define a package (#2434) 2023-10-27 12:35:20 +01:00
GlobalOptions.hs Rename Roots type to Root (#2480) 2023-10-30 14:05:52 +01:00
Main.hs Rename Roots type to Root (#2480) 2023-10-30 14:05:52 +01:00
TopCommand.hs Add juvix dependencies update command (#2419) 2023-10-03 18:09:13 +02:00