https://github.com/fyralabs/nimsutils
Utility functions for NimScript.
https://github.com/fyralabs/nimsutils
nim nim-lang nimble nims nimscript
Last synced: about 2 months ago
JSON representation
Utility functions for NimScript.
- Host: GitHub
- URL: https://github.com/fyralabs/nimsutils
- Owner: FyraLabs
- License: mit
- Created: 2024-05-10T15:21:56.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-03-14T16:04:35.000Z (2 months ago)
- Last Synced: 2025-03-28T16:14:32.112Z (about 2 months ago)
- Topics: nim, nim-lang, nimble, nims, nimscript
- Language: CSS
- Homepage:
- Size: 116 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# nimsutils
A bunch of utility functions for [NimScript].
## Why
Feel like NimScript is so cool but lacking a lot of stuff and breaks too easily?
This is pretty much what you want. `nimsutils` include support for:- pretty logging
- Last time I searched (2024-05-13) there are quite literally no good nimble packages for even
nim itself. No good pretty loggers in even Nim! Ridiculous!
- [Logit] exists but it's hard to customize, it's probably the closest thing.
- running shell commands (`run()`)
- setting up tasks in nimble (`xtask`)
- time support
- yes you actually can't import `std/[times, monotimes]` in NimScript
- you can do stuff like benchmarking with `time "Benchmark name":`
- makefile-ish syntax supported using the `@=` operator## Example
There's literally an example in the `nimsutils.nimble` file:
```nim
xtask mytask, "description of mytask":
hint "hi"
trace "https://youtu.be/Tl62BvTYUVA"
debug "huh?"
note "My Notice"
warn "My Warning"
error "My Error"
fatal "NYAAAAAA"
run "echo 'Hello World'"
run "!@#$%^ouch bad command"
```\
(Note: `sh` outputted Japanese due to my locale settings.)There are more examples in `test.nims`.
## Getting Started
Yes, you heard me: start using `nimsutils` by just:
1. cloning this repository:
```sh
git clone https://github.com/FyraLabs/nimsutils --depth 1
# or
git submodule add https://github.com/FyraLabs/nimsutils vendor/nimsutils
```2. ```nim
import nimsutils/src/nimsutils
```
3. (optional) Replace `task` with `xtask`> [!WARNING]
> There is a [bug](https://github.com/nim-lang/nimble/issues/1259) where
> `nimble install` cannot install this package correctly.
>
> As a workaround, you should clone this repository as a submodule instead.## Use Cases
- https://github.com/madonuko/remap/blob/master/build.nims
PR welcomed for adding your project here! :3
## Documentations
Index at .
> [!NOTE]
> If you are encountering `Error: VM problem: dest register is set`,
> wrap the problematic code (most likely `run()`) inside a `block:` or a function.
> As to why this happens… Mystery.[NimScript]: https://nim-lang.org/docs/nims.html
[Logit]: https://github.com/Miqueas/Logit/blob/main/NimDocs.md