vccwを使ってwordpressをローカル上にホイホイセットするプログラム

```
#!/bin/bash
# set -ex
# Generate vccw
tput setaf 6 && echo "vccwのディレクトリとHOSTとなる名称を入力してください..."
read HOSTNAME
THEMEDIR=wp-content/themes/
tput setaf 6 && echo "themeを入力してください..."
read THEMENAME
# THEMEDIRECTORY = $THEMEDIR$THEMENAME

tput setaf 6 && echo "\nTASK [ wp scaffold vccw vccw-${HOSTNAME} ]******************************************************"

# WP-CLIの有無
# WP-CLI パッケージが必要
# https://qiita.com/miya0001/items/687d142d714b1386a44f
# https://github.com/vccw-team/scaffold-vccw
if [ -x "`which wp `" ]; then #WP-CLI をインストールしてあれば
	VCCW_IP_COUNT=$(grep "ip:" ~/.lafcre8/laf_vccw_setting | sed -e s/ip://g | sed -n 1p)
	VCCW_IP_COUNT_UP=$(expr $VCCW_IP_COUNT + 1)
	IP="ip:"
	echo "$IP$VCCW_IP_COUNT_UP" > ~/.lafcre8/laf_vccw_setting
	wp scaffold vccw vccw-$HOSTNAME --host=$HOSTNAME.test --lang=ja --ip=192.168.33.$VCCW_IP_COUNT_UP
	cd vccw-$HOSTNAME
else
	echo 'wp-cliをインストールしてください...'
	exit
fi
```
まずwp-cliでvccwを設置。これはvccwのパッケージだったかな・・
毎回IPをセットするのもだるいので記録するファイルを用意してそこにカウントしておいてます。



```
# Git リポジトリ作成
mkdir wordpress
tput setaf 6 && echo "gitリポジトリを登録してください..."
open /Applications/SourceTree.app
read -p '追加しましたか？（y/n）' _key
if [ "${_key}" = "n" ] ;then
	echo 'gitリポジトリを追加してください...'
	exit
fi
```
Gitの登録も地味にしんどいのですべて流れで作成してしまおうということにしています。


```
# Atom プロジェクト追加
tput setaf 6 && echo "ProjectManegerに追加してください..."
open /Applications/Atom.app
read -p '追加しましたか？（y/n）' _key
if [ "${_key}" = "n" ] ;then
	echo 'ProjectManegerに追加してください...'
	exit
fi

```

エディタはAtomを使用していてショートカットでファイルのディレクトリ管理などができるので登録しています。

```
tput setaf 6 && echo '\nTASK [ vagrant up ]************************************************************'
vagrant up
```

ここで[vagrant up]

```
# サーバーごとのMovefile の設置
tput setaf 6 && echo '\nTASK [ copy Movefile ]************************************************************'
sh ~/.lafcre8/wordpress/movefile/__vccw_movefile_copy_xserver.sh
```

いくつかのサーバーでサイト管理をしてますがそれぞれの記述が記入されたMovefileをコピーして持ってくるスクリプトが[__vccw_movefile_copy_xserver.sh]にかかれてます。


```
tput setaf 7 && echo "Movefile をコピーします..."
DIR=`pwd | awk -F "/" '{ print $NF }'`
# echo $DIR
read -p '対象サーバーを指定してください...（  [1] /  [2] /  [3] /  [4]/  [5]/  [6] ）' _key
if [ "${_key}" = "n" ] ;then
echo 'lafcre8用Movefileを設置します...'
cp ~/.lafcre8/xxx/Movefile.yml ~/$DIR
elif [ "${_key}" = "2" ];then
echo 'lafcre8用Movefileを設置します...'
cp ~/.lafcre8/xxx/Movefile.yml ~/$DIR
fi
exit
```
対象サーバーの対応keyを打つことでvccw設置ディレクトリへMovefileのコピーを設置します。

```
# wordmove用にssh-keyのコピー
tput setaf 6 && echo '\nTASK [ copy id_rsa ]************************************************************'
read -p '対象サーバーはxxxxx.xxxx.com ？（y/n）' _key
if [ "${_key}" = "n" ] ;then
	echo 'id_rsaを設置します...'
	sh ~/.lafcre8/__vccw_cp_rsa.sh
else
	echo 'id_rsaを設置します...'
	sh ~/.lafcre8/__vccw_cp_rsa2.sh
fi
```
ssh接続するためにサーバーごとに対応public keyを変更。
最初はサーバーごとに変更した方がよいかなと思っていたけど一緒でも問題ないのかなと。
同じpublic keyをコピーして配置するように設定

```
# wordpress ディレクトリにファイル設置
cd wordpress
tput setaf 6 && echo '\nTASK [ sudo cat ~/.lafcre8/.gitignore >> .gitignore ]**************************'
sudo cat ~/.lafcre8/.gitignore >> .gitignore
tput setaf 6 && echo '\nTASK [ sudo cat ~/.lafcre8/.editorconfig >> .editorconfig ]********************'
sudo cat ~/.lafcre8/.editorconfig >> .editorconfig

if [ -e $THEMEDIR ];then
	cd $THEMEDIR
else
	echo 'themeディレクトリが存在していません...[ vagrant up ]しなおして下さい...'
	exit
fi

# theme 設置
tput setaf 6 && echo '\nTASK [ wp scaffold _s ]********************************************************'
if [ ! -e $THEMENAME ];then
	vagrant ssh -c "wp scaffold _s $THEMENAME --theme_name=\"$THEMENAME\" --sassify"
	tput setaf 6 && echo "\nTASK [ wp theme activate $THEMENAME ]**************************************"
	vagrant ssh -c "wp theme activate $THEMENAME"
else
	tput setaf 2 && echo 'そのthemeはすでに使用されています。--activate します...'
	vagrant ssh -c "wp theme activate $THEMENAME"
	cd $THEMENAME
	sudo cp ~/.lafcre8/__vccw_gulp_set.sh .
	exit
fi

# Gulp setting
cd $THEMENAME
tput setaf 6 && echo '\nTASK [ npm install ]***********************************************************'
if [ -e package.json  ]; then
	tput setaf 2 && echo '[OK] package.jsonがセットされています...'
else
	sudo cp ~/.lafcre8/package.json .
	tput setaf 2 && echo '[OK] package.jsonをセットしました...'
fi
# npm init
npm install

tput setaf 6 && echo "\nTASK [ cp ~/.lafcre8/gulpfile.js ]*********************************************"
if [ -e gulpfile.js  ]; then
	tput setaf 2 && echo '[OK] gulpfile.jsがセットされています...'
else
	cp ~/.lafcre8/gulpfile.js .
	tput setaf 2 && echo '[OK] gulpfile.jsをセットしました...'
fi

tput setaf 6 && echo "gulpfile.js の proxy を設定します... [http://$HOSTNAME.test]"
sed -i -e "s/http:\/\/xxxx.test/http:\/\/$HOSTNAME.test/g" gulpfile.js


if [ -e sass/theme  ]; then
	tput setaf 2 && echo '[ERROR] sass/themeがセットされています...'
else
	# sass/theme ディレクトリ 設置
	tput setaf 6 && echo '\nTASK [ cp sass/theme ディレクトリを作成しています... ]********************'
	sudo cp -a ~/.lafcre8/sass/theme sass
	tput setaf 2 && echo '[OK] sass/themeをセットしました...'
	cat >> ./sass/style.scss <<EOF

/*--------------------------------------------------------------
# themes
--------------------------------------------------------------*/
@import "theme/style";
EOF
fi

# inc/
tput setaf 6 && echo '\nTASK [ cp inc/ LAF用ファイルを作成しています... ]****************************'
sudo cp -a ~/.lafcre8/inc .
tput setaf 2 && echo '[OK] inc/* をセットしました...'
tput setaf 6 && echo '\nTASK [ cat functions.php ファイルに追記しています... ]****************************'
cat >> ./functions.php <<EOF
/**
 * const
 * taxonomy
 */

define( 'XXX_TAXONOMY_NEWS', 'news_category' );
define( 'XXX_TAXONOMY_ISSUE', 'issue_category' );

/**
 * post_type
 */

define( 'XXX_POST_TYPE_NEWS', 'news' );
define( 'XXX_POST_TYPE_ISSUE', 'issue' );

/**
 * Enqueue scripts and styles.
 */

 require get_template_directory() . '/inc/enque-script.php';

 /**
  * Custom Post Type for this theme.
  */
 require get_template_directory() . '/inc/post-types.php';

 /**
  * Taxonomys for this theme.
  */
 require get_template_directory() . '/inc/taxonomys.php';

  /**
   * Laf etc for this theme.
   */
  require get_template_directory() . '/inc/laf-etc.php';

EOF

# 変数、関数の略称設定
sh ~/.lafcre8/__vccw_abbreviation.sh

exit
```

```
tput setaf 6 && echo "変数・関数等の略称を設定します..."
read ABBREVIATION
tput setaf 6 && echo "[ XXX_ -> $ABBREVIATION ]."

sed -i -e "s/XXX_/${ABBREVIATION}_/g" ./functions.php
sed -i -e "s/XXX_/${ABBREVIATION}_/g" ./inc/post-types.php
sed -i -e "s/XXX_/${ABBREVIATION}_/g" ./inc/taxonomys.php
exit
```
定数の頭の部分をサイトごとの接頭辞的な名前に書き換え