ShorebirdPatchCommand class

Main coordinator command for all Shorebird patch operations.

This command serves as the parent command for all platform-specific patch commands. It provides a unified entry point for creating Shorebird patches across different platforms.

Subcommands

Platform Patch Commands

  • android: Create patches for Android applications
  • ios: Create patches for iOS applications

Usage

# Create Android patch
morpheme shorebird patch android --flavor prod

# Create iOS patch
morpheme shorebird patch ios --flavor prod

Common Options

All patch subcommands support these common options:

  • --flavor: Build flavor (dev, staging, prod)
  • --target: Main entry point file
  • --morpheme-yaml: Path to morpheme.yaml configuration
  • --build-number: Build number for targeting specific release
  • --build-name: Build name for targeting specific release
  • --split-debug-info: Path for split debug information
  • --generate-l10n: Generate localization files

Platform-specific options are available for each subcommand.

Patch Workflow

Each patch command follows this workflow:

  1. Validate command arguments and configuration
  2. Setup environment (localization, Firebase, Shorebird)
  3. Build and execute the Shorebird patch command
  4. Report success or handle errors

Patch Targeting

Patches are applied to specific releases identified by:

  • Build number and build name combination
  • Release version string
  • Shorebird release ID

Examples

Create a development Android patch:

morpheme shorebird patch android --flavor dev

Create a production Android patch targeting specific release:

morpheme shorebird patch android --flavor prod --build-number 123 --build-name 1.2.3

Create an iOS patch for staging environment:

morpheme shorebird patch ios --flavor staging --export-method ad-hoc

Best Practices

  • Always test patches in development/staging before production
  • Ensure patch configuration matches the target release
  • Verify that the code changes are compatible with patching
  • Monitor patch deployment and rollback if necessary

Limitations

  • Not all code changes can be patched (native code, assets)
  • Patches must be compatible with the target release
  • Some Flutter framework changes may require full releases
Inheritance

Constructors

ShorebirdPatchCommand()
Creates a new patch command with all platform-specific subcommands.

Properties

aliases List<String>
Alternate names for this command.
no setterinherited
argParser ArgParser
The argument parser for this command.
no setterinherited
argResults ArgResults?
The parsed argument results for this command.
no setterinherited
category String
The command's category.
no setterinherited
description String
A description of this command, included in usage.
no setteroverride
globalResults ArgResults?
The parsed global argument results.
no setterinherited
hashCode int
The hash code for this object.
no setterinherited
hidden bool
Whether or not this command should be hidden from help listings.
no setterinherited
invocation String
A single-line template for how to invoke this command (e.g. "pub get package").
no setterinherited
name String
The name of this command.
no setteroverride
parent Command?
The command's parent command, if this is a subcommand.
no setterinherited
runner CommandRunner?
The command runner for this command.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
subcommands Map<String, Command>
An unmodifiable view of all sublevel commands of this command.
no setterinherited
suggestionAliases List<String>
Alternate non-functional names for this command.
no setterinherited
summary String
A short description of this command, included in parent's CommandRunner.usage.
no setterinherited
takesArguments bool
Whether or not this command takes positional arguments in addition to options.
no setterinherited
usage String
Generates a string displaying usage information for this command.
no setterinherited
usageFooter String?
An optional footer for usage.
no setterinherited

Methods

addSubcommand(Command command) → void
Adds Command as a subcommand of this.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
printUsage() → void
Prints the usage information for this command.
inherited
run() FutureOr?
Runs this command.
inherited
toString() String
A string representation of this object.
inherited
usageException(String message) → Never
Throws a UsageException with message.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited