From 23058a4df61fb93c6a3d41a7429614cb9d6ef548 Mon Sep 17 00:00:00 2001 From: qubka Date: Sat, 29 Nov 2025 12:09:09 +0000 Subject: [PATCH 1/7] fix: bump version --- test/cross_call_worker/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cross_call_worker/go.mod b/test/cross_call_worker/go.mod index 6ef6537..bf25309 100644 --- a/test/cross_call_worker/go.mod +++ b/test/cross_call_worker/go.mod @@ -1,6 +1,6 @@ module plugify-plugin -go 1.24.0 +go 1.25.0 require github.com/untrustedmodders/go-plugify v1.3.0 From 68d226b92a947afc6e98df02e817787b9ad4369b Mon Sep 17 00:00:00 2001 From: qubka Date: Sat, 29 Nov 2025 16:27:47 +0000 Subject: [PATCH 2/7] fix: update generator --- test/cross_call_worker/generator.go | 53 ++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/test/cross_call_worker/generator.go b/test/cross_call_worker/generator.go index 9f5e7b2..97f6d75 100644 --- a/test/cross_call_worker/generator.go +++ b/test/cross_call_worker/generator.go @@ -6,22 +6,27 @@ package main import ( "flag" "fmt" - "github.com/untrustedmodders/go-plugify" "os" + "strings" + + "github.com/untrustedmodders/go-plugify" ) func main() { var ( - patterns = flag.String("patterns", "./...", "Package patterns to analyze") - output = flag.String("output", "", "Output manifest file (default: .pplugin)") - name = flag.String("name", "", "Plugin name (default: package name)") - version = flag.String("version", "1.0.0", "Plugin version") - description = flag.String("description", "", "Plugin description") - author = flag.String("author", "", "Plugin author") - website = flag.String("website", "", "Plugin website") - license = flag.String("license", "", "Plugin license") - entry = flag.String("entry", "", "Plugin entry point (default: )") - target = flag.String("package", "main", "Autoexports package (default: main)") + patterns = flag.String("patterns", "./...", "Package patterns to analyze") + output = flag.String("output", "", "Output manifest file (default: .pplugin)") + name = flag.String("name", "", "Plugin name (default: package name)") + version = flag.String("version", "1.0.0", "Plugin version") + description = flag.String("description", "", "Plugin description") + author = flag.String("author", "", "Plugin author") + website = flag.String("website", "", "Plugin website") + license = flag.String("license", "", "Plugin license") + platforms = flag.String("platforms", "", "Comma-separated list of platforms (e.g., windows,linux,darwin)") + dependencies = flag.String("dependencies", "", "Comma-separated list of dependencies (e.g., plugin1,plugin2)") + conflicts = flag.String("conflicts", "", "Comma-separated list of conflicts (e.g., plugin3,plugin4)") + entry = flag.String("entry", "", "Plugin entry point (default: )") + target = flag.String("package", "main", "Autoexports package (default: main)") ) flag.Parse() @@ -37,10 +42,34 @@ func main() { } fmt.Printf("Version: %s\n", *version) + // Parse comma-separated strings + platformList := parseCommaSeparated(*platforms) + dependencyList := parseCommaSeparated(*dependencies) + conflictList := parseCommaSeparated(*conflicts) + // Call the generator with error handling - err := plugify.Generate(*patterns, *output, *name, *version, *description, *author, *website, *license, *entry, *target) + err := plugify.Generate(*patterns, *output, *name, *version, *description, *author, *website, *license, platformList, dependencyList, conflictList, *entry, *target) if err != nil { fmt.Fprintf(os.Stderr, "Error generating plugin manifest: %v\n", err) os.Exit(1) } } + +// parseCommaSeparated parses a comma-separated string into a slice of trimmed strings +func parseCommaSeparated(input string) []string { + if input == "" { + return nil + } + + parts := strings.Split(input, ",") + result := make([]string, 0, len(parts)) + + for _, part := range parts { + part = strings.TrimSpace(part) + if part != "" { + result = append(result, part) + } + } + + return result +} From 29c56f82c8f5ef0e2dde9c7b49f638b15b99c8c0 Mon Sep 17 00:00:00 2001 From: qubka Date: Sat, 29 Nov 2025 16:27:54 +0000 Subject: [PATCH 3/7] fix: bump test ver --- test/cross_call_worker/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cross_call_worker/go.mod b/test/cross_call_worker/go.mod index bf25309..555b4c1 100644 --- a/test/cross_call_worker/go.mod +++ b/test/cross_call_worker/go.mod @@ -2,7 +2,7 @@ module plugify-plugin go 1.25.0 -require github.com/untrustedmodders/go-plugify v1.3.0 +require github.com/untrustedmodders/go-plugify v1.3.3 require ( golang.org/x/mod v0.30.0 // indirect From 44dfb54a86d05cfdfeb65f4c25ad6b45918cedf8 Mon Sep 17 00:00:00 2001 From: qubka Date: Sat, 29 Nov 2025 16:30:50 +0000 Subject: [PATCH 4/7] fix: add missing gen task --- test/cross_call_worker/generator.go | 2 +- test/cross_call_worker/go.sum | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/test/cross_call_worker/generator.go b/test/cross_call_worker/generator.go index 97f6d75..06d2836 100644 --- a/test/cross_call_worker/generator.go +++ b/test/cross_call_worker/generator.go @@ -1,4 +1,4 @@ -//go:generate generator.go -package=main -output=. +//go:generate go run generator.go -package=main -output=. //go:build ignore package main diff --git a/test/cross_call_worker/go.sum b/test/cross_call_worker/go.sum index fbe4b77..8d00415 100644 --- a/test/cross_call_worker/go.sum +++ b/test/cross_call_worker/go.sum @@ -3,6 +3,7 @@ github.com/untrustedmodders/go-plugify v1.2.2 h1:Qj9YWS6vCJJ1TwXN50iRgYOoekNkiHZ github.com/untrustedmodders/go-plugify v1.2.2/go.mod h1:c5w+u1HBAOxLPJzBwT0OBpfokLuZxGvnjtNSTOmynWc= github.com/untrustedmodders/go-plugify v1.3.0 h1:2eg2oo06MhDC95w+6i5jRCPwnFEjFqp7Xl5o4uHCFvI= github.com/untrustedmodders/go-plugify v1.3.0/go.mod h1:JvcId+YUagSthPxrLC5NT2MxlfhnIGfoOuC2iEMqXgE= +github.com/untrustedmodders/go-plugify v1.3.3/go.mod h1:j+sziXkuxB59jnbrwEGt3T4z3mccwmMpxgCUP3VPQ84= golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= From cdce536fe7ec148b60f9d10a8533ea59a59a6319 Mon Sep 17 00:00:00 2001 From: qubka Date: Tue, 2 Dec 2025 10:33:12 +0000 Subject: [PATCH 5/7] fix: update autogen file --- test/cross_call_worker/autoexports.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/cross_call_worker/autoexports.go b/test/cross_call_worker/autoexports.go index 967a1e6..d311cb0 100644 --- a/test/cross_call_worker/autoexports.go +++ b/test/cross_call_worker/autoexports.go @@ -4,14 +4,14 @@ package main import "C" import ( "reflect" - _ "reflect" "unsafe" - _ "unsafe" - "github.com/untrustedmodders/go-plugify" - _ "github.com/untrustedmodders/go-plugify" ) +var _ = reflect.TypeOf(0) +var _ = unsafe.Sizeof(0) +var _ = plugify.Plugin.Loaded + // Exported methods //export __NoParamReturnVoid From 3676a7c544291be21577250bcd8b3556e4d928c1 Mon Sep 17 00:00:00 2001 From: qubka Date: Sat, 6 Dec 2025 15:25:57 +0000 Subject: [PATCH 6/7] feat: remove c pointers for getters in api --- src/module.cpp | 107 ++++++++++------------------------ src/module.hpp | 2 +- test/cross_call_worker/go.mod | 2 +- 3 files changed, 34 insertions(+), 77 deletions(-) diff --git a/src/module.cpp b/src/module.cpp index 0602e5c..6e29104 100644 --- a/src/module.cpp +++ b/src/module.cpp @@ -220,52 +220,28 @@ bool IsExtensionLoaded(GoString name, GoString constraint) { return g_golm.GetProvider()->IsExtensionLoaded(name); } -const char* GetBaseDir() { - const auto& source = plg::as_string(g_golm.GetProvider()->GetBaseDir()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetBaseDir() { + return plg::as_string(g_golm.GetProvider()->GetBaseDir()); } -const char* GetExtensionsDir() { - const auto& source = plg::as_string(g_golm.GetProvider()->GetExtensionsDir()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetExtensionsDir() { + return plg::as_string(g_golm.GetProvider()->GetExtensionsDir()); } -const char* GetConfigsDir() { - const auto& source = plg::as_string(g_golm.GetProvider()->GetConfigsDir()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetConfigsDir() { + return plg::as_string(g_golm.GetProvider()->GetConfigsDir()); } -const char* GetDataDir() { - const auto& source = plg::as_string(g_golm.GetProvider()->GetDataDir()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetDataDir() { + return plg::as_string(g_golm.GetProvider()->GetDataDir()); } -const char* GetLogsDir() { - const auto& source = plg::as_string(g_golm.GetProvider()->GetLogsDir()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetLogsDir() { + return plg::as_string(g_golm.GetProvider()->GetLogsDir()); } -const char* GetCacheDir() { - const auto& source = plg::as_string(g_golm.GetProvider()->GetCacheDir()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetCacheDir() { + return plg::as_string(g_golm.GetProvider()->GetCacheDir()); } void PrintException(GoString message) { @@ -282,59 +258,44 @@ ptrdiff_t GetPluginId(const Extension& plugin) { return static_cast(plugin.GetId()); } -const char* GetPluginName(const Extension& plugin) { - return plugin.GetName().c_str(); +plg::string GetPluginName(const Extension& plugin) { + return plugin.GetName(); } -const char* GetPluginDescription(const Extension& plugin) { - return plugin.GetDescription().c_str(); +plg::string GetPluginDescription(const Extension& plugin) { + return plugin.GetDescription(); } -const char* GetPluginVersion(const Extension& plugin) { - return plugin.GetVersionString().c_str(); +plg::string GetPluginVersion(const Extension& plugin) { + return plugin.GetVersionString(); } -const char* GetPluginAuthor(const Extension& plugin) { - return plugin.GetAuthor().c_str(); +plg::string GetPluginAuthor(const Extension& plugin) { + return plugin.GetAuthor(); } -const char* GetPluginWebsite(const Extension& plugin) { - return plugin.GetWebsite().c_str(); +plg::string GetPluginWebsite(const Extension& plugin) { + return plugin.GetWebsite(); } -const char* GetPluginLicense(const Extension& plugin) { - return plugin.GetLicense().c_str(); +plg::string GetPluginLicense(const Extension& plugin) { + return plugin.GetLicense(); } -const char* GetPluginLocation(const Extension& plugin) { - const auto& source = plg::as_string(plugin.GetLocation()); - size_t size = source.length() + 1; - char* dest = new char[size]; - std::memcpy(dest, source.data(), size); - return dest; +plg::string GetPluginLocation(const Extension& plugin) { + return plg::as_string(plugin.GetLocation()); } -const char** GetPluginDependencies(const Extension& plugin) { +plg::vector GetPluginDependencies(const Extension& plugin) { const std::vector& dependencies = plugin.GetDependencies(); - auto* deps = new const char*[dependencies.size()]; - for (size_t i = 0; i < dependencies.size(); ++i) { - deps[i] = dependencies[i].GetName().c_str(); + plg::vector deps; + deps.reserve(dependencies.size()); + for (const auto& dependencie : dependencies) { + deps.emplace_back(dependencie.GetName()); } return deps; } -ptrdiff_t GetPluginDependenciesSize(const Extension& plugin) { - return static_cast(plugin.GetDependencies().size()); -} - -void DeleteCStr(const char* str) { - delete str; -} - -void DeleteCStrArr(const char** arr) { - delete[] arr; -} - // String Functions plg::string ConstructString(GoString source) { if (source.p == nullptr || source.n == 0) [[unlikely]] @@ -633,7 +594,7 @@ const EnumObject& GetMethodEnum(const Method& handle, ptrdiff_t index) { } } -const std::array GoLanguageModule::_pluginApi = { +const std::array GoLanguageModule::_pluginApi = { reinterpret_cast(&::GetMethodPtr), reinterpret_cast(&::GetMethodPtr2), reinterpret_cast(&::GetBaseDir), @@ -654,10 +615,6 @@ const std::array GoLanguageModule::_pluginApi = { reinterpret_cast(&::GetPluginLicense), reinterpret_cast(&::GetPluginLocation), reinterpret_cast(&::GetPluginDependencies), - reinterpret_cast(&::GetPluginDependenciesSize), - - reinterpret_cast(&::DeleteCStr), - reinterpret_cast(&::DeleteCStrArr), reinterpret_cast(&::ConstructString), reinterpret_cast(&::DestroyString), diff --git a/src/module.hpp b/src/module.hpp index 5ae0b3f..a33b812 100644 --- a/src/module.hpp +++ b/src/module.hpp @@ -110,7 +110,7 @@ namespace golm { std::vector _addresses; - static const std::array _pluginApi; + static const std::array _pluginApi; }; extern GoLanguageModule g_golm; diff --git a/test/cross_call_worker/go.mod b/test/cross_call_worker/go.mod index 555b4c1..e5f15d3 100644 --- a/test/cross_call_worker/go.mod +++ b/test/cross_call_worker/go.mod @@ -2,7 +2,7 @@ module plugify-plugin go 1.25.0 -require github.com/untrustedmodders/go-plugify v1.3.3 +require github.com/untrustedmodders/go-plugify v1.4.0 require ( golang.org/x/mod v0.30.0 // indirect From 5e692b4e05d6ded8db7fcede334c50ab6a122fba Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 6 Dec 2025 15:26:18 +0000 Subject: [PATCH 7/7] chore(main): release 2.1.0 --- .github/release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ version.txt | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/release-please-manifest.json b/.github/release-please-manifest.json index b83b80e..969d3db 100644 --- a/.github/release-please-manifest.json +++ b/.github/release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.0.6" + ".": "2.1.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f43946a..6d448de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [2.1.0](https://github.com/untrustedmodders/plugify-module-golang/compare/v2.0.6...v2.1.0) (2025-12-06) + + +### Features + +* remove c pointers for getters in api ([3676a7c](https://github.com/untrustedmodders/plugify-module-golang/commit/3676a7c544291be21577250bcd8b3556e4d928c1)) + + +### Bug Fixes + +* add missing gen task ([44dfb54](https://github.com/untrustedmodders/plugify-module-golang/commit/44dfb54a86d05cfdfeb65f4c25ad6b45918cedf8)) +* bump test ver ([29c56f8](https://github.com/untrustedmodders/plugify-module-golang/commit/29c56f82c8f5ef0e2dde9c7b49f638b15b99c8c0)) +* bump version ([23058a4](https://github.com/untrustedmodders/plugify-module-golang/commit/23058a4df61fb93c6a3d41a7429614cb9d6ef548)) +* update autogen file ([cdce536](https://github.com/untrustedmodders/plugify-module-golang/commit/cdce536fe7ec148b60f9d10a8533ea59a59a6319)) +* update generator ([68d226b](https://github.com/untrustedmodders/plugify-module-golang/commit/68d226b92a947afc6e98df02e817787b9ad4369b)) + ## [2.0.6](https://github.com/untrustedmodders/plugify-module-golang/compare/v2.0.5...v2.0.6) (2025-11-26) diff --git a/version.txt b/version.txt index 157e54f..7ec1d6d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.0.6 +2.1.0