feat: one-line installer + interactive d365fo init wizard - #136
Merged
Conversation
install.ps1 / install.sh check for the .NET SDK, clone or update the repo, publish a self-contained d365fo binary onto PATH, and hand off to d365fo init. Env vars (D365FO_CLI_DIR, D365FO_CLI_YES, D365FO_CLI_NO_WIZARD, D365FO_CLI_RUN_EXTRACT) configure the non-flag piped install since the script runs through iex/bash. d365fo init now runs an interactive wizard when invoked bare in a real terminal (TTY, no --output, no --dry-run, no explicit --packages) — confirms the detected PackagesLocalDirectory or asks for one, an optional UDE extra root, label languages, and whether to build the index now. Any explicit flag, non-TTY, or --no-wizard skips straight to the existing flag-driven path, so CI/scripted usage is unaffected. README/SETUP/CONFIGURATION/EXAMPLES/TROUBLESHOOTING updated to lead with the one-line install path, with the manual steps kept as a fallback for anyone who doesn't want to pipe a remote script. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
install.ps1/install.shat the repo root: check for the .NET SDK, clone-or-update the repo,dotnet publisha self-containedd365fobinary ontoPATH, then hand off tod365fo initandd365fo doctor. Safe to re-run.d365fo initgains an interactive wizard: invoked bare in a real terminal (TTY, no--output, no--dry-run, no explicit--packages) it confirms the detectedPackagesLocalDirectory(or asks for one), an optional UDE extra root, label languages, and whether to build the index now — then writes the same config the flag-driven path would. Any explicit flag, non-TTY, or the new--no-wizardskips straight to the existing behavior, so CI/scriptedd365fo init --packages ... --persist-profilecalls are unaffected.--label-languagesand--no-wizardoptions onInitCommand.Why
Today's only install path is
git clone+dotnet build, then a hand-rund365fo init --packages ... --persist-profile. This closes that gap with a single piped command, mirroring the ergonomics of upstreamd365fo-mcp-server's own setup wizard but adapted to this repo's actual distribution story (git-clone-and-publish, not npm/NuGet — there is no package registry yet).Docs
README/SETUP/CONFIGURATION/EXAMPLES/TROUBLESHOOTING updated to lead with the one-line install, with the existing manual steps kept as a documented fallback (
<details>in README, "Prefer to run the steps yourself") for anyone who doesn't want to pipe a remote script.Scope note
This branch is deliberately installer-only. A separate, unrelated architecture-doc/diagram drift audit (stale tool counts, missing HTTP-transport/journal/undo/connect sections) is in #135 — kept apart so each PR reviews cleanly on its own.
Test plan
pwsh -File install.ps1on a clean machine / fresh checkout — verify SDK check, publish, andd365fo inithandoffbash install.shon macOS/Linux — verify read/search/scaffold path only, no build/sync/test/bp claimsd365fo initbare in an interactive terminal — wizard prompts appear, writes settings.json + $PROFILEd365fo init --packages ... --persist-profile(flag-driven) andd365fo init --output json(piped/non-TTY) — wizard does NOT trigger, existing behavior unchangedd365fo init --no-wizardin a terminal — flag-driven path forced even with a TTY🤖 Generated with Claude Code