Skip to content

Commit 9d354ae

Browse files
Use PSR-4 autoloading of existing classes; add remaining test files
1 parent c0ae01d commit 9d354ae

22 files changed

+2314
-0
lines changed

.distignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.DS_Store
2+
.git
3+
.gitignore
4+
.gitlab-ci.yml
5+
.editorconfig
6+
.travis.yml
7+
behat.yml
8+
circle.yml
9+
bin/
10+
features/
11+
utils/
12+
*.zip
13+
*.tar.gz

.editorconfig

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# This file is for unifying the coding style for different editors and IDEs
2+
# editorconfig.org
3+
4+
# WordPress Coding Standards
5+
# https://make.wordpress.org/core/handbook/coding-standards/
6+
7+
root = true
8+
9+
[*]
10+
charset = utf-8
11+
end_of_line = lf
12+
insert_final_newline = true
13+
trim_trailing_whitespace = true
14+
indent_style = tab
15+
16+
[{.jshintrc,*.json,*.yml,*.feature}]
17+
indent_style = space
18+
indent_size = 2
19+
20+
[{*.txt,wp-config-sample.php}]
21+
end_of_line = crlf
22+
23+
[composer.json]
24+
indent_style = space
25+
indent_size = 4

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.DS_Store
2+
wp-cli.local.yml
3+
node_modules/
4+
vendor/
5+
*.zip
6+
*.tar.gz
7+
composer.lock

.travis.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
sudo: false
2+
3+
language: php
4+
5+
notifications:
6+
email:
7+
on_success: never
8+
on_failure: change
9+
10+
branches:
11+
only:
12+
- master
13+
14+
cache:
15+
- composer
16+
- $HOME/.composer/cache
17+
18+
env:
19+
global:
20+
- WP_CLI_BIN_DIR=/tmp/wp-cli-phar
21+
22+
matrix:
23+
include:
24+
- php: 7.1
25+
env: WP_VERSION=latest
26+
- php: 7.0
27+
env: WP_VERSION=latest
28+
- php: 5.6
29+
env: WP_VERSION=latest
30+
- php: 5.6
31+
env: WP_VERSION=trunk
32+
- php: 5.3
33+
env: WP_VERSION=latest
34+
35+
before_script:
36+
- phpenv config-rm xdebug.ini
37+
- composer validate
38+
- bash bin/install-package-tests.sh
39+
40+
script: ./vendor/bin/behat --format progress --strict

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
The MIT License (MIT)
2+
3+
Copyright (C) 2011-2017 WP-CLI Development Group (https://github.com/wp-cli/search-replace-command/contributors)
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in
13+
all copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21+
THE SOFTWARE.

README.md

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
wp-cli/search-replace-command
2+
=============================
3+
4+
Search/replace strings in the database.
5+
6+
[![Build Status](https://travis-ci.org/wp-cli/search-replace-command.svg?branch=master)](https://travis-ci.org/wp-cli/search-replace-command)
7+
8+
Quick links: [Using](#using) | [Installing](#installing) | [Contributing](#contributing)
9+
10+
## Using
11+
12+
~~~
13+
wp search-replace <old> <new> [<table>...] [--dry-run] [--network] [--all-tables-with-prefix] [--all-tables] [--export[=<file>]] [--export_insert_size=<rows>] [--skip-columns=<columns>] [--include-columns=<columns>] [--precise] [--recurse-objects] [--verbose] [--regex] [--regex-flags=<regex-flags>]
14+
~~~
15+
16+
Searches through all rows in a selection of tables and replaces
17+
appearances of the first string with the second string.
18+
19+
By default, the command uses tables registered to the $wpdb object. On
20+
multisite, this will just be the tables for the current site unless
21+
--network is specified.
22+
23+
Search/replace intelligently handles PHP serialized data, and does not
24+
change primary key values.
25+
26+
**OPTIONS**
27+
28+
<old>
29+
A string to search for within the database.
30+
31+
<new>
32+
Replace instances of the first string with this new string.
33+
34+
[<table>...]
35+
List of database tables to restrict the replacement to. Wildcards are
36+
supported, e.g. `'wp_*options'` or `'wp_post*'`.
37+
38+
[--dry-run]
39+
Run the entire search/replace operation and show report, but don't save
40+
changes to the database.
41+
42+
[--network]
43+
Search/replace through all the tables registered to $wpdb in a
44+
multisite install.
45+
46+
[--all-tables-with-prefix]
47+
Enable replacement on any tables that match the table prefix even if
48+
not registered on $wpdb.
49+
50+
[--all-tables]
51+
Enable replacement on ALL tables in the database, regardless of the
52+
prefix, and even if not registered on $wpdb. Overrides --network
53+
and --all-tables-with-prefix.
54+
55+
[--export[=<file>]]
56+
Write transformed data as SQL file instead of saving replacements to
57+
the database. If <file> is not supplied, will output to STDOUT.
58+
59+
[--export_insert_size=<rows>]
60+
Define number of rows in single INSERT statement when doing SQL export.
61+
You might want to change this depending on your database configuration
62+
(e.g. if you need to do fewer queries). Default: 50
63+
64+
[--skip-columns=<columns>]
65+
Do not perform the replacement on specific columns. Use commas to
66+
specify multiple columns.
67+
68+
[--include-columns=<columns>]
69+
Perform the replacement on specific columns. Use commas to
70+
specify multiple columns.
71+
72+
[--precise]
73+
Force the use of PHP (instead of SQL) which is more thorough,
74+
but slower.
75+
76+
[--recurse-objects]
77+
Enable recursing into objects to replace strings. Defaults to true;
78+
pass --no-recurse-objects to disable.
79+
80+
[--verbose]
81+
Prints rows to the console as they're updated.
82+
83+
[--regex]
84+
Runs the search using a regular expression (without delimiters).
85+
Warning: search-replace will take about 15-20x longer when using --regex.
86+
87+
[--regex-flags=<regex-flags>]
88+
Pass PCRE modifiers to regex search-replace (e.g. 'i' for case-insensitivity).
89+
90+
**EXAMPLES**
91+
92+
# Search and replace but skip one column
93+
$ wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid
94+
95+
# Run search/replace operation but dont save in database
96+
$ wp search-replace 'foo' 'bar' wp_posts wp_postmeta wp_terms --dry-run
97+
98+
# Run case-insensitive regex search/replace operation (slow)
99+
$ wp search-replace '\[foo id="([0-9]+)"' '[bar id="\1"' --regex --regex-flags='i'
100+
101+
# Turn your production multisite database into a local dev database
102+
$ wp search-replace --url=example.com example.com example.dev 'wp_*options' wp_blogs
103+
104+
# Search/replace to a SQL file without transforming the database
105+
$ wp search-replace foo bar --export=database.sql
106+
107+
# Bash script: Search/replace production to development url (multisite compatible)
108+
#!/bin/bash
109+
if $(wp --url=http://example.com core is-installed --network); then
110+
wp search-replace --url=http://example.com 'http://example.com' 'http://example.dev' --recurse-objects --network --skip-columns=guid
111+
else
112+
wp search-replace 'http://example.com' 'http://example.dev' --recurse-objects --skip-columns=guid
113+
fi
114+
115+
## Installing
116+
117+
Installing this package requires WP-CLI v0.23.0 or greater. Update to the latest stable release with `wp cli update`.
118+
119+
Once you've done so, you can install this package with `wp package install wp-cli/search-replace-command`.
120+
121+
## Contributing
122+
123+
We appreciate you taking the initiative to contribute to this project.
124+
125+
Contributing isn’t limited to just code. We encourage you to contribute in the way that best fits your abilities, by writing tutorials, giving a demo at your local meetup, helping other users with their support questions, or revising our documentation.
126+
127+
### Reporting a bug
128+
129+
Think you’ve found a bug? We’d love for you to help us get it fixed.
130+
131+
Before you create a new issue, you should [search existing issues](https://github.com/wp-cli/search-replace-command/issues?q=label%3Abug%20) to see if there’s an existing resolution to it, or if it’s already been fixed in a newer version.
132+
133+
Once you’ve done a bit of searching and discovered there isn’t an open or fixed issue for your bug, please [create a new issue](https://github.com/wp-cli/search-replace-command/issues/new) with the following:
134+
135+
1. What you were doing (e.g. "When I run `wp post list`").
136+
2. What you saw (e.g. "I see a fatal about a class being undefined.").
137+
3. What you expected to see (e.g. "I expected to see the list of posts.")
138+
139+
Include as much detail as you can, and clear steps to reproduce if possible.
140+
141+
### Creating a pull request
142+
143+
Want to contribute a new feature? Please first [open a new issue](https://github.com/wp-cli/search-replace-command/issues/new) to discuss whether the feature is a good fit for the project.
144+
145+
Once you've decided to commit the time to seeing your pull request through, please follow our guidelines for creating a pull request to make sure it's a pleasant experience:
146+
147+
1. Create a feature branch for each contribution.
148+
2. Submit your pull request early for feedback.
149+
3. Include functional tests with your changes. [Read the WP-CLI documentation](https://wp-cli.org/docs/pull-requests/#functional-tests) for an introduction.
150+
4. Follow the [WordPress Coding Standards](http://make.wordpress.org/core/handbook/coding-standards/).
151+
152+
153+
*This README.md is generated dynamically from the project's codebase using `wp scaffold package-readme` ([doc](https://github.com/wp-cli/scaffold-package-command#wp-scaffold-package-readme)). To suggest changes, please submit a pull request against the corresponding part of the codebase.*

bin/install-package-tests.sh

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
set -ex
4+
5+
WP_CLI_BIN_DIR=${WP_CLI_BIN_DIR-/tmp/wp-cli-phar}
6+
7+
PACKAGE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../ && pwd )"
8+
9+
download() {
10+
if [ `which curl` ]; then
11+
curl -s "$1" > "$2";
12+
elif [ `which wget` ]; then
13+
wget -nv -O "$2" "$1"
14+
fi
15+
}
16+
17+
install_wp_cli() {
18+
19+
# the Behat test suite will pick up the executable found in $WP_CLI_BIN_DIR
20+
mkdir -p $WP_CLI_BIN_DIR
21+
download https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar $WP_CLI_BIN_DIR/wp
22+
chmod +x $WP_CLI_BIN_DIR/wp
23+
24+
}
25+
26+
download_behat() {
27+
28+
cd $PACKAGE_DIR
29+
composer require --dev behat/behat='~2.5'
30+
31+
}
32+
33+
install_db() {
34+
mysql -e 'CREATE DATABASE IF NOT EXISTS wp_cli_test;' -uroot
35+
mysql -e 'GRANT ALL PRIVILEGES ON wp_cli_test.* TO "wp_cli_test"@"localhost" IDENTIFIED BY "password1"' -uroot
36+
}
37+
38+
install_wp_cli
39+
download_behat
40+
install_db

composer.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"name": "wp-cli/search-replace-command",
3+
"description": "Search/replace strings in the database.",
4+
"type": "wp-cli-package",
5+
"homepage": "https://github.com/wp-cli/search-replace-command",
6+
"support": {
7+
"issues": "https://github.com/wp-cli/search-replace-command/issues"
8+
},
9+
"license": "MIT",
10+
"authors": [
11+
{
12+
"name": "Daniel Bachhuber",
13+
"email": "daniel@runcommand.io",
14+
"homepage": "https://runcommand.io"
15+
}
16+
],
17+
"minimum-stability": "dev",
18+
"autoload": {
19+
"psr-4": {
20+
"": "src/",
21+
"WP_CLI\\": "src/WP_CLI"
22+
},
23+
"files": [ "search-replace-command.php" ]
24+
},
25+
"require": {},
26+
"require-dev": {
27+
"behat/behat": "~2.5"
28+
},
29+
"extra": {
30+
"commands": [
31+
"search-replace"
32+
]
33+
}
34+
}

0 commit comments

Comments
 (0)