welaika/wordmove
44.3
Weak · 19 September 2026
1.5k
lines of production code
Ruby
primary language
1
measurement over time
What this system is
Wordmove is a Ruby-based command-line tool designed to synchronize WordPress environments between local and remote hosts. It facilitates the push and pull of database and file assets using pluggable deployers like SSH and FTP, alongside SQL adapters that leverage WP-CLI for robust database search-and-replace operations. The system includes a diagnostic 'doctor' suite to validate environment configurations and supports automated setup via Movefile generation.
How it got here
2011 — Initial project scaffolding and gem packaging
7 changes.
This period established the foundational structure of the Wordmove project, including repository initialization, dependency management via Bundler, and the creation of the core library entry point. It introduced essential tooling such as the CLI, environment validation via the 'doctor' command, and automated configuration generation, while simultaneously setting up a comprehensive test suite to ensure code quality and reliability.
2012–2013 — v4.0.0 architectural overhaul
6 changes.
This period focused on the major v4.0.0 release, which introduced a pluggable Deployer system, a comprehensive Hook mechanism, and a new Doctor diagnostic suite. The work included implementing full FTP deployment support, enhancing SSH capabilities, and updating MySQL dump/import scripts to handle large databases more reliably. Extensive test coverage was added to validate the new architecture, configuration generation, and database operations.
2015–2019 — WP-CLI SQL adapter and test expansion
9 changes.
This period focused on enhancing database synchronization capabilities by introducing a new WP-CLI-based SQL adapter for more robust search-and-replace operations. The work was accompanied by significant expansion of the test suite, adding comprehensive coverage for the new adapters, the Doctor subsystem, and the Logger component. Additionally, the release included the establishment of a CLI executable entry point and a deployment trigger script.
Features
Added Bundler-generated binstubs for development and runtime tools
The \bin/\ directory now includes a comprehensive set of executable binstubs generated by Bundler, including \bundle\, \bundler\, \byebug\, \coderay\, \htmldiff\, \kwalify\, \ldiff\, \pry\, \rake\, \rspec\, \rubocop\, \ruby-parse\, \ruby-rewrite\, \rumoji\, \thor\, and \wordmove\. These scripts ensure that commands run against the specific gem versions defined in the project's \Gemfile\, isolating the development environment from system-wide installations. Additionally, \bin/console\ provides a Pry-based interactive shell for experimentation, and \bin/setup\ automates the initial \bundle install\ process.
bin · high confidence
Added deployment trigger script
A new deploy script (deploy/deploy.sh) has been added to the repository. This script sends an HTTP POST request to a configurable endpoint ($DOCKER\_TRIGGER) with a JSON content type, likely intended to trigger external build processes such as Docker image builds.
deploy · high confidence
Automated Movefile generation with database auto-detection
The \wordmove init\ command now automatically generates a \movefile.yml\ configuration file by reading the local WordPress \wp-config.php\ to populate database credentials and the current directory as the WordPress path. The generated template includes default settings for local and production environments, pre-configured exclusion lists for version control and temporary files, and commented-out sections for advanced features like SFTP/FTP transport, custom hooks, and the new 'forbid' capability to restrict specific push/pull actions.
lib/wordmove/generators · high confidence
Executable entry point for Wordmove CLI
A new executable script has been added at exe/wordmove to serve as the command-line entry point for the application. This script sets up the Ruby load path to include the local lib directory and invokes the Wordmove CLI, allowing users to run Wordmove commands directly from the command line.
exe · high confidence
FTP deployer implementation and SSH deployer enhancements
The FTP deployer is now fully implemented, supporting database push/pull operations via PHP scripts, file synchronization for uploads, themes, plugins, and other directories, and respecting the --simulate flag. The SSH deployer has been enhanced to support the --debug option for logging dump locations, properly handles rsync's --dry-run during simulation, and includes improved path handling for include/exclude patterns.
lib/wordmove/deployer · high confidence
Initial library structure and dependency integration
The lib/wordmove.rb file is introduced to serve as the central entry point for the library, consolidating all necessary dependencies and internal modules. This change integrates external libraries such as Active Support, Colorize, Dotenv, Kwalify, Thor, and Photocopier, while also loading core components including the CLI, Doctor suite (for movefile, mysql, rsync, ssh, and wpcli checks), deployers (FTP and SSH with SQL adapters), and movefile generators. This establishes the foundational module structure required for the application to function.
lib · high confidence
New SQL adapter implementations for database migration
Wordmove now includes two new SQL adapter classes: \SqlAdapter::Default\ and \SqlAdapter::Wpcli\. The \Default\ adapter handles SQL file adaptation by performing serialized and simple string replacements for WordPress paths and virtual hosts. The \Wpcli\ adapter leverages the WP-CLI tool for database search-and-replace operations, introducing support for the \--allow-root\ flag and improved configuration detection by checking for \wp-cli.yml\ files before applying path options.
_lib/wordmove/sql\adapter · high confidence
Project initialization and configuration scaffolding
The repository is initialized with essential configuration files to support development and distribution. A \.ruby-version\ file sets the runtime to Ruby 2.6.5, and a \.rubocop.yml\ file establishes code style rules targeting this version. The project structure includes a \Rakefile\ for running specs and linting, a \.rspec\ configuration for test execution, and a \.gitignore\ file to exclude build artifacts and IDE files. Documentation is standardized with a \CONTRIBUTING.md\ guide, an \MIT LICENSE\, and a \CHANGELOG.md\ pointing to GitHub releases, while the legacy \README\ file is removed in favor of \README.mdown\.
(repo-wide) · high confidence
Behavioural changes
New MySQL dump/import scripts and Movefile validation schema
The local Movefile validation schema now enforces required database credentials and supports FTP port configuration, while also introducing configurable hooks that can be set to not raise on failure. Additionally, the MySQL dump and import assets have been updated: the dump script now supports database views and character sets, and the import script has been upgraded to BigDump version 0.36b to handle large SQL dumps more reliably.
lib/wordmove/assets · high confidence
Refactored SSH SQL adapters to support WP-CLI based search-replace
The SSH deployer's SQL handling has been restructured into two distinct adapters: \DefaultSqlAdapter\ and \WpcliSqlAdapter\. The new \WpcliSqlAdapter\ changes how database URL adaptation is performed during push/pull operations by utilizing WP-CLI's \search-replace\ command instead of the previous generic SQL adapter approach. This allows for more robust handling of WordPress-specific paths and virtual hosts during database synchronization, while the \DefaultSqlAdapter\ retains the original behavior for users who do not opt into the WP-CLI method.
lib/wordmove/deployer/ssh · high confidence
Wordmove 5.2.2: CLI, Doctor, and Logging overhaul
Wordmove has been updated to version 5.2.2, introducing a refactored command-line interface that now requires explicit selection of WordPress components (such as database, plugins, or themes) for push and pull operations, or the use of the 'all' flag. A new 'doctor' command has been added to validate local environment configurations, including checks for Movefile syntax, MySQL, WP-CLI, Rsync, and SSH. The release also features a new structured logging system that supports secret masking and colored output, alongside a set of new exception classes for better error handling.
lib/wordmove · high confidence
Wordmove v4.0.0 introduces major architectural overhaul and new capabilities
This release refactors the core architecture, introducing a new Deployer system with pluggable SQL adapters (wpcli and default) and a comprehensive Hook system that allows configurable local and remote commands to run before or after core actions. The Movefile configuration is enhanced with Ruby code execution, YAML aliases, and a new 'secrets' mechanism to prevent sensitive data leakage in logs. A new 'Doctor' suite provides detailed diagnostics for Movefile syntax, MySQL connectivity, rsync, SSH, and WP-CLI installations. Additionally, the tool now supports Must Use (mu) plugins, allows custom mysqldump and mysql options, and improves database import performance for large dumps by setting autocommit=0.
wordmove · high confidence
Test coverage
Added SQL dump fixture for WordPress database tests; Added comprehensive test suite for CLI, hooks, and configuration; Added feature tests for Movefile generation; Added fixture helper methods for test support; Added test coverage for SQL adapter implementations; Added test coverage for doctor subsystem components; Added tests for Wordmove::Deployer::Base factory and SQL command generation; Added tests for the Logger component; Updated Movefile fixtures for testing hooks, secrets, and SQL adapters.
Dependencies
Initial gem release with Ruby 2.6+ and modern dependency constraints
This change introduces the initial packaging of Wordmove as a Ruby gem, establishing the project's dependency structure and runtime requirements. The gem now requires Ruby version 2.6.0 or higher and bundles specific runtime dependencies including Active Support (\~\> 6.1), Colorize (\~\> 0.8.1), Dotenv (\~\> 2.7.5), Kwalify, Photocopier (\~\> 1.4), and Thor (\~\> 0.20.3). Development dependencies are also defined for testing and linting, such as RSpec (\~\> 3.9), Rubocop (\~\> 0.76.0), and Bundler (\~\> 2.0). Additionally, a post-install message informs users of breaking changes in version 3.0.0 regarding the removal of the \database.charset\ option and the shift to using WP-CLI as the default SQL adapter.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 44.
Lenses
- Code Health 100
- Architecture 100
- Maturity 21
- Readiness 60
- Security 94
- Accessibility 48
Changes since last survey
- 300 commits — 251 feature/other, 49 fixes
By area
- lib/wordmove — 151 commits
- (root) — 61 commits
- (repo) — 48 commits
- .github/ISSUE_TEMPLATE — 6 commits
- spec/fixtures — 6 commits
- spec/hook_spec.rb — 5 commits
- spec/sql_adapter — 5 commits
- .github/stale.yml — 4 commits
- spec/deployer — 2 commits
- spec/logger — 2 commits
- spec/support — 2 commits
- bin/bundle — 1 commit
- bin/rake — 1 commit
- deploy/deploy.sh — 1 commit
- lib/wordmove.rb — 1 commit
- spec/docotor_spec.rb — 1 commit
- spec/features — 1 commit
- spec/movefile_spec.rb — 1 commit
- spec/spec_helper.rb — 1 commit
Notable commits
- fix: Code style fixes
- fix: Code style fixes
- fix: Code style fixes
- fix: Fix Config#empty? spec
- fix: Fix and refactor hook specs
- fix: Fix bug in .logger method in Local and Remote classes
- fix: Fix code linting
- fix: Fix doctor's local schema validation
- fix: Fix mu-plugins key in mu_plugins. Fixes #619
- fix: Fix test
- fix: Fix test
- fix: Hotfix: newlines around loggers were really useful
- fix: Hotfix: update movefile generator
- fix: Merge pull request #584 from akiko-pusu/fix-rubocop-todo
- fix: Reintroduce before_install and fix the version declaration
- fix: Revert "dynamically defined method calls 'super': could be useful in future"
- fix: Style fixes
- fix: Style fixes
- fix: bug 479: manage scenarios where custom paths doesn't have a common root
- fix: fix #402
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
welaika/wordmove was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4927925dff3e51d29d48e49d9e23e9dd48627ecc — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.