#!/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
定数の頭の部分をサイトごとの接頭辞的な名前に書き換え