aboutsummaryrefslogtreecommitdiff
path: root/src/tooling
diff options
context:
space:
mode:
authorJJ2023-11-05 03:17:25 +0000
committerJJ2023-11-05 03:17:25 +0000
commitbfe0a6fa21f1124c60dd4cc4fd60cdd9c2ec6d4f (patch)
tree2b3c88b0f966d59a49397122927b4c4f34b6de50 /src/tooling
parent7f8c5a1de3ec14d3f517bcb7d082f0ed0bb02eab (diff)
compiler: add blank interop and tooling folders
Diffstat (limited to 'src/tooling')
-rw-r--r--src/tooling/build.pk2
-rw-r--r--src/tooling/check.pk2
-rw-r--r--src/tooling/doc.pk2
-rw-r--r--src/tooling/fmt.pk2
-rw-r--r--src/tooling/init.pk7
-rw-r--r--src/tooling/lsp.pk2
-rw-r--r--src/tooling/pkg.pk2
-rw-r--r--src/tooling/test.pk1
-rw-r--r--src/tooling/toolchain.pk12
9 files changed, 32 insertions, 0 deletions
diff --git a/src/tooling/build.pk b/src/tooling/build.pk
new file mode 100644
index 0000000..7bd5da0
--- /dev/null
+++ b/src/tooling/build.pk
@@ -0,0 +1,2 @@
+# Builds a puck project.
+# Subcommands: --clean, --fetch, ...
diff --git a/src/tooling/check.pk b/src/tooling/check.pk
new file mode 100644
index 0000000..96d04d1
--- /dev/null
+++ b/src/tooling/check.pk
@@ -0,0 +1,2 @@
+# Syntactically and semantically checks code without compiling.
+# This is a good test for Rust interop.
diff --git a/src/tooling/doc.pk b/src/tooling/doc.pk
new file mode 100644
index 0000000..89db169
--- /dev/null
+++ b/src/tooling/doc.pk
@@ -0,0 +1,2 @@
+# Produces documentation of a codebase.
+# This is a good test for Rust interop: both to call into the parser, and to call into `rustdoc`.
diff --git a/src/tooling/fmt.pk b/src/tooling/fmt.pk
new file mode 100644
index 0000000..352d0d7
--- /dev/null
+++ b/src/tooling/fmt.pk
@@ -0,0 +1,2 @@
+# Standard formatter. Uses the main compiler as a library, pulls in the parsing functions, etc.
+# This is a good test for Rust interop.
diff --git a/src/tooling/init.pk b/src/tooling/init.pk
new file mode 100644
index 0000000..1e7c189
--- /dev/null
+++ b/src/tooling/init.pk
@@ -0,0 +1,7 @@
+# Initializes a new Puck project in the current or passed directory.
+
+pub func main(args: varargs[str]) =
+ # Check if the directory is non-empty, and prompt the user
+ ...
+
+func init(path: Path): Result[Unit, ref Err] = ...
diff --git a/src/tooling/lsp.pk b/src/tooling/lsp.pk
new file mode 100644
index 0000000..dd999a9
--- /dev/null
+++ b/src/tooling/lsp.pk
@@ -0,0 +1,2 @@
+# The language server implementation. Calls into `puck check`.
+# This is a good test for non-trivial code written in Puck.
diff --git a/src/tooling/pkg.pk b/src/tooling/pkg.pk
new file mode 100644
index 0000000..95df0d6
--- /dev/null
+++ b/src/tooling/pkg.pk
@@ -0,0 +1,2 @@
+# The standard Puck package manager.
+# Subcommands: install, remove, search, update (lockfile)
diff --git a/src/tooling/test.pk b/src/tooling/test.pk
new file mode 100644
index 0000000..f1912b1
--- /dev/null
+++ b/src/tooling/test.pk
@@ -0,0 +1 @@
+# Runs tests inline and in the `tests/` directory of a project.
diff --git a/src/tooling/toolchain.pk b/src/tooling/toolchain.pk
new file mode 100644
index 0000000..c0f6e7e
--- /dev/null
+++ b/src/tooling/toolchain.pk
@@ -0,0 +1,12 @@
+# Helper for switching between distro-provided versions of `puckc` and locally-managed toolchains.
+# Hopefully, this helps eliminate the problems with distros packaging languages.
+# Subcommands: install (nightly beta stable hash), default, show
+
+type Toolchain = union
+ Nightly, Stable, Beta, Hash(str)
+
+func main = ...
+
+func install(toolchain: Toolchain): Success[ref Err]
+func default(toolchain: Toolchain): Success[ref Err]
+func show(): str