Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/codebase-insights.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
flake.nix defines a pre-commit check using git-hooks.nix. Run 'nix develop' to install git hooks.
2 changes: 2 additions & 0 deletions .agents/codex-setup
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ sudo apt-get install -y --no-install-recommends \
libclang-dev \
capnproto libcapnp-dev

rustup component add rustfmt

pushd ..
just build-extension
popd
1 change: 1 addition & 0 deletions .agents/tasks/2025/06/29-1712-add-format-and-precommit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add just targets for running auto formatters (e.g just format). Setup a git pre commit that checks that lints pass using the same technique employed by the Blocksense-network blocksense repo
1 change: 1 addition & 0 deletions .agents/tasks/2025/06/29-1757-format-lint-subcommands
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Break format and lint tasks into per-language subcommands
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ reports/
test/benchmarks/tmp/
.direnv/
.idea/

# Generated by git-hooks.nix
.pre-commit-config.yaml
pkg/

# Built ruby gems
Expand Down
30 changes: 30 additions & 0 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,33 @@ bench pattern="*" write_report="console":

build-extension:
cargo build --release --manifest-path gems/codetracer-ruby-recorder/ext/native_tracer/Cargo.toml

format-rust:
cargo fmt --manifest-path gems/codetracer-ruby-recorder/ext/native_tracer/Cargo.toml

format-nix:
if command -v nixfmt >/dev/null; then find . -name '*.nix' -print0 | xargs -0 nixfmt; fi

format-ruby:
if command -v bundle >/dev/null && bundle exec rubocop -v >/dev/null 2>&1; then bundle exec rubocop -A; else echo "Ruby formatter not available; skipping"; fi

format:
just format-rust
just format-ruby
just format-nix

lint-rust:
cargo fmt --check --manifest-path gems/codetracer-ruby-recorder/ext/native_tracer/Cargo.toml

lint-nix:
if command -v nixfmt >/dev/null; then find . -name '*.nix' -print0 | xargs -0 nixfmt --check; fi

lint-ruby:
find . -name '*.rb' -print0 | xargs -0 -n 1 ruby -wc

lint:
just lint-rust
just lint-ruby
just lint-nix

alias fmt := format
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,25 @@ We'd be very happy if the community finds this useful, and if anyone wants to:

For maintainer instructions, see [MAINTAINERS.md](MAINTAINERS.md).

### Development workflow

Use [just](https://github.com/casey/just) for common tasks:

```bash
just build-extension # compile native extension
just test # run the test suite
just format # apply automatic formatting for all languages
just lint # run all linters

# Language-specific tasks
just format-rust # Rust code
just format-ruby # Ruby code (requires rubocop)
just format-nix # Nix files
just lint-rust # Rust formatting check
just lint-ruby # Ruby syntax check
just lint-nix # Nix formatting check
```

### Legal info

LICENSE: MIT
Expand Down
24 changes: 22 additions & 2 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,34 @@
description = "Development environment for codetracer-ruby-recorder";

inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
inputs.pre-commit-hooks.url = "github:cachix/git-hooks.nix";

outputs = {
self,
nixpkgs,
pre-commit-hooks,
}: let
systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"];
forEachSystem = nixpkgs.lib.genAttrs systems;
in {
checks = forEachSystem (system: {
pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.;
hooks = {
lint = {
enable = true;
name = "Lint";
entry = "just lint";
language = "system";
pass_filenames = false;
};
};
};
});

devShells = forEachSystem (system: let
pkgs = import nixpkgs {inherit system;};
pkgs = import nixpkgs { inherit system; };
preCommit = self.checks.${system}.pre-commit-check;
isLinux = pkgs.stdenv.isLinux;
isDarwin = pkgs.stdenv.isDarwin;
in {
Expand Down Expand Up @@ -43,7 +61,7 @@
# Required for Ruby C extension compilation on macOS
darwin.apple_sdk.frameworks.CoreFoundation
darwin.apple_sdk.frameworks.Security
];
] ++ preCommit.enabledPackages;

# Environment variables required to fix build issues with rb-sys/bindgen

Expand All @@ -56,6 +74,8 @@
CLANG_PATH = "${pkgs.llvmPackages.clang}/bin/clang";
CC = "${pkgs.llvmPackages.clang}/bin/clang";
CXX = "${pkgs.llvmPackages.clang}/bin/clang++";

inherit (preCommit) shellHook;
} // pkgs.lib.optionalAttrs isLinux {
# BINDGEN_EXTRA_CLANG_ARGS: Additional clang arguments for bindgen when parsing Ruby headers
# Includes system header paths that are not automatically discovered in NixOS
Expand Down
Loading
Loading