Etapa G: fuel-7 — fuel SISTEMATICO desde crates.io (import 16/27)
Primer fuel no-nombrado-a-mano: top de command-line-utilities por recent- downloads, filtrado a binarios CLI puro-Rust. Descubrio binarios que no estaban en el radar: oxipng/grass/grcov/maturin/espflash/tokio-console/ zizmor/parallel-disk-usage/cargo-c/cargo-ndk/cargo-sbom/xwin/duckscript/ mandown/mkpasswd/release-plz. Rompe la saturacion del catalogo nombrado. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
17 files · +405 −0
- recipes/incoming/cargo-c.toml +40 −0
- recipes/incoming/cargo-ndk.toml +19 −0
- recipes/incoming/cargo-sbom.toml +19 −0
- recipes/incoming/duckscript.toml +37 −0
- recipes/incoming/espflash.toml +22 −0
- recipes/incoming/grass.toml +22 −0
- recipes/incoming/grcov.toml +19 −0
- recipes/incoming/mandown.toml +33 −0
- recipes/incoming/maturin.toml +19 −0
- recipes/incoming/mkpasswd.toml +19 −0
- recipes/incoming/oxipng.toml +19 −0
- recipes/incoming/parallel-disk-usage.toml +19 −0
- recipes/incoming/release-plz.toml +22 −0
- recipes/incoming/tokio-console.toml +22 −0
- recipes/incoming/xwin.toml +22 −0
- recipes/incoming/zizmor.toml +22 −0
- tandas/fuel-7.txt +30 −0
diff --git a/recipes/incoming/cargo-c.toml b/recipes/incoming/cargo-c.toml
new file mode 100644
index 00000000..2b121b59
--- /dev/null
+++ b/recipes/incoming/cargo-c.toml
@@ -0,0 +1,40 @@
+# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
+# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
+# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
+name = "cargo-c"
+version = "0.10.23"
+
+[source]
+tarball = "https://github.com/lu-zero/cargo-c/archive/v0.10.23.tar.gz"
+# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
+# sha512 = "c979e3f2ed549d34a00a63afc031b2bc3eaee910523a398af492fcad5633dfcada47850b2b9e5af667fc6ba40447649016f48438c37fc1d360aa670d803dce09"
+sha256 = "17679af6c00a70ce1d70668023e993045539afdc7ab0ca1a081aa8ef6993a595"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = []
+
+[build.phases]
+# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
+compile = '''
+_abuild_phase() {
+cargo auditable build --release --frozen
+}
+_abuild_phase
+'''
+# de package() de Alpine (traducido $pkgdir→/out):
+install = '''
+_abuild_phase() {
+rm target/release/cargo-*.d
+ install -Dm755 target/release/cargo-* -t "/out"/usr/bin/
+
+ install -Dm644 -t "/out/usr/share/doc/cargo-c" README.md
+ install -Dm644 -t "/out/usr/share/doc/cargo-c" LICENSE
+}
+_abuild_phase
+'''
+
+[deps]
+build = ["curl", "libgit2", "libssh2", "openssl-dev>3", "zlib"]
diff --git a/recipes/incoming/cargo-ndk.toml b/recipes/incoming/cargo-ndk.toml
new file mode 100644
index 00000000..dcb103b9
--- /dev/null
+++ b/recipes/incoming/cargo-ndk.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "cargo-ndk"
+version = "4.1.2"
+
+[source]
+repo = "https://github.com/bbqsrc/cargo-ndk"
+commit = "9132e39948cd214d99d1c2b20313bac3c58a59ec"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "cargo-ndk"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/cargo-ndk /out/usr/bin/cargo-ndk"
diff --git a/recipes/incoming/cargo-sbom.toml b/recipes/incoming/cargo-sbom.toml
new file mode 100644
index 00000000..9538a548
--- /dev/null
+++ b/recipes/incoming/cargo-sbom.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "cargo-sbom"
+version = "0.10.0"
+
+[source]
+repo = "https://github.com/psastras/sbom-rs"
+commit = "9ecc460b937ac5558c4f8ebebc9e07d2bdbef67b"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "cargo-sbom"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/cargo-sbom /out/usr/bin/cargo-sbom"
diff --git a/recipes/incoming/duckscript.toml b/recipes/incoming/duckscript.toml
new file mode 100644
index 00000000..a13b604b
--- /dev/null
+++ b/recipes/incoming/duckscript.toml
@@ -0,0 +1,37 @@
+# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
+# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
+# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
+name = "duckscript"
+version = "0.11.1"
+
+[source]
+tarball = "https://github.com/sagiegurari/duckscript/archive/0.11.1/duckscript-0.11.1.tar.gz"
+# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
+# sha512 = "1059e7f8169d1249a21e8d4a49c331b1ce402301ea784774ede882cfedf694120475de1c210b2e3a3de38d606a31afd13d73337958b5958aa228ecdf9344a04d"
+sha256 = "2e23b16359fb9b2c521f0bd250f6eb754bcb8ef40a7f8bf8076f87387276032a"
+patches = ["use-zlib.patch"]
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = []
+
+[build.phases]
+# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
+compile = '''
+_abuild_phase() {
+cargo auditable build $_cargo_opts --release
+}
+_abuild_phase
+'''
+# de package() de Alpine (traducido $pkgdir→/out):
+install = '''
+_abuild_phase() {
+install -D -m755 target/release/duck -t "/out"/usr/bin/
+}
+_abuild_phase
+'''
+
+[deps]
+build = ["bzip2", "openssl", "zlib"]
diff --git a/recipes/incoming/espflash.toml b/recipes/incoming/espflash.toml
new file mode 100644
index 00000000..8bf1e98d
--- /dev/null
+++ b/recipes/incoming/espflash.toml
@@ -0,0 +1,22 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "espflash"
+version = "4.4.0"
+
+[source]
+repo = "https://github.com/esp-rs/espflash"
+commit = "236f14396dc3ad7bcad1146b0cffe638792d31bd"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "espflash"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/espflash /out/usr/bin/espflash"
+
+# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
+# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): openssl
diff --git a/recipes/incoming/grass.toml b/recipes/incoming/grass.toml
new file mode 100644
index 00000000..da3d0513
--- /dev/null
+++ b/recipes/incoming/grass.toml
@@ -0,0 +1,22 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "grass"
+version = "8.5.0"
+
+[source]
+repo = "https://github.com/OSGeo/grass"
+commit = "8d6ceba290a2f0059a7301b9d4944455f313da72"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = []
+
+[build.phases]
+configure = "./configure --prefix=/usr --with-blas --with-cairo-ldflags=-lfontconfig --with-cxx --with-fftw --with-freetype --with-geos --with-gdal --with-lapack --with-libsvm --with-nls --with-openmp --with-pdal --with-postgres --with-postgres-libs=/home/sergio/.nixstore/y2w5m6sjngj6x774y4ah1y5v6jrvyh34-libpq-18.4/lib/ --with-proj-includes=/home/sergio/.nixstore/4jaxk13j5q1627lmjpyv716jai0x9jna-proj-9.8.1-dev/include --with-proj-libs=/home/sergio/.nixstore/vc8xkm1b1fasyyn9dndsvm9gksbp5iy2-proj-9.8.1/lib --with-proj-share=/home/sergio/.nixstore/vc8xkm1b1fasyyn9dndsvm9gksbp5iy2-proj-9.8.1/share/proj --with-sqlite --with-zstd --without-bzlib --without-mysql --without-odbc"
+
+[deps]
+build = ["bison", "flex", "gdal", "geos", "netcdf", "python-dateutil", "numpy", "wxpython", "blas", "cairo", "ffmpeg", "fftw-double", "freetype", "lapack", "libpng-apng", "libsvm", "libtiff", "libxml2", "pdal", "libpq", "proj", "readline", "sqlite", "wxwidgets", "zlib", "zstd", "glu"]
diff --git a/recipes/incoming/grcov.toml b/recipes/incoming/grcov.toml
new file mode 100644
index 00000000..e611f905
--- /dev/null
+++ b/recipes/incoming/grcov.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "grcov"
+version = "0.9.1"
+
+[source]
+repo = "https://github.com/mozilla/grcov"
+commit = "2cbc55385c3a4d6239dddf56d44b908bb7d67191"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "grcov"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/grcov /out/usr/bin/grcov"
diff --git a/recipes/incoming/mandown.toml b/recipes/incoming/mandown.toml
new file mode 100644
index 00000000..7c187867
--- /dev/null
+++ b/recipes/incoming/mandown.toml
@@ -0,0 +1,33 @@
+# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
+# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
+# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
+name = "mandown"
+version = "1.1.0"
+
+[source]
+tarball = "https://gitlab.com/kornelski/mandown/-/archive/v1.1.0/mandown-v1.1.0.tar.gz"
+# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
+# sha512 = "516a7b655c8aee8e171ba8e0a23997a6cfc9cbbc60197039acc10892ebdd6a454dfb3ca9dc4b7a49856edef0b1102f2126a0ad14ff203bcbb735603627125bbe"
+sha256 = "f0312e813b7fd74973b9f9971f8ee8b9021d5445d55fba1529989579d9dcc122"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = []
+
+[build.phases]
+# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
+compile = '''
+_abuild_phase() {
+cargo auditable build --frozen --release
+}
+_abuild_phase
+'''
+# de package() de Alpine (traducido $pkgdir→/out):
+install = '''
+_abuild_phase() {
+install -Dm755 target/release/mandown -t "/out"/usr/bin/
+}
+_abuild_phase
+'''
diff --git a/recipes/incoming/maturin.toml b/recipes/incoming/maturin.toml
new file mode 100644
index 00000000..10122118
--- /dev/null
+++ b/recipes/incoming/maturin.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "maturin"
+version = "1.12.6"
+
+[source]
+repo = "https://github.com/PyO3/maturin"
+commit = "b61a28edb1bd435ed876f22cc5281e6dab082119"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "maturin"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/maturin /out/usr/bin/maturin"
diff --git a/recipes/incoming/mkpasswd.toml b/recipes/incoming/mkpasswd.toml
new file mode 100644
index 00000000..e8da6a27
--- /dev/null
+++ b/recipes/incoming/mkpasswd.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "mkpasswd"
+version = "5.6.6"
+
+[source]
+repo = "https://github.com/rfc1036/whois"
+commit = "1024386831c8ee4e0ae24026fa932771bf369fe9"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = []
+
+[deps]
+build = ["perl", "libxcrypt"]
diff --git a/recipes/incoming/oxipng.toml b/recipes/incoming/oxipng.toml
new file mode 100644
index 00000000..88f2ef20
--- /dev/null
+++ b/recipes/incoming/oxipng.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "oxipng"
+version = "10.1.1"
+
+[source]
+repo = "https://github.com/shssoichiro/oxipng"
+commit = "628e241e23f368097883807fa6e985ccf7c00357"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "oxipng"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/oxipng /out/usr/bin/oxipng"
diff --git a/recipes/incoming/parallel-disk-usage.toml b/recipes/incoming/parallel-disk-usage.toml
new file mode 100644
index 00000000..d24f1f3d
--- /dev/null
+++ b/recipes/incoming/parallel-disk-usage.toml
@@ -0,0 +1,19 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "parallel-disk-usage"
+version = "0.21.1"
+
+[source]
+repo = "https://github.com/KSXGitHub/parallel-disk-usage"
+commit = "e0b720acb59293649faf37861a3fd130beb4a1a9"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "pdu"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/pdu /out/usr/bin/pdu"
diff --git a/recipes/incoming/release-plz.toml b/recipes/incoming/release-plz.toml
new file mode 100644
index 00000000..d8c66e2d
--- /dev/null
+++ b/recipes/incoming/release-plz.toml
@@ -0,0 +1,22 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "release-plz"
+version = "0.3.159"
+
+[source]
+repo = "https://github.com/MarcoIeni/release-plz"
+commit = "e824efb05783b2410653757cb7659f5b22dab3c7"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "release-plz"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/release-plz /out/usr/bin/release-plz"
+
+# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
+# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): perl, openssl
diff --git a/recipes/incoming/tokio-console.toml b/recipes/incoming/tokio-console.toml
new file mode 100644
index 00000000..d46818a6
--- /dev/null
+++ b/recipes/incoming/tokio-console.toml
@@ -0,0 +1,22 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "tokio-console"
+version = "0.1.14"
+
+[source]
+repo = "https://github.com/tokio-rs/console"
+commit = "d8fba132e6ce52821172b1178c77658b1f48bdd4"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "tokio-console"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/tokio-console /out/usr/bin/tokio-console"
+
+# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
+# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): protobuf
diff --git a/recipes/incoming/xwin.toml b/recipes/incoming/xwin.toml
new file mode 100644
index 00000000..4c3fd7c0
--- /dev/null
+++ b/recipes/incoming/xwin.toml
@@ -0,0 +1,22 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "xwin"
+version = "0.7.0"
+
+[source]
+repo = "https://github.com/Jake-Shadle/xwin"
+commit = "76a3c2a2903f7cbcb5fd7f3b82bcccee45f73923"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "xwin"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/xwin /out/usr/bin/xwin"
+
+# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
+# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): openssl
diff --git a/recipes/incoming/zizmor.toml b/recipes/incoming/zizmor.toml
new file mode 100644
index 00000000..ab13334d
--- /dev/null
+++ b/recipes/incoming/zizmor.toml
@@ -0,0 +1,22 @@
+# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
+# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
+# compiler/link/phases y adaptá hasta que compile.
+# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
+name = "zizmor"
+version = "1.25.2"
+
+[source]
+repo = "https://github.com/zizmorcore/zizmor"
+commit = "b50d8f60e27e0084aa3a5f5dff46054a8253ac2a"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "static"
+flags = ["--bin", "zizmor"]
+
+[build.phases]
+install = "mkdir -p /out/usr/bin && cp target/release/zizmor /out/usr/bin/zizmor"
+
+# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
+# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): jemalloc
diff --git a/tandas/fuel-7.txt b/tandas/fuel-7.txt
new file mode 100644
index 00000000..d8d61597
--- /dev/null
+++ b/tandas/fuel-7.txt
@@ -0,0 +1,30 @@
+# fuel-7 — fuel SISTEMÁTICO (2026-06-26): de crates.io categoría command-line-utilities
+# por recent-downloads, filtrado a binarios CLI puro-Rust. Rompe la saturación del
+# catálogo nombrado-a-mano: varios de estos NO los habría nombrado (oxipng/grcov/espflash...).
+oxipng
+grass
+grcov
+espflash
+maturin
+zizmor
+tokio-console
+release-plz
+parallel-disk-usage
+mkpasswd
+cargo-c
+cargo-generate-rpm
+cargo-ndk
+cargo-sbom
+cargo-packager
+editpe
+tftpd
+keepawake
+blight
+mandown
+patch-crate
+protofetch
+rlt
+duckscript
+dify
+xwin
+sqlx-cli