diff --git a/.bazelrc b/.bazelrc
index c776090..0c6e68c 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -4,6 +4,7 @@ common --registry=https://raw.githubusercontent.com/ecsact-dev/bazel_registry/ma
common --registry=https://raw.githubusercontent.com/zaucy/bazel-central-registry/add-curl-config2 # temporary
common --registry=https://raw.githubusercontent.com/bazelboost/registry/main
common --registry=https://bcr.bazel.build
+common --@docopt.cpp//:use_boost_regex
build --enable_platform_specific_config
build --incompatible_enable_cc_toolchain_resolution
build --incompatible_strict_action_env
diff --git a/.editorconfig b/.editorconfig
index 57779a4..2402e61 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,4 +1,8 @@
-root = true
-
-[*]
-end_of_line = lf
+root = true
+
+[*]
+end_of_line = lf
+
+[release-notes-template]
+indent_style = space
+indent_size = 4
diff --git a/BUILD.bazel b/BUILD.bazel
index 6812770..c1e768c 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -5,7 +5,14 @@ bzlws_copy(
srcs = [
"@ecsact_cli",
"@ecsact_lsp_server",
- ],
+ ] + select({
+ "@platforms//os:windows": [
+ "@ecsact_unreal_codegen_win64//file",
+ ],
+ "@platforms//os:linux": [
+ "@ecsact_unreal_codegen_linux//file",
+ ],
+ }),
out = "dist/bin/{FILENAME}",
force = True,
)
@@ -24,9 +31,9 @@ bzlws_copy(
bzlws_copy(
name = "copy_dist_include",
srcs = [
+ "@ecsact_codegen//:headers",
"@ecsact_lang_cpp//:headers",
"@ecsact_runtime//:headers",
- "@ecsact_codegen//:headers",
],
out = "dist/include/{FILEPATH}",
force = True,
@@ -60,6 +67,7 @@ bzlws_copy(
"@ecsact_rt_entt",
"@ecsact_rt_reference//async_reference",
"@ecsact_rt_reference//serialize_reference",
+ "@ecsact_si_wasmer",
],
out = "dist/share/ecsact/recipes/{FILENAME}",
force = True,
diff --git a/CheckDist.sh b/CheckDist.sh
index d8853e4..2d4a0cf 100755
--- a/CheckDist.sh
+++ b/CheckDist.sh
@@ -15,5 +15,6 @@ echo
[ ! -d "dist/include/ecsact" ] && echo "Missing ecsact include directory" && exit 1
[ ! -f "dist/bin/ecsact" ] && echo "Missing ecsact CLI" && exit 1
[ ! -f "dist/bin/ecsact_lsp_server" ] && echo "Missing ecsact lsp CLI" && exit 1
+[ ! -f "dist/bin/EcsactUnrealCodegen" ] && echo "Missing EcsatUnrealCodegen tool" && exit 1
exit 0
diff --git a/CreateMsix.ps1 b/CreateMsix.ps1
index 21e5371..f64317e 100644
--- a/CreateMsix.ps1
+++ b/CreateMsix.ps1
@@ -38,7 +38,8 @@ try
$ExecutablesToSign = @(
'.\dist\bin\ecsact.exe',
- '.\dist\bin\ecsact_lsp_server.exe'
+ '.\dist\bin\ecsact_lsp_server.exe',
+ '.\dist\bin\EcsactUnrealCodegen.exe'
)
foreach($Executable in $ExecutablesToSign)
diff --git a/MODULE.bazel b/MODULE.bazel
index 1ed743a..5a55ef0 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,30 +1,43 @@
module(name = "ecsact_sdk")
-bazel_dep(name = "rules_cc", version = "0.0.9")
+bazel_dep(name = "rules_cc", version = "0.0.17")
bazel_dep(name = "platforms", version = "0.0.10")
-bazel_dep(name = "rules_pkg", version = "0.10.1")
+bazel_dep(name = "rules_pkg", version = "1.0.1")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
-bazel_dep(name = "ecsact_si_wasm", version = "0.1.2")
-bazel_dep(name = "rules_ecsact", version = "0.5.5")
-bazel_dep(name = "ecsact_rt_entt", version = "0.3.7")
-bazel_dep(name = "ecsact_rt_reference", version = "0.1.1")
-bazel_dep(name = "ecsact_codegen", version = "0.4.1")
-bazel_dep(name = "ecsact_parse", version = "0.5.1")
-bazel_dep(name = "ecsact_runtime", version = "0.6.7")
-bazel_dep(name = "ecsact_interpret", version = "0.6.4")
-bazel_dep(name = "ecsact_lang_cpp", version = "0.4.6")
-bazel_dep(name = "ecsact_cli", version = "0.3.16")
-bazel_dep(name = "ecsact_lsp_server", version = "0.2.1")
-bazel_dep(name = "ecsact_lang_json", version = "0.1.5")
-bazel_dep(name = "ecsact_lang_csharp", version = "0.1.5")
+
+# NOTE: this si the first ecsact dependency and if you see a bazel 'compatibility' error it may _NOT_ be from this one and could be from many others.
+# SEE: https://github.com/bazelbuild/bazel/issues/22972
+bazel_dep(name = "ecsact_si_wasmer", version = "0.2.0")
+bazel_dep(name = "rules_ecsact", version = "0.5.10")
+bazel_dep(name = "ecsact_rt_entt", version = "0.3.19")
+bazel_dep(name = "ecsact_rt_reference", version = "0.2.0")
+bazel_dep(name = "ecsact_codegen", version = "0.4.4")
+bazel_dep(name = "ecsact_parse", version = "0.5.5")
+bazel_dep(name = "ecsact_runtime", version = "0.8.2")
+bazel_dep(name = "ecsact_interpret", version = "0.6.7")
+bazel_dep(name = "ecsact_lang_cpp", version = "0.4.11")
+bazel_dep(name = "ecsact_cli", version = "0.3.26")
+bazel_dep(name = "ecsact_lsp_server", version = "0.2.3")
+bazel_dep(name = "ecsact_lang_json", version = "0.1.7")
+bazel_dep(name = "ecsact_lang_csharp", version = "0.1.7")
bazel_dep(name = "yaml-cpp", version = "0.8.0")
bazel_dep(name = "boost.dll", version = "1.83.0.bzl.2")
bazel_dep(name = "boost.process", version = "1.83.0.bzl.2")
bazel_dep(name = "bzlws", version = "0.2.0")
bazel_dep(name = "ecsact_logo", version = "0.1.11")
-bazel_dep(name = "toolchains_llvm", version = "1.0.0", dev_dependency = True)
+prebuilt_tools = use_extension("//:prebuilt-tools.bzl", "prebuilt_tools")
+use_repo(
+ prebuilt_tools,
+ "ecsact_unreal_codegen_linux",
+ "ecsact_unreal_codegen_win64",
+)
+
+bazel_dep(name = "toolchains_llvm", version = "1.2.0", dev_dependency = True)
bazel_dep(name = "hedron_compile_commands", dev_dependency = True)
+
+bazel_dep(name = "docopt.cpp", version = "0.6.2")
+
git_override(
module_name = "hedron_compile_commands",
commit = "204aa593e002cbd177d30f11f54cff3559110bb9",
diff --git a/README.md b/README.md
index 0373126..489716b 100644
--- a/README.md
+++ b/README.md
@@ -24,4 +24,4 @@ Here are some core repositories that are most interesting if you're considering
* https://github.com/ecsact-dev/ecsact_interpret
* https://github.com/ecsact-dev/ecsact_cli
* https://github.com/ecsact-dev/ecsact_rt_entt
-* https://github.com/ecsact-dev/ecsact_si_wasm
+* https://github.com/ecsact-dev/ecsact_si_wasmer
diff --git a/dist/AppxManifest.xml b/dist/AppxManifest.xml
index ba330e3..dc608ae 100644
--- a/dist/AppxManifest.xml
+++ b/dist/AppxManifest.xml
@@ -36,6 +36,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/prebuilt-tools.bzl b/prebuilt-tools.bzl
new file mode 100644
index 0000000..c791272
--- /dev/null
+++ b/prebuilt-tools.bzl
@@ -0,0 +1,21 @@
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
+
+ECSACT_UNREAL_VERSION = "0.2.2"
+
+def _prebuilt_tools(mctx):
+ http_file(
+ name = "ecsact_unreal_codegen_win64",
+ downloaded_file_path = "EcsactUnrealCodegen.exe",
+ executable = True,
+ url = "https://github.com/ecsact-dev/ecsact_unreal/releases/download/{}/EcsactUnrealCodegen-Win64.exe".format(ECSACT_UNREAL_VERSION),
+ integrity = "sha256-ynFQTRdnN4k7s3t2Z3dJ2fnxoQ8hV/P5y2cvgRMvxSg=",
+ )
+ http_file(
+ name = "ecsact_unreal_codegen_linux",
+ downloaded_file_path = "EcsactUnrealCodegen",
+ executable = True,
+ url = "https://github.com/ecsact-dev/ecsact_unreal/releases/download/{}/EcsactUnrealCodegen-Linux".format(ECSACT_UNREAL_VERSION),
+ integrity = "sha256-nwcXevEQn1RJrm/7/Nq+HtR3nBLMbhlovfPSgXR923A=",
+ )
+
+prebuilt_tools = module_extension(_prebuilt_tools)
diff --git a/release-notes-template b/release-notes-template
index 02697a3..a7d995c 100644
--- a/release-notes-template
+++ b/release-notes-template
@@ -1,35 +1,41 @@
-{% if version.tag -%}
- ## [{{ version.tag }}]({{repository_url}}/releases/tag/{{ version.tag }})
-{% else -%}
- {% set from = commits | last -%}
- {% set to = version.id-%}
- {% set from_shorthand = from.id | truncate(length=7, end="") -%}
- {% set to_shorthand = to | truncate(length=7, end="") -%}
- ## Unreleased ({{ from_shorthand ~ ".." ~ to_shorthand }})
-{% endif -%}
-
-{% for type, typed_commits in commits | sort(attribute="type")| group_by(attribute="type")-%}
-#### {{ type | upper_first }}
-{% for scope, scoped_commits in typed_commits | group_by(attribute="scope") -%}
-
-{% for commit in scoped_commits | sort(attribute="scope") -%}
- {% set shorthand = commit.id | truncate(length=7, end="") -%}
- - **({{ scope }})** {{ commit.summary }} - ([{{ shorthand }}]({{ repository_url }}/commit/{{ commit.id }}))
- {{ commit.body }}
-{% endfor -%}
-
-{% endfor -%}
-
-{%- for commit in typed_commits | unscoped -%}
- {% if commit.author -%}
- {% set author = commit.author -%}
- {% else -%}
- {% set author = commit.signature -%}
- {% endif -%}
-
- {% set shorthand = commit.id | truncate(length=7, end="") -%}
- - {{ commit.summary }} - ([{{ shorthand }}]({{ repository_url }}/commit/{{ commit.id }}))
- {{ commit.body }}
-{% endfor -%}
-
-{% endfor -%}
+{% if version.tag -%}
+ ## [{{ version.tag }}]({{repository_url}}/releases/tag/{{ version.tag }})
+{% else -%}
+ {% set from = commits | last -%}
+ {% set to = version.id-%}
+ {% set from_shorthand = from.id | truncate(length=7, end="") -%}
+ {% set to_shorthand = to | truncate(length=7, end="") -%}
+ ## Unreleased ({{ from_shorthand ~ ".." ~ to_shorthand }})
+{% endif -%}
+
+{% for type, typed_commits in commits | sort(attribute="type") | group_by(attribute="type") -%}
+ {% if type != "Miscellaneous Chores" -%}
+ #### {{ type | upper_first }}
+ {% endif -%}
+{% for scope, scoped_commits in typed_commits | group_by(attribute="scope") -%}
+
+{% for commit in scoped_commits | sort(attribute="scope") -%}
+ {% if commit.type != "Miscellaneous Chores" -%}
+ {% set shorthand = commit.id | truncate(length=7, end="") -%}
+ - **({{ scope }})** {{ commit.summary }} - ([{{ shorthand }}]({{ repository_url }}/commit/{{ commit.id }}))
+ {{ commit.body }}
+ {% endif -%}
+{% endfor -%}
+
+{% endfor -%}
+
+{%- for commit in typed_commits | unscoped -%}
+ {% if commit.type != "Miscellaneous Chores" -%}
+ {% if commit.author -%}
+ {% set author = commit.author -%}
+ {% else -%}
+ {% set author = commit.signature -%}
+ {% endif -%}
+
+ {% set shorthand = commit.id | truncate(length=7, end="") -%}
+ - {{ commit.summary }} - ([{{ shorthand }}]({{ repository_url }}/commit/{{ commit.id }}))
+ {{ commit.body }}
+ {% endif -%}
+{% endfor -%}
+
+{% endfor -%}
diff --git a/release.nu b/release.nu
index a12fb89..b0e0c06 100644
--- a/release.nu
+++ b/release.nu
@@ -7,18 +7,31 @@ def get-ecsact-deps [] {
)
}
-def main [version: string, --dry-run] {
+def main [version, --dry-run, --update] {
let start_dir = $env.PWD;
+ let tmp_repo_dir = mktemp -d --suffix "EcsactSdkRelease";
+ let last_release = (gh release view --json tagName | from json).tagName;
+ git worktree add $tmp_repo_dir $last_release;
+ cd $tmp_repo_dir;
let before_update_deps = get-ecsact-deps;
+ git worktree remove $tmp_repo_dir --force | complete; # this sometimes fails
+ cd $start_dir;
let changelog_template = [$start_dir, "release-notes-template"] | path join;
-
- $before_update_deps | each {|dep| bzlmod add $dep.name; };
+
+ if $update {
+ $before_update_deps | each {|dep| bzlmod add $dep.name; };
+ }
# sanity check
- bazel build //...;
+ bazel build "//...";
let release_notes = (get-ecsact-deps | each {|dep|
- let before_version = $before_update_deps | where name == $dep.name | get version | get 0;
+ print $"Generating release notes for ($dep.name)";
+ let before_version = ($before_update_deps | where name == $dep.name);
+ if ($before_version | length) == 0 {
+ return $"## NEW dependency ($dep.name)\n\n";
+ }
+ let before_version = $before_version | get version | get 0;
let after_version = $dep | get version;
let dep_repo_remote = $"https://github.com/ecsact-dev/($dep.name)";
let cached_repo_dir = $".cache/repos/($dep.name)";
@@ -43,9 +56,11 @@ def main [version: string, --dry-run] {
if $dry_run {
echo $release_notes;
} else {
- git add MODULE.bazel;
- git commit -m $"chore\(deps\): ecsact repos for ($version) release";
- git push origin main;
+ if $update {
+ git add MODULE.bazel;
+ git commit -m $"chore\(deps\): ecsact repos for ($version) release";
+ git push origin main;
+ }
git tag $version;
git push origin $version;
gh release create $version -n $release_notes --latest -t $version --verify-tag --latest;