You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We can modularize Arend into three projects right now:
The org.arend.ext package -- it should be self-contained, let's call it api
All the other code except the org.arend.frontend package -- it depends on api, let's call it main
The org.arend.frontend package -- it depends on main, let's call it cli
In the future, when we move the intellij plugin repo into this repo, we can make it another subproject as well, which depends on main (so no cli, and we don't even need to declare the exclusion).
This helps us get rid of the two-git-repo-in-the-same-dir hack too, so the setup of the intellij plugin will become a simple git clone and a ./gradlew build, easy peasy.
The tests will be moved into a separate module depending on cli because it uses the ANTLR parser
Maybe it makes sense to split cli into two, the real cli frontend and the ANTLR parser?
We may have a proto subproject, containing the generated protos
could disappear, because when we want the api module, we build it directly (via ./gradlew :api:assemble), when we want Arend without the cli frontend, we build it without it (via ./gradlew :main:assemble).
The sources task can be created easier because we can now use built-in tasks.
This also introduce extra flexibility in the future. Say, when we want a literate programming mode/documentation generator/linting tool for Arend, we can add 'em as another gradle subproject.
The text was updated successfully, but these errors were encountered:
We can modularize Arend into three projects right now:
org.arend.ext
package -- it should be self-contained, let's call itapi
org.arend.frontend
package -- it depends onapi
, let's call itmain
org.arend.frontend
package -- it depends onmain
, let's call itcli
main
(so nocli
, and we don't even need to declare the exclusion).git clone
and a./gradlew build
, easy peasy.cli
because it uses the ANTLR parsercli
into two, the realcli
frontend and the ANTLRparser
?proto
subproject, containing the generated protosBy doing this, all the
include
/exclude
hacks likeArend/build.gradle.kts
Line 73 in b59d273
Arend/build.gradle.kts
Line 84 in b59d273
Arend/build.gradle.kts
Lines 96 to 98 in b59d273
api
module, we build it directly (via./gradlew :api:assemble
), when we want Arend without the cli frontend, we build it without it (via./gradlew :main:assemble
).The sources task can be created easier because we can now use built-in tasks.
This also introduce extra flexibility in the future. Say, when we want a literate programming mode/documentation generator/linting tool for Arend, we can add 'em as another gradle subproject.
The text was updated successfully, but these errors were encountered: