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
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ jobs:
env:
RELEASE_TAG: ${{ github.ref_type == 'tag' && github.ref_name || '' }}
run: |
version=$(cargo metadata --no-deps --format-version 1 | "$PYTHON" -c 'import json, sys; print(next(p["version"] for p in json.load(sys.stdin)["packages"] if p["name"] == "diffr"), end="")')
version=$(cargo metadata --no-deps --format-version 1 | "$PYTHON" -c 'import json, sys; print(next(p["version"] for p in json.load(sys.stdin)["packages"] if p["name"] == "diffr-cli"), end="")')
if [ -n "$RELEASE_TAG" ] && [ "$RELEASE_TAG" != "$version" ]; then
echo "Tag $RELEASE_TAG does not match Cargo version $version" >&2
exit 1
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,17 @@
shell: bash
run: $BUILD_CMD test --target ${{ matrix.job.target }}

crate_packages:
name: Verify crates.io packages
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: dtolnay/rust-toolchain@1.99.0
# Build extracted archives together, with their internal dependencies
# staged locally instead of requiring them to be published already.
- run: cargo package --locked -p diffr-grammars -p diffr-core -p diffr-cli

test_wasm_plugins:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium test

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
name: Test WASM component plugins
runs-on: ubuntu-22.04
steps:
Expand Down
59 changes: 58 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[package]
name = "diffr"
name = "diffr-cli"
description = "Structural diffs with a streaming API and interactive terminal frontend."
repository = "https://github.com/devdotfast/diffr"
homepage = "https://github.com/devdotfast/diffr"
Expand All @@ -15,12 +15,13 @@ rust-version = "1.99.0"
include = [
"/build.rs",
"/src/",
"/crates/diffr-plugin-sdk/wit/",
"/wit/",
"/plugins/",
"/vendored_parsers/highlights/*.scm",
"/vendored_parsers/*-src/**/*.c",
"/vendored_parsers/*-src/**/*.h",
"/LICENSE",
"/NOTICE",
"/README.md",
]

Expand Down
12 changes: 12 additions & 0 deletions crates/diffr-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,18 @@ rust-version = "1.99.0"
include = [
"/build.rs",
"/src/",
"/plugins/shape/**/plugin.toml",
"/plugins/shape/**/plugin.wasm",
"/plugins/shape/**/*.scm",
"/plugins/classify/plugin.toml",
"/plugins/classify/plugin.wasm",
"/licenses/",
"/vendored_parsers/highlights/*.scm",
"/examples/review/real/*/before.*",
"/examples/review/real/*/after.*",
"/examples/review/real/*/provenance.json",
"/LICENSE",
"/NOTICE",
]

[dependencies]
Expand Down
1 change: 1 addition & 0 deletions crates/diffr-core/LICENSE
1 change: 1 addition & 0 deletions crates/diffr-core/NOTICE
2 changes: 1 addition & 1 deletion crates/diffr-core/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use std::path::PathBuf;
/// Embed the component, manifest and queries from every bundled shape plugin
/// folder under `plugins/shape/`, and the classifier in `plugins/classify/`.
fn main() {
let root = PathBuf::from(std::env::var_os("CARGO_MANIFEST_DIR").unwrap()).join("../..");
let root = PathBuf::from(std::env::var_os("CARGO_MANIFEST_DIR").unwrap());
println!("cargo:rerun-if-changed={}", root.join("plugins").display());
let mut files = String::from("const FILES: &[(&str, &str)] = &[\n");
let mut components = String::from("const COMPONENTS: &[(&str, &[u8])] = &[\n");
Expand Down
1 change: 1 addition & 0 deletions crates/diffr-core/examples
1 change: 1 addition & 0 deletions crates/diffr-core/licenses/GitHub-Linguist
1 change: 1 addition & 0 deletions crates/diffr-core/plugins
11 changes: 5 additions & 6 deletions crates/diffr-core/src/parse/fold_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,8 @@ mod folds {

#[test]
fn added_rust_test_body_is_foldable_without_hiding_signature_or_brace() {
let lhs = include_str!("../../../../examples/review/real/08-ripgrep-3496/before.rs");
let rhs = include_str!("../../../../examples/review/real/08-ripgrep-3496/after.rs");
let lhs = include_str!("../../examples/review/real/08-ripgrep-3496/before.rs");
let rhs = include_str!("../../examples/review/real/08-ripgrep-3496/after.rs");
let review = DiffResult::from_sources("walk.rs", lhs, rhs);
let signature = rhs
.lines()
Expand Down Expand Up @@ -351,8 +351,8 @@ mod matcher {

#[test]
fn a_reindented_rename_target_stays_an_unchanged_token() {
let lhs = include_str!("../../../../examples/review/real/02-review-175/before.ts");
let rhs = include_str!("../../../../examples/review/real/02-review-175/after.ts");
let lhs = include_str!("../../examples/review/real/02-review-175/before.ts");
let rhs = include_str!("../../examples/review/real/02-review-175/after.ts");
let review = DiffResult::from_sources("parser.ts", lhs, rhs);
let token = review
.lhs_positions
Expand Down Expand Up @@ -420,8 +420,7 @@ mod results {

#[test]
fn real_fixture_folds_have_valid_reciprocal_ranges() {
let root =
std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("../../examples/review/real");
let root = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("examples/review/real");
for dir in std::fs::read_dir(root).unwrap() {
let dir = dir.unwrap().path();
let p: serde_json::Value =
Expand Down
28 changes: 14 additions & 14 deletions crates/diffr-core/src/parse/tree_sitter_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/ada.scm"),
include_str!("../../vendored_parsers/highlights/ada.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -250,7 +250,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/cmake.scm"),
include_str!("../../vendored_parsers/highlights/cmake.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -286,7 +286,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/c-sharp.scm"),
include_str!("../../vendored_parsers/highlights/c-sharp.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -341,7 +341,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/devicetree.scm"),
include_str!("../../vendored_parsers/highlights/devicetree.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -539,7 +539,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/hcl.scm"),
include_str!("../../vendored_parsers/highlights/hcl.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -598,7 +598,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/janet_simple.scm"),
include_str!("../../vendored_parsers/highlights/janet_simple.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -699,7 +699,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/julia.scm"),
include_str!("../../vendored_parsers/highlights/julia.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -727,7 +727,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/kotlin.scm"),
include_str!("../../vendored_parsers/highlights/kotlin.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand All @@ -742,7 +742,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/latex.scm"),
include_str!("../../vendored_parsers/highlights/latex.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -793,7 +793,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/newick.scm"),
include_str!("../../vendored_parsers/highlights/newick.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -872,7 +872,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/pascal.scm"),
include_str!("../../vendored_parsers/highlights/pascal.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -926,7 +926,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/proto.scm"),
include_str!("../../vendored_parsers/highlights/proto.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down Expand Up @@ -1100,7 +1100,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
ignore_trailing_tokens: vec![],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/smali.scm"),
include_str!("../../vendored_parsers/highlights/smali.scm"),
)
.unwrap(),
sub_languages: Vec::new(),
Expand Down Expand Up @@ -1250,7 +1250,7 @@ fn build_config(language: guess::Language) -> TreeSitterConfig {
delimiter_tokens: vec![("(", ")"), ("[", "]"), ("begin", "end")],
highlight_query: ts::Query::new(
&language,
include_str!("../../../../vendored_parsers/highlights/verilog.scm"),
include_str!("../../vendored_parsers/highlights/verilog.scm"),
)
.unwrap(),
sub_languages: vec![],
Expand Down
2 changes: 1 addition & 1 deletion crates/diffr-core/src/plugin/builtin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ mod tests {

#[test]
fn every_plugin_folder_is_embedded_and_described() {
let root = Path::new(env!("CARGO_MANIFEST_DIR")).join("../../plugins/shape");
let root = Path::new(env!("CARGO_MANIFEST_DIR")).join("plugins/shape");
let mut on_disk = BTreeSet::new();
let mut folders = BTreeSet::new();
for folder in std::fs::read_dir(&root).unwrap() {
Expand Down
1 change: 1 addition & 0 deletions crates/diffr-core/vendored_parsers
Loading
Loading