Commit Graph

2101 Commits

Author SHA1 Message Date
James Shubin
37fffce9f5 lang: core: Simplify implementation of the "contains" function 2025-02-26 18:12:38 -05:00
James Shubin
d7ecc72b41 lang: ast, gapi, interfaces, parser: Print line numbers on error
This adds an initial implementation of printing line numbers on type
unification errors. It also attempts to print a visual position
indicator for most scenarios.

This patch was started by Felix Frank and finished by James Shubin.

Co-authored-by: Felix Frank <Felix.Frank.de@gmail.com>
2025-02-25 20:15:02 -05:00
James Shubin
f754bbbf90 git: Add more entries to gitignore file 2025-02-25 12:10:04 -05:00
Felix Frank
bb171ced86 misc: Add missing sudo invocation 2025-02-24 10:43:43 -05:00
Edward Toroshchyn
c25a2a257b misc: Fix typos and spelling errors 2025-02-24 16:01:46 +01:00
Lourenço
1f90de31e7 lang: core: net: Add a new func for URL parsing
This is a first attempt to add a new function for URL parsing, using
go's net/url package and the simple API. This is still a barebones
implementation, there's possibility to expose more information. It also
includes simple tests.
2025-02-19 13:35:20 +01:00
Lourenço
b5384d1278 engine: resources: Adding logic for svc unit state
This is a small patch that adds logic for checking what's the state of
the unit file and making the CheckApply function more robust
2025-02-18 17:14:27 -05:00
James Shubin
d80ec4aaa7 engine: resources: Detect simple self-referential frags
It would be a likely mistake to create a self-referential frag, and mgmt
would spin forever updating the file... We probably don't want this, so
let's just catch this case in Validate.

Of course you could get around this with multiple files, and a fancier
search could statically check the graph, but the goal isn't to prevent
any bad code, since that's not likely to be possible.
2025-02-15 06:58:15 -05:00
James Shubin
5d63376087 modules: meta: Remove duplicate line 2025-02-13 06:33:47 -05:00
James Shubin
4fd6ced287 docs: Add new talks from Belgium, 2025 2025-02-10 10:34:53 -05:00
James Shubin
82489c3fe0 engine: resources: Add shell field to user resource 2025-02-07 18:08:25 -05:00
James Shubin
a064a87ecd lang: Add a weird test case
Mark Smith was concerned we might not handle this case correctly. It
seems we do in fact catch this scenario, so it's not an issue. Yay!
2025-02-07 17:57:36 -05:00
James Shubin
f51a1200d1 util: Add a helper to get the users shell entry 2025-02-07 17:57:36 -05:00
James Shubin
ecd5a0f304 util, lang, etcd: Move the error type to our util package
We use this error in a lot of places, let's centralize it a bit.
2025-02-07 17:57:36 -05:00
James Shubin
096ef4cc66 engine: resources: Modernize the user resource
Do some small fixups like adding ctx and fixing obvious bugs.
2025-02-07 17:57:36 -05:00
James Shubin
7da98ef349 test: Rename the reflowed comments test to make it easier to find
This makes running one-of executions of this a bit easier.
2025-02-06 08:19:22 -05:00
hades
8cd7fa27e2 engine: resources: exec: Add a bit of documentation to exec res 2025-02-06 08:18:48 -05:00
James Shubin
134e2f1cd9 examples: lang: Add a new env example 2025-02-06 07:49:35 -05:00
Edward Toroshchyn
042ae02428 engine: resources: exec: Add tests to check env values 2025-02-06 07:14:12 -05:00
Edward Toroshchyn
1e33c1fdae misc: Add vim syntax highlighting file
This is an extremely basic initial version of syntax highlighting, written just
so that I can edit the MCL files in vim and not cry.

The following features are supported:
 - MCL keywords
 - strings (including escape characters)
 - comments
 - built-in resources (as of 0.0.27)
2025-02-05 08:50:50 -05:00
James Shubin
bdc46648ff modules: Add prometheus and grafana modules
These are really stubs, and need some more testing and integration, but
there were some people who expressed interest in this, so let's push it
early.
2025-02-03 04:46:44 -05:00
James Shubin
ab9c1d3d96 modules: cups: Fixup obvious missing bits
I didn't merge these parts because I have some other WIP code I was
working on. Might as well put this in now.
2025-02-02 01:51:41 -05:00
James Shubin
0fb546ad61 engine: resources: Make some svc cleanups
We would often actually drop the refresh because of bad checks.
2025-02-02 01:43:14 -05:00
James Shubin
7439d532c7 modules: dhcp: Include stub hosts file
Even if we don't have any hosts, we should still have a valid config.
2025-01-31 11:44:30 -05:00
James Shubin
de9c0adcc0 releases: Add release notes for 0.0.27
I did this build with: `make release` followed by:
GOTAGS='noaugeas' make release when the arm64 build failed.
2025-01-31 03:22:45 -05:00
James Shubin
e40819d617 modules: Add a small stub for CUPS
This is definitely not perfect, but it's a simple stub which we can
expand on.
0.0.27
2025-01-31 00:52:24 -05:00
James Shubin
7331d3a7ee util: pprof: Improve pprof for ease of use
This makes it slightly cleaner.
2025-01-31 00:00:05 -05:00
James Shubin
95f353c6a4 modules: virtualization: Add some simpler helpers
You don't need much to build a vm host. Here's the start.
2025-01-30 23:04:12 -05:00
James Shubin
5044ef4e8a engine: resources: Add a virt builder password selector
This is very helpful for debugging, particularly with broken Debian
installs.
2025-01-30 22:56:24 -05:00
James Shubin
3c61d088ab test: Make sure to test the docs
I can't believe I forgot to enable this earlier.
2025-01-29 12:18:55 -05:00
James Shubin
315a493565 lang: Add a few more tests 2025-01-26 19:48:17 -05:00
James Shubin
6268b61a7d lang: core: Lookup function (with default) can be more precise 2025-01-26 19:12:13 -05:00
James Shubin
3f202c6a7a lang: core: Fix struct lookup corner case
We forgot to reject this corner case which could lead to a runtime error
since the expected type from the incoming struct would not match what
we're handling.
2025-01-26 19:12:13 -05:00
James Shubin
d46c43df5a lang: core: Let lookup function specialize earlier
If we happen to know some information, we can specialize early and help
type unification solve things.
2025-01-26 18:21:54 -05:00
James Shubin
1538befc93 lang: ast, parser: Allow calling anonymous functions
I forgot to plumb this in through the parser. Pretty easy to add,
hopefully I didn't forget any weird corner scope cases here.
2025-01-26 17:21:11 -05:00
James Shubin
1af334f2ce misc: Update to golang 1.23
The 1.22 version has some issues that makes it more difficult to
workaround, so we'll move right away to 1.23
2025-01-26 17:17:02 -05:00
James Shubin
d30ea571f1 misc: Update to golang 1.22
Ran:

go get -u ./...
go mod tidy

We also got rid of travis and simplified things a bit.
2025-01-26 17:16:40 -05:00
James Shubin
d30ff6cfae legal: Remove year
Instead of constantly making these updates, let's just remove the year
since things are stored in git anyways, and this is not an actual modern
legal risk anymore.
2025-01-26 16:24:51 -05:00
James Shubin
1d3f2dbe3c util: Add a pprof helper package
As it turns out, there are other helper packages out there. I wrote this
before I realized that, and it didn't take me that long anyways.
2025-01-24 03:06:31 -05:00
James Shubin
ca6e7ad432 lang: types, lang: core: strings: Add a new join_nonempty function
Along with a helper function for when we need a []string from a Value.
2025-01-24 00:07:23 -05:00
James Shubin
f92afe9ae4 modules: meta: Add a router meta module
Useful for setting up simple routers. Some auto-provisioning polish
would definitely help, but this is pretty useful already.
2025-01-18 01:22:33 -05:00
James Shubin
483cc22c32 lang: core: embedded: provisioner: Add IPXE support
This lets you boot from ipxe. You can run the ipxe shell from their
stock image or the netboot.xyz one. For the latter, press "m", then type
"dhcp" (machine is now pingable!) then type "route" to check the ip.

To boot type:

chain http://192.168.42.1:4280/menu.ipxe

and you're off!

Thanks to frebib for finding the workaround to the VFS bug. The answer
is you need to run the imgfree command to unblock the initrd.
2025-01-18 01:07:19 -05:00
James Shubin
2f3bd72491 lang: core: embedded: provisioner: Fix regression in Fedora 41
Unfortunately with Fedora 41 and DNF5, this breaks what our host machine
expects. So you now need dnf5+ to make this work, or you can revert this
commit.
2025-01-18 01:02:17 -05:00
James Shubin
6499fcb1e0 modules: dhcp: Support the authoritative setting
Quite useful if we plumb it all the way through!
2025-01-18 00:30:46 -05:00
James Shubin
12a0600d38 engine: resources: Improve hostname change message
Make it clearer where empty strings are, and that it already happened.
2025-01-17 23:58:26 -05:00
James Shubin
cace2bacb8 lang: core: embedded: provisioner: Add support for module path
This is needed for bigger code bases. Remember: this is consulted at the
deploy stage, and the deploy contains the entire tree (including
modules) of everything it needs to run. This is why you don't need to
add a --module-path arg when running mgmt in systemd with the "empty"
frontend.
2025-01-17 23:54:30 -05:00
James Shubin
05d440114a lang: core: embedded: provisioner: Remove stale comment 2025-01-17 23:49:21 -05:00
James Shubin
b392285e1d gapi, lang: gapi: Make dir to avoid errors
It seems we sometimes need to make the intermediate dir.
2025-01-17 23:32:13 -05:00
James Shubin
a713c08585 engine: resources: Make net and firewalld resources quieter
They are too noisy!
2025-01-17 23:32:13 -05:00
James Shubin
8e8e831e73 modules: misc: Switch type to list of strings
The DNS entry should be a list of strings. We would have caught this
earlier but this helped us find a type unification issue.
2025-01-17 23:28:05 -05:00