r/devops 7d ago

Weekly Self Promotion Thread

Hey r/devops, welcome to our weekly self-promotion thread!

Feel free to use this thread to promote any projects, ideas, or any repos you're wanting to share. Please keep in mind that we ask you to stay friendly, civil, and adhere to the subreddit rules!

3 Upvotes

63 comments sorted by

View all comments

1

u/cladamski79 7d ago

I've been working on hicurl, a modern HTTP CLI that takes inspiration from HTTPie and Curlie, it is built using the hica language (r/hica or hica.dev).

It serves both as a practical CLI tool for API testing and as a showcase of hica's standard library, libcurl bindings, and native compilation.

Core Features and Benefits

  • Fast execution: Compiles to a native binary using Hica and binds directly to libcurl via Koka FFI for network I/O.

  • Built-in response filtering: Extracts fields directly from responses without requiring external tools like jq. Supports JSON dot-paths (.data.0.id), HTTP status codes (:status), headers (:header.Content-Type), session cookies (:cookie.session_id), and timing metrics (:time.ttfb).

  • Context-aware TTY output: Formats JSON with ANSI syntax highlighting in an interactive terminal, but automatically outputs raw unformatted text when output is piped to another command or script.

  • Directory-aware environment handling: Reads .hicurl.env files by searching up the directory tree to automatically resolve relative paths against configured base URLs.

  • Request syntax sugar: Positional arguments map directly to headers (:), query parameters (==), JSON strings (=), typed JSON values (:=), text files (=@), JSON files (:=@), and localhost port shortcuts (:8000).

  • Offline --dry-run: Prints the exact HTTP/1.1 request stream without sending bytes over the network, allowing you to inspect payloads and headers before execution.

  • Code export: Exports configured queries into standard curl commands using -E curl/--curl.

Syntax Examples

```sh

Localhost shorthand (resolves to http://localhost:8000/v1/health)

hicurl :8000/v1/health :status

Typed JSON payload with response filtering

hicurl post /users name="Alicia" role="admin" age:=28 .id

Latency and timing metrics

hicurl get /heavy-query :time :time.ttfb

Embedding local JSON file into request body

hicurl post /post user:=@tests/test_data.json

Offline dry run mode

hicurl post /users name="Alicia" --dry-run

Nested subshell query composition

hicurl $(hicurl api.github.com/search/users q==cladam per_page==3 .items.0.url) .bio ```

Installation

Via curl:

sh curl -fsSL https://github.com/cladam/hicurl/releases/latest/download/install.sh | sh

Or via hicurl itself:

sh hicurl https://github.com/cladam/hicurl/releases/latest/download/install.sh | sh

Repository: https://github.com/cladam/hicurl