Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
6 changes: 5 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,11 @@ crates/
│ │ ├── cmd/ # CLI commands (dispatch, check, generate, list, debug)
│ │ ├── environment.rs # Environment configuration and resolution
│ │ ├── resolved.rs # Resolution logic, VersionProblem / NonVersionProblem / Fix enums
│ │ ├── compatibility.rs # Wire compatibility checking via drift
│ │ ├── compatibility/ # Wire compatibility checking via drift
│ │ │ ├── mod.rs # Module re-exports
│ │ │ ├── types.rs # ApiCompatIssue and related data model
│ │ │ ├── detect.rs # Bridge from drift output into the data model
│ │ │ └── display.rs # Styled CLI rendering of compatibility issues
│ │ ├── validation.rs # OpenAPI document validation
│ │ ├── vcs/ # VCS abstraction (RepoVcs: Git/Jujutsu dispatch)
│ │ │ ├── mod.rs # Module re-exports
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

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

1 change: 1 addition & 0 deletions crates/dropshot-api-manager/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ thiserror.workspace = true

[dev-dependencies]
assert_matches.workspace = true
expectorate.workspace = true

[lints]
workspace = true
Expand Down
19 changes: 15 additions & 4 deletions crates/dropshot-api-manager/src/cmd/generate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
use crate::{
FAILURE_EXIT_CODE,
apis::ManagedApis,
compatibility::CompatIssueLocation,
environment::{BlessedSource, GeneratedSource, ResolvedEnv},
output::{
CheckResult, OutputOpts, Styles, display_api_spec_version,
display_load_problems, display_non_version_problems,
display_resolution, display_version_problems,
CheckResult, CompatDisplayContext, OutputOpts, Styles,
display_api_spec_version, display_load_problems,
display_non_version_problems, display_resolution,
display_version_problems,
headers::{self, *},
plural,
},
Expand Down Expand Up @@ -216,6 +218,8 @@ fn generate_impl_inner(
display_load_problems(writer, &errors, styles)?;
let resolved =
Resolved::new(env, apis, &blessed, &generated, &local_files_recheck);
let dedupe = resolved.build_compat_dedupe_map();

let orphaned_and_unparseable: Vec<_> =
resolved.orphaned_and_unparseable().collect();
nproblems += orphaned_and_unparseable.len();
Expand All @@ -237,7 +241,13 @@ fn generate_impl_inner(
(this is a bug)",
ident, version
)?;
display_version_problems(writer, env, problems, styles)?;
let compat_ctx = CompatDisplayContext {
dedupe: &dedupe,
current: CompatIssueLocation { api: ident, version },
};
display_version_problems(
writer, env, problems, styles, compat_ctx,
)?;
}
}

Expand All @@ -259,6 +269,7 @@ fn generate_impl_inner(
// Release borrows held by `resolved`, then drop all source
// collections in parallel. Each contains many parsed OpenAPI
// documents whose sequential drops are costly.
drop(dedupe);
drop(resolved);
std::thread::scope(|s| {
s.spawn(|| drop(blessed));
Expand Down
Loading
Loading