McBasic™Get McBasic™ ↗
Build 881
Developer tooling

Command-line reference

Use the IDE for the visual workflow or the developer CLI for reproducible checks and builds.

Before running commands#

The examples use mcbasic as the command name. In a development checkout, use ./eng/mcbasic after building the toolchain with ./eng/dotnet.sh. Do not assume a Mac App Store application has installed a global shell command.

Current command syntax#

Help extracted from the current CLI implementation
McBasic CLI (Mac development)
  mcbasic doctor [--json]
  mcbasic ai-reference-index
  mcbasic new <Name>[.mcbproj] --template desktop|blank|mdi|control|library [--json]
  mcbasic convert <legacy-folder> [--output <Name>.mcbproj] [--json]
  mcbasic import-vb6 <project.vbp|folder> [--output <Name>.mcbproj] [--codepage <n>] [--analyze] [--json]
  mcbasic check <file.bas|Project.mcbproj> [package options] [--json]
  mcbasic test <Project.mcbproj> [--timeout seconds] [--json]
  mcbasic add-form <Project.mcbproj> <FormName> [--json]
  mcbasic build|run <input> [--configuration Debug|Release] [package options] [--json]
  mcbasic publish <Project.mcbproj> --rid osx-arm64|osx-x64|win-x64|win-arm64|linux-x64|linux-arm64 --format app|package [--publication-profile mac-compatible|mac-app-store] [--output <folder>] [package options] [--json]
  mcbasic package build <Library.mcbproj> [--rid osx-arm64|osx-x64] [--output <folder>] [package options] [--json]
  mcbasic package verify <archive.mbpkg> --target osx-arm64|osx-x64 [trust options] [--json]
  mcbasic package compare <first.mbpkg> <second.mbpkg> --target osx-arm64|osx-x64 [trust options] [--json]
  mcbasic package runtime-check <archive.mbpkg> --target osx-arm64|osx-x64 [--timeout-seconds 1..120] [trust options] [--json]
  mcbasic distribute <Project.mcbproj> --profile <absolute public-profile.json> --output-plan <absolute new file> --prepare-only [--rid osx-arm64|osx-x64] [package options] [--json]
  mcbasic distribute sign-local <absolute plan.json> --output <absolute new Signed.app> --authorize-signing [--json]
  mcbasic distribute sign-release <absolute plan.json> --output <absolute new Signed.app> --authorize-signing --authorize-apple-timestamp [--json]
  mcbasic distribute launch-check <absolute Signed.app> --authorize-run [--json]
  mcbasic distribute submit|poll|log <absolute notary-state.json> --profile <absolute public-profile.json> --authorize-apple-contact [--json]
  mcbasic distribute reconcile <absolute notary-state.json> --profile <absolute public-profile.json> --authorize-apple-contact --submission-id <UUID> [--json]
  mcbasic distribute staple <absolute accepted notary-state.json> --output <absolute new Stapled.app> --authorize-apple-contact [--json]
  mcbasic distribute dmg <absolute Stapled.app> --output <absolute new Release.dmg> --authorize-apple-contact [--json]
  mcbasic distribute dmg-sign <absolute pending.dmg> --profile <absolute public-profile.json> --output <absolute new Signed.dmg> --authorize-signing --authorize-apple-timestamp [--json]
  mcbasic distribute dmg-state init <absolute Signed.dmg> --output <absolute new state.json> | show <absolute state.json>
  mcbasic distribute dmg-submit|dmg-poll|dmg-log <absolute dmg-state.json> --profile <absolute public-profile.json> --authorize-apple-contact [--json]
  mcbasic distribute dmg-reconcile <absolute dmg-state.json> --profile <absolute public-profile.json> --authorize-apple-contact --submission-id <UUID> [--json]
  mcbasic distribute dmg-staple <absolute accepted dmg-state.json> --output <absolute new Stapled.dmg> --authorize-apple-contact [--json]
  mcbasic distribute install-check <absolute Release.dmg> --output <absolute new Installed.app> --authorize-run --authorize-apple-contact [--json]
  mcbasic package add <Project.mcbproj> <archive.mbpkg> --package-cache <absolute directory> --package-target osx-arm64|osx-x64 [trust options] [--json]
  mcbasic package-install <Project.mcbproj> <archive.mbpkg> [package options] [--json]
  mcbasic package-csharp <assembly.dll> --output package.mbpkg --package-id id --version 1.0.0 --minimum-mcbasic-version 0.1.0 --vendor name --description text --assembly-path lib/net10.0/control.dll --license-spdx MIT --license-path licenses/LICENSE.txt --license-source LICENSE.txt --platform osx-arm64|osx-x64 [--json]
Trust options: --trusted-publisher-keys <absolute public-keys.json>, or --developer-mode true --acknowledge-unsigned true. Package options: --package-lock <McBasic.lock> --package-cache <absolute directory> --package-target osx-arm64|osx-x64 plus trust options. Package verify performs static SDK admission; package compare proves identical unsigned content inventories from two rebuilds; package runtime-check builds and runs an owned generated consumer. Library certification requires one Public Function McBasicPluginSelfTest() As Boolean in a standard module. Each command reports its partial gate and does not claim full SDK certification. Run executes application projects. Publish creates a local unsigned self-contained app or a validated Library/UserControlLibrary .mbpkg in the build cache, which retires it after 24 hours; --output <folder> (never inside a .mcbproj, an app or another bundle) keeps a copy there and never overwrites. BASIC debugging is available in the Mac IDE. CLI debug and end-to-end distribute are not implemented; prepare-only records an unsigned plan, sign-local uses a selected Keychain identity without timestamp contact; sign-release additionally requires explicit Apple timestamp authorization, and submit/poll/log/reconcile require separate Apple-contact authorization.
Source baseline 20f4bfed6b · Build manifest