Skip to content

Commit 88533c1

Browse files
authored
add package list to Go file headers (#1474)
This allows the reader to quickly determine which versions of which packages were used as input to the bindings generator.
1 parent 6f8b8e7 commit 88533c1

File tree

1 file changed

+35
-3
lines changed

1 file changed

+35
-3
lines changed

crates/go/src/lib.rs

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ use wit_bindgen_core::abi::{
1515
};
1616
use wit_bindgen_core::wit_parser::{
1717
Alignment, ArchitectureSize, Docs, Enum, Flags, FlagsRepr, Function, FunctionKind, Handle, Int,
18-
InterfaceId, Record, Resolve, Result_, SizeAlign, Tuple, Type, TypeDefKind, TypeId, TypeOwner,
19-
Variant, WorldId, WorldKey,
18+
InterfaceId, Package, PackageName, Record, Resolve, Result_, SizeAlign, Tuple, Type,
19+
TypeDefKind, TypeId, TypeOwner, Variant, WorldId, WorldKey,
2020
};
2121
use wit_bindgen_core::{
2222
AsyncFilterSet, Direction, Files, InterfaceGenerator as _, Ns, WorldGenerator, uwriteln,
@@ -776,7 +776,39 @@ impl WorldGenerator for Go {
776776
_ = (resolve, id);
777777

778778
let version = env!("CARGO_PKG_VERSION");
779-
let header = &format!("// Generated by `wit-bindgen` {version}. DO NOT EDIT!");
779+
let packages = resolve
780+
.packages
781+
.iter()
782+
.map(
783+
|(
784+
_,
785+
Package {
786+
name:
787+
PackageName {
788+
namespace,
789+
name,
790+
version,
791+
},
792+
..
793+
},
794+
)| {
795+
let version = if let Some(version) = version {
796+
format!("@{version}")
797+
} else {
798+
String::new()
799+
};
800+
format!("// {namespace}:{name}{version}")
801+
},
802+
)
803+
.collect::<Vec<_>>()
804+
.join("\n");
805+
let header = &format!(
806+
"// Generated by `wit-bindgen` {version}. DO NOT EDIT!
807+
//
808+
// This code was generated from the following packages:
809+
{packages}
810+
"
811+
);
780812

781813
let src = mem::take(&mut self.src);
782814
let align = self.return_area_align.format(POINTER_SIZE_EXPRESSION);

0 commit comments

Comments
 (0)