RefactorCommand class
Command for comprehensive project refactoring and renaming operations.
This command provides systematic renaming capabilities for Flutter projects, enabling developers to change project names, class names, and file names while maintaining code integrity and consistency across all references.
Purpose:
- Rename project components systematically across all modules
- Update configuration files (pubspec.yaml, morpheme.yaml)
- Refactor code references and imports
- Support library component renaming with dependency management
- Maintain project structure integrity during renaming operations
Refactoring Scope:
- Project name in configuration files
- Class names and file names throughout the codebase
- Import statements and references
- Library package names and dependencies
- Asset references and localization keys
Usage Examples:
# Basic project renaming
morpheme refactor --old-name myapp --new-name newapp
# Include library refactoring
morpheme refactor --old-name myapp --new-name newapp --include-library
# Exclude specific changes
morpheme refactor --old-name myapp --new-name newapp --exclude-changes "MyAppConfig,myapp_constants"
# Exclude specific files
morpheme refactor --old-name myapp --new-name newapp --exclude-files "lib/generated/,test/mocks/"
Parameters:
--old-name(-o): Current project name to be replaced (default: 'morpheme')--new-name(-n): New project name (required)--exclude-changes: Comma-separated list of code patterns to exclude from renaming--exclude-files: Comma-separated list of file paths to exclude from renaming--exclude-directories: Comma-separated list of directories to exclude entirely--include-library: Include library component refactoring (default: false)
Process Flow:
- Update morpheme.yaml project configuration
- Refactor pubspec.yaml and project dependencies
- Rename files and update class names throughout codebase
- Process library components if requested
- Restore dependencies and validate project integrity
Safety Features:
- Validation of source and target names
- Exclusion patterns to protect critical code
- Backup and recovery mechanisms
- Dependency restoration after refactoring
Library Refactoring:
When --include-library is enabled, the command will:
- Clone latest library components from the official repository
- Update library package names and dependencies
- Maintain library structure while adapting to new naming
- Clean up temporary files and unused components
Exceptions:
- Throws
ValidationExceptionif old and new names are identical - Throws FileSystemException if file operations fail
- Throws
DependencyExceptionif dependency restoration fails - Throws
NetworkExceptionif library cloning fails (when --include-library is used)
Example Configuration:
# morpheme.yaml
project_name: my_awesome_app
# After refactoring with --new-name "my_new_app"
project_name: my_new_app
Constructors
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 setteroverride
- 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
-
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 getpackage").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
-
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(
) → void -
Runs this command.
override
-
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