chore: add generate flag to artisan build command#1402
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1402 +/- ##
==========================================
- Coverage 72.52% 72.48% -0.04%
==========================================
Files 292 292
Lines 19564 19577 +13
==========================================
+ Hits 14188 14191 +3
- Misses 4798 4807 +9
- Partials 578 579 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| runner := r.process.Env(map[string]string{ | ||
| "CGO_ENABLED": "0", | ||
| "GOOS": os, | ||
| "GOARCH": ctx.Option("arch"), | ||
| }).WithSpinner("Building...").Run(generateCommand(ctx.Option("name"), ctx.OptionBool("static"))); res.Failed() { | ||
| }) | ||
|
|
||
| if ctx.OptionBool("generate") { | ||
| if res := runner.WithSpinner("Running go generate...").Run("go generate ./..."); res.Failed() { | ||
| ctx.Error(res.Error().Error()) | ||
| return nil | ||
| } | ||
|
|
||
| ctx.Info("Go generate completed.") | ||
| } | ||
|
|
||
| if res := runner.WithSpinner("Building...").Run(generateCommand(ctx.Option("name"), ctx.OptionBool("static"))); res.Failed() { |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
📝 WalkthroughWalkthroughThe changes add a new Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
console/console/build_command_test.go (1)
38-58: Keep a green-path test forgenerate=false.The only success case now exercises the new flag, so the test suite no longer proves the PR’s main compatibility requirement:
artisan buildshould still succeed unchanged when--generateis omitted. Please add a happy-path case withOptionBool("generate") == falseand nogo generateexpectations.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@console/console/build_command_test.go` around lines 38 - 58, Add a second "happy path" test variant that sets mockContext.OptionBool("generate").Return(false).Once() and does not set any expectations for the generate sequence (i.e., remove expectations for mockProcess.WithSpinner("Running go generate..."), mockProcess.Run("go generate ./..."), mockResult.Failed() for that run, and mockContext.Info("Go generate completed.")). Keep the existing build expectations (mockProcess.Env, mockProcess.WithSpinner("Building..."), mockProcess.Run("go build -ldflags \"-s -w -extldflags -static\" ."), mockResult.Failed(), mockContext.Info("Built successfully.")). Name the test e.g. "Happy path (generate=false)" so it verifies artisan build still succeeds unchanged when OptionBool("generate") == false.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@console/console/build_command.go`:
- Around line 100-107: The code creates runner := r.process.Env(...) (setting
GOOS/GOARCH) before checking ctx.OptionBool("generate"), causing go generate to
run with target env; move the runner initialization so that the generate branch
runs first using the original process (no GOOS/GOARCH injection), then after the
generate branch create runner via r.process.Env(...) for the cross-build step;
update uses of runner.WithSpinner("Running go generate...").Run(...) and
subsequent runner invocations to use the correct runner (host for generate,
target for build).
---
Nitpick comments:
In `@console/console/build_command_test.go`:
- Around line 38-58: Add a second "happy path" test variant that sets
mockContext.OptionBool("generate").Return(false).Once() and does not set any
expectations for the generate sequence (i.e., remove expectations for
mockProcess.WithSpinner("Running go generate..."), mockProcess.Run("go generate
./..."), mockResult.Failed() for that run, and mockContext.Info("Go generate
completed.")). Keep the existing build expectations (mockProcess.Env,
mockProcess.WithSpinner("Building..."), mockProcess.Run("go build -ldflags \"-s
-w -extldflags -static\" ."), mockResult.Failed(), mockContext.Info("Built
successfully.")). Name the test e.g. "Happy path (generate=false)" so it
verifies artisan build still succeeds unchanged when OptionBool("generate") ==
false.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 5226d3c6-e7f7-4bc5-9829-c44b9d936765
📒 Files selected for processing (2)
console/console/build_command.goconsole/console/build_command_test.go
| runner := r.process.Env(map[string]string{ | ||
| "CGO_ENABLED": "0", | ||
| "GOOS": os, | ||
| "GOARCH": ctx.Option("arch"), | ||
| }).WithSpinner("Building...").Run(generateCommand(ctx.Option("name"), ctx.OptionBool("static"))); res.Failed() { | ||
| }) | ||
|
|
||
| if ctx.OptionBool("generate") { | ||
| if res := runner.WithSpinner("Running go generate...").Run("go generate ./..."); res.Failed() { |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Inspect whether the repo has generators that are expected to run on the host.
rg -n --glob '*.go' '//go:generate'Repository: goravel/framework
Length of output: 43
🏁 Script executed:
#!/bin/bash
# Check if the file exists and read the relevant section
if [ -f "console/console/build_command.go" ]; then
echo "File exists. Reading lines 95-115:"
sed -n '95,115p' console/console/build_command.go
else
echo "File not found at console/console/build_command.go"
echo "Searching for build_command.go:"
find . -name "build_command.go" -type f
fiRepository: goravel/framework
Length of output: 660
🏁 Script executed:
#!/bin/bash
# Double-check for go:generate directives with case-insensitive and broader patterns
echo "Searching for go:generate (various patterns):"
rg -i 'go.*generate|generate.*go' --glob '*.go' | head -20
echo -e "\nSearching specifically in console directory:"
find . -path "*/console/*" -name "*.go" -type f | head -20Repository: goravel/framework
Length of output: 2871
🏁 Script executed:
#!/bin/bash
# Read more of the build_command.go to see full context of runner usage
sed -n '100,130p' console/console/build_command.goRepository: goravel/framework
Length of output: 812
Run go generate in the host environment, not the target build environment.
runner is created with GOOS/GOARCH before the generate branch, and process.Process.Env() returns the same process instance, so go generate ./... inherits the cross-build target. The Go docs explicitly state that generate directives must invoke commands that can run locally, while generators also receive GOOS and GOARCH from the environment. This makes flows like build --generate --os windows unsafe for directives such as //go:generate go run ./cmd/gen, because the generator would be built for the target instead of the host. Move the runner initialization to after the generate block to prevent this.
Suggested change
- runner := r.process.Env(map[string]string{
- "CGO_ENABLED": "0",
- "GOOS": os,
- "GOARCH": ctx.Option("arch"),
- })
-
if ctx.OptionBool("generate") {
- if res := runner.WithSpinner("Running go generate...").Run("go generate ./..."); res.Failed() {
+ if res := r.process.WithSpinner("Running go generate...").Run("go generate ./..."); res.Failed() {
ctx.Error(res.Error().Error())
return nil
}
ctx.Info("Go generate completed.")
}
+
+ runner := r.process.Env(map[string]string{
+ "CGO_ENABLED": "0",
+ "GOOS": os,
+ "GOARCH": ctx.Option("arch"),
+ })📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| runner := r.process.Env(map[string]string{ | |
| "CGO_ENABLED": "0", | |
| "GOOS": os, | |
| "GOARCH": ctx.Option("arch"), | |
| }).WithSpinner("Building...").Run(generateCommand(ctx.Option("name"), ctx.OptionBool("static"))); res.Failed() { | |
| }) | |
| if ctx.OptionBool("generate") { | |
| if res := runner.WithSpinner("Running go generate...").Run("go generate ./..."); res.Failed() { | |
| if ctx.OptionBool("generate") { | |
| if res := r.process.WithSpinner("Running go generate...").Run("go generate ./..."); res.Failed() { | |
| ctx.Error(res.Error().Error()) | |
| return nil | |
| } | |
| ctx.Info("Go generate completed.") | |
| } | |
| runner := r.process.Env(map[string]string{ | |
| "CGO_ENABLED": "0", | |
| "GOOS": os, | |
| "GOARCH": ctx.Option("arch"), | |
| }) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@console/console/build_command.go` around lines 100 - 107, The code creates
runner := r.process.Env(...) (setting GOOS/GOARCH) before checking
ctx.OptionBool("generate"), causing go generate to run with target env; move the
runner initialization so that the generate branch runs first using the original
process (no GOOS/GOARCH injection), then after the generate branch create runner
via r.process.Env(...) for the cross-build step; update uses of
runner.WithSpinner("Running go generate...").Run(...) and subsequent runner
invocations to use the correct runner (host for generate, target for build).
There was a problem hiding this comment.
Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!
* chore: Update upgrade DB packages (#1374) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * Internalize file rotation logic from goravel/file-rotatelogs (#1375) * Initial plan * Implement internal file rotation to replace goravel/file-rotatelogs Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Improve cleanup logic with glob pattern matching and add comprehensive tests Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Address code review feedback: fix trailing whitespace, add cleanup wait, and make tests deterministic Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * optimize --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> Co-authored-by: Bowen <hwbrzzl@gmail.com> * chore: Update non-major dependencies (#1373) * chore: Update non-major dependencies * optimize * optimize * renovate/non-major-dependencies * optimize --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Bowen <hwbrzzl@gmail.com> * feat: [#726] Add HTTP server and client telemetry instrumentation [5] (#1326) * add http middleware * add http transport * optimise http telemetry package * add test cases for Telemetry middleware * add auto instrumentation configs * add config to enable Telemetry for http clients * add docs for config facade * add ConfigFacade nil warning * disable default telemetry * optimise transport * add kill switch for instrumentation * update the stubs * remove unnecessary handler * optimise log instrumentation * move route registration in the end * lazily initialize middleware and transport to work with new application_builder * optimise channel test * optimise channel test * accept telemetry facade as an input instead of using global instance * use a callback to resolve the telemetry facade instance * optimise grpc handler to remove usage of telemetry and config facade * optimise the grpc handler * use telemetry transport if enabled * optimise http auto instrumentation * optimize log test cases * optimise * optimise * optimise * optimise * revert PR#1357 * fix log test cases * revert GRPC changes * optimise middleware * remove zipkin trace driver * correct GRPC enable condition * correct http transport enable condition * correct log channel enable condition * update go mod * fix test cases * fix test cases * fix test cases * fix tests --------- Co-authored-by: Bowen <hwbrzzl@gmail.com> * chore: optimize runner tests for Windows (#1377) Co-authored-by: Bowen <hwbrzzl@github.com> * chore: Update non-major dependencies (#1378) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix: runner stuck (#1381) * fix: runner stuck * optimize * optimize * optimize * optimize * optimize * chore: Update non-major dependencies (#1382) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat: [#849] Add table support to the console context (#1380) * add table function in cli * add test cases for new method Table * update mocks * add column level styles * fix lint error * move style vars to new file * add GlobalHuhTheme * update go mod tidy * feat: [#546] artisan command up and down to set website Maintenance mode (#1198) * Add up and down command * Use file helper to create files and add unit tests * Fix the foundation.App dependency * Use support/path instead of foundation.App * Add unit test case * Add some missing checks * Add more missing checks * One more * Fix tmpfile path * Use T.TempDir instead of os.TempDir in tests * Add reason to the down command * Add option to the tests * Change the maintenance file name * close created file handles * Defer abort * Fix the linter issue * Add more options to the down command * Use options * Check for maintenance mode respond * Fix down_command_test * Add more unit test cases * Fix more lint issues * Fix lint issue * fix tests * fix tests * fix tests * fix tests * Address PR comments * Fix check_for_maintenance_test * Check Aborts in check_for_maintenance * Rename check_for_maintenance_mode * Fix and Write more unit tests for check_for_maintenance_mode middleware * fix down command * Fix down_command_test * Fix up_command --------- Co-authored-by: Bowen <hwbrzzl@gmail.com> * feat: Laravel-style Collection library (#1134) Merges comprehensive Collection library with 100+ methods for data manipulation. Implements both eager (Collection) and lazy (LazyCollection) evaluation strategies. Closes goravel/goravel#566 Follow-up improvements tracked in: goravel/goravel#883 * Increase route module coverage for factory, provider, and runner wiring paths (#1384) * Initial plan * test(route): cover route factory and service provider paths Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * optimize * optimize --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> Co-authored-by: Bowen <hwbrzzl@gmail.com> * chore: optimize interface (#1389) * Increase crypt module coverage by exercising AES key validation and failure paths (#1385) * Initial plan * test: add crypt AES edge-case coverage Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: improve readability of crypt key-length cases Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: address crypt PR feedback and simplify test structure Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: use configmock EXPECT style in TestNewAES Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: standardize config mock setup across aes tests Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Increase filesystem module test coverage for storage, service provider, and file facade paths (#1387) * Initial plan * Add filesystem application and provider coverage tests Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Polish filesystem coverage tests after review feedback Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Refine filesystem tests based on review feedback Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Apply review style suggestions in filesystem tests Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Increase mail module test coverage to 70%+ with focused unit tests (#1386) * Initial plan * test(mail): add focused unit coverage for application, options, and service provider Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): address review feedback on test specificity and readability Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): merge application unit tests and remove untyped mock matchers Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): deduplicate matchers and tighten queue job assertion Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): use AnythingOfType and any in application tests Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): derive bind callback type string from any signature Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): simplify bind callback type matcher Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): use AnythingOfType for template render expectations Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(mail): restore specific MatchedBy assertions per review clarification Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Increase hash module coverage with targeted tests for driver selection and service provider paths (#1388) * Initial plan * test: increase hash module coverage for driver and provider paths Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: cover hash provider and driver selection paths Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: address hash module review feedback Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: merge hash module tests into application_test Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: use EXPECT API in hash service provider test Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: use any alias in hash singleton callback test Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: add AI instructions file (#1393) * Increase core framework coverage via targeted service provider and builder-path tests (#1391) * Initial plan * Add service provider coverage tests for core modules Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Expand core module coverage tests and validate suite Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Revert unintended test module dependency drift Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Address actionable PR review suggestions in coverage tests Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Finalize review feedback handling Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Revert unintended tests module dependency updates Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Tighten provider test matchers per review feedback Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * Increase infrastructure module coverage by adding Process/Packages/Log/Schedule tests and fixing errors.As target forwarding (#1392) * Initial plan * test(errors): cover As/Unwrap/Ignore/Join edge cases Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(errors): use wrapped error in As coverage test Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module file changes Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: add coverage for process packages log schedule modules Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: refine schedule coverage tests per review Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module dependency updates Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: assert boot no-panic in log and process providers Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: finalize review feedback responses for boot test assertions Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module file changes Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: expand service-layer coverage across Event, Queue, gRPC, Cache, and Console (#1390) * Initial plan * test(event): cover service provider and queued listener dispatch paths Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: finalize event coverage validation Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module dependency updates Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test(event): address review suggestions for robust command matching and queue error path Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: finalize PR feedback follow-up Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module file updates Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: add focused coverage cases for queue grpc cache console Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: clarify queue nil args in empty chain test Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module dependency updates Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * test: avoid nil context in console usage-error test Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: finalize lint ci fix validation Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: revert unintended tests module dependency drift Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: Update non-major dependencies (#1399) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: add generate flag to artisan build command (#1402) * feat: [#911] add query context accessor (#1401) * chore: optimize agents (#1396) * chore: optimize agents * optimize * address comments * Initial plan * fix: backport migrate rollback default handling to v1.17.x Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * chore: align branch tree with v1.17.x before backporting rollback fix Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> * optimize * optimize --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Bowen <hwbrzzl@gmail.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: hwbrzzl <24771476+hwbrzzl@users.noreply.github.com> Co-authored-by: krishan kumar <84431594+krishankumar01@users.noreply.github.com> Co-authored-by: Bowen <hwbrzzl@github.com> Co-authored-by: Mohan Raj <praem1990@gmail.com> Co-authored-by: Ahmed M. Ammar <ahmed3mar@outlook.com> Co-authored-by: 耗子 <haozi@loli.email> Co-authored-by: ALMAS <almas.cc@icloud.com>

📑 Description
This PR adds a
--generate (-g)flag to theartisan buildcommand. When enabled, it runsgo generate ./...before the build step.This makes it easier to include code generation in the build workflow when needed, without changing the default behavior of the command.
Summary by CodeRabbit
New Features
--generateflag (alias-g) to the build command to optionally run code generation prior to building.Tests
✅ Checks