Repository navigation
Conversation
AI Code ReviewSummaryThis PR implements the Critical IssuesNone found. Moderate IssuesNone found. Minor Issues
What Looks Good
RecommendationApprove - The PR fully implements the requested feature with high quality, thorough testing, proper documentation, and follows all project conventions. No blocking issues identified. Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
|
Built the PR head, ran go vet and the PR's tests (all pass), and test-merged it with current main (clean). I could not try a real export — no mxbuild available — so mx itself was only exercised through the test seams. Solid work overall: running mx on a project copy, exporting into a fresh staging folder (so a stale .mpk is never reported as this run's, and "exit 0, no package" is caught), the self-check that keeps the suggested --exclude from matching the module's own files, the module list on an unknown name, and the mapped exit codes. Should fix before merge Suggest verifying the version and refusing on a mismatch, as scratch.go does (an explicit --mxbuild-path as the override), or at least warning on stderr. Minor |
…ndixlabs#1382) Wraps `mx create-module-package` (-l by default, --all-libs to bundle every JAR), the reverse of `marketplace install --file`. Warns on stderr about other modules' resources/javasource/themesource files in the package, with the plain-dot --exclude that drops them. mx writes into the project (measured), so it runs on a temp copy. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… review follow-ups (mendixlabs#1383) ResolveMxForVersion prefers an mx on PATH and falls back to any cached one, so the package could silently be made by another Mendix version than its app. mxcli now reads the version of the mx it found (mx.deps.json beside it, else its version-named folder) and refuses a different major.minor.patch, or an mx whose version it cannot tell, naming both versions and the fix. --mxbuild-path is the override: a mismatch then only warns on stderr; a path that does not exist is an error rather than a quiet fall back to PATH. Also: mx's output on a successful export goes to stderr; the context reaches mx (exec.CommandContext); the printed --exclude is quoted for a POSIX shell; an output directory inside the project is not copied into the temporary copy; the unused inspectPackage is dropped. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
4099f0c to
ac909ae
Compare
|
Thanks for the review. Everything is addressed in a second commit, Should fix: the resolved
Minor:
Evidence:
|
AI Code ReviewCritical IssuesNone found. Moderate IssuesNone found. Minor IssuesNone found. What Looks Good
RecommendationApprove. This PR implements a well-tested, isolated feature that follows project patterns, provides excellent user experience through clear errors and warnings, and maintains the integrity of the original project. The functionality is the logical counterpart to Automated review via OpenRouter (Nemotron Super 120B) — workflow source |
…5e8da docs(run): the runtime does not derive a root URL from the bind address
Closes #1382.
What it does
mxcli marketplace package <Module> -p app.mpr [-o dir] [--all-libs] [--exclude <regex>] [--exclude-managed-dependencies] [--mxbuild-path p] [--json]wrapsmx create-module-package. It is the reverse ofmarketplace install --file.create-module-package [-l unless --all-libs] [-e <regex>] [-m] -d <staging> <copy.mpr> <Module>.-etakes a single regex, so alternatives are joined with|; the help says so, and that the separator must be written as..mxis resolved withdocker.ResolveMxForVersionfor the project's version, withPrepareMxCommandapplied.mx create-module-packagerewrotetheme-cache/…/theme.compiled.css(.map), addeddeployment/sass/main.scssand createdthemesource/<module>/in the project. So it runs on a temporary copy, through a newdocker.WithProjectCopywrapper over the existingcopyProjectToTempthatdocker.Checkuses. Measured: a recursive listing of the app (1104 files, sizes and mtimes) was identical before and after a default run and an--all-libsrun.mx.mxexit codes 1–4 get messages saying what to change, plusmx's output with temp paths mapped back. "Exit 0 but no package" is an error.mxwrites into a fresh staging folder inside-o, and the package is moved to<out>/<Module>.mpk. A stale package is never reported as the new export.resources/(and, defensively,javasource/andthemesource/) entries, with a plain-dot--excludesuggestion. A folder whose pattern would also match the module's own files is reported as not safely excludable.--jsonprints{path, sizeBytes, files, foreignEntries}, withforeignEntriesalways an array. Warnings stay on stderr.docs-site/src/guides/marketplace.md, a row inreference/capabilities.md, a section in thedownload-marketplace-contentskill, and a CHANGELOG entry under Unreleased → Added.Evidence
cmd_marketplace_package_test.go, 13, withmxand the project reader stubbed): argument mapping, exit-code mapping (1/2/3/4/other), unknown module, exit 0 without a package, foreign-entry warning, JSON shape, replacing an older package, stale package ignored, classification on a synthetic zip, the plain-dot pattern, and the ambiguity guard.TestWithProjectCopy_WritesStayOnTheCopycovers the copy. Against a stubrunPackage, all failed (for example "exit 3: error … does not mention "module name"").mx(Studio Pro 11.12.5) on a scratch app:resources/entries, warned.--all-libs: 12 files.--exclude '^resources.EventLog.|…': 8 files, no warning.mx's exit 1 is surfaced, and the output dir is left empty.mxcli marketplace install --file, followed by the install's ownfix widgets/fix design-propertiesstep.mx checkthen gave 0 errors, and the module's entity and microflow describe correctly there../cmd/mxcliand./cmd/mxcli/docker: an identical failing list before and after (pre-existing Windows failures).go vetis clean on windows, linux and darwin.golang:1.26.6-bookworm, ANTLR 4.13.2, the same as CI):make grammar build test check-mdl check-findings check-conformance check-migration-reference lint-goall pass.Not covered
.mpr.lockbeside the project didn't stop the export, which reads only.--excludeisn't validated in Go (.NET regex);mx's rejection is what the user sees.🤖 Generated with Claude Code