Skip to content

Instantly share code, notes, and snippets.

@yosukehasumi
Last active July 13, 2017 17:29
Show Gist options
  • Save yosukehasumi/d0c905da78229122e7c1bb34a0fc92a7 to your computer and use it in GitHub Desktop.
Save yosukehasumi/d0c905da78229122e7c1bb34a0fc92a7 to your computer and use it in GitHub Desktop.
Create a new wordpress boilerplate theme
#!/usr/bin/env bash
VERSION=2.0.12;
# Download this file, rename it to "rare", and place it in your bin directory (for mac it'll be something like usr/local/bin/rare).
# For OSX you could try this CURL command to install it:
# curl https://gist.githubusercontent.com/yosukehasumi/d0c905da78229122e7c1bb34a0fc92a7/raw/rare.sh > /usr/local/bin/rare;
# sudo chmod 755 /usr/local/bin/rare;
#
# To use this script, cd into your project directory and in command line type:
# rare install wp [theme_name] => downloads wp, boiler-plate theme, and installs precompilers, including gulp and dploy
# rare install compilers [path] => downloads and installs scss and coffeescript boilerplate and installs gulp with its node_modules
# rare server => starts gulp
# rare deploy => deploys a project to your server
# https://github.com/yosukehasumi/boiler-theme
# https://gist.github.com/yosukehasumi/d21f3ed89171ea5fc234
#
# This should work in OSX, not tested anywhere else.
#=======================================================================================
installwp() {
THEMENAME="$1";
THEMEDIR="wordpress/wp-content/themes/$THEMENAME";
# download the latest wordpress and unpackage it
curl -L "http://wordpress.org/latest.tar.gz" | tar xz;
# clone my boiler-theme repo
git clone https://github.com/yosukehasumi/boiler-theme.git;
# remove any git references
rm -rf boiler-theme/.git boiler-theme/.gitignore;
# move the boiler-theme to it's new location
mv boiler-theme $THEMEDIR;
# add the theme name to style.scss and save it as tmpfile.scss
sed "s/YourCustomThemeName/$THEMENAME/g" "$THEMEDIR/scss/style.scss" > "$THEMEDIR/scss/tmpfile.scss";
# remove the old style.scss
rm "$THEMEDIR/scss/style.scss";
# move tmpfile.scss to style.scss
mv "$THEMEDIR/scss/tmpfile.scss" "$THEMEDIR/scss/style.scss";
# move the sample.gitignore to .gitignore in the root of the site
mv "$THEMEDIR/sample.gitignore" "wordpress/.gitignore";
# unzip acf
unzip "$THEMEDIR/advanced-custom-fields-pro.zip" -d "wordpress/wp-content/plugins/";
# grab my gulpfile
if [ ! -f "wordpress/gulpfile.js" ]; then
curl "https://gist.githubusercontent.com/yosukehasumi/d21f3ed89171ea5fc234/raw/gulpfile.js" -o "wordpress/gulpfile.js";
fi
# cd into the root of the site and link node_modules
cd wordpress;
npm install gulp gulp-util gulp-sass gulp-autoprefixer gulp-coffee gulp-clean-css gulp-uglify gulp-concat merge2 --save-dev;
# add the stylesheet_dir variable in the gulpfile
echo "var stylesheet_dir = \"wp-content/themes/$THEMENAME\"" | cat - gulpfile.js > temp && mv temp gulpfile.js;
}
#=======================================================================================
installtheme() {
THEMENAME="$1";
THEMEDIR="wp-content/themes/$THEMENAME";
# clone my boiler-theme repo
git clone https://github.com/yosukehasumi/boiler-theme.git;
# remove any git references
rm -rf boiler-theme/.git boiler-theme/.gitignore;
# move the boiler-theme to it's new location
mv boiler-theme $THEMEDIR;
# add the theme name to style.scss and save it as tmpfile.scss
sed "s/YourCustomThemeName/$THEMENAME/g" "$THEMEDIR/scss/style.scss" > "$THEMEDIR/scss/tmpfile.scss";
# remove the old style.scss
rm "$THEMEDIR/scss/style.scss";
# move tmpfile.scss to style.scss
mv "$THEMEDIR/scss/tmpfile.scss" "$THEMEDIR/scss/style.scss";
# unzip acf
unzip "$THEMEDIR/advanced-custom-fields-pro.zip" -d "wp-content/plugins/";
# grab my gulpfile
if [ ! -f "wordpress/gulpfile.js" ]; then
curl "https://gist.githubusercontent.com/yosukehasumi/d21f3ed89171ea5fc234/raw/gulpfile.js" -o "gulpfile.js";
fi
# install node_modules
npm install gulp gulp-util gulp-sass gulp-autoprefixer gulp-coffee gulp-clean-css gulp-uglify gulp-concat merge2 --save-dev;
# add the stylesheet_dir variable in the gulpfile
echo "var stylesheet_dir = \"wp-content/themes/$THEMENAME\"" | cat - gulpfile.js > temp && mv temp gulpfile.js;
}
#=======================================================================================
installcompilers() {
THEMEDIR="$1";
# clone my boiler-theme repo
git clone https://github.com/yosukehasumi/boiler-theme.git;
# move just the boiler-theme js and scss to it's new location
mv boiler-theme/js $THEMEDIR;
mv boiler-theme/scss $THEMEDIR;
# remove boiler-theme
rm -rf boiler-theme
# grab my gulpfile
if [ ! -f "gulpfile.js" ]; then
curl "https://gist.githubusercontent.com/yosukehasumi/d21f3ed89171ea5fc234/raw/gulpfile.js" -o "gulpfile.js";
fi
# install node_modules
npm install gulp gulp-util gulp-sass gulp-autoprefixer gulp-coffee gulp-clean-css gulp-uglify gulp-concat merge2 --save-dev;
# add the stylesheet_dir variable in the gulpfile
echo "var stylesheet_dir = \"$THEMEDIR\"" | cat - gulpfile.js > temp && mv temp gulpfile.js;
}
#=======================================================================================
server() {
#run gulp
gulp
}
#=======================================================================================
deploysetup() {
echo "--------"
echo "protocol: [ftp sftp]"
read protocol
echo "--------"
echo "host: (example.com)"
read host
echo "--------"
echo "port: (commonly 21 or 22)"
read port
echo "--------"
echo "path: (relative path please)"
read path
echo "--------"
echo "user: [ftp_username]"
read user
echo "--------"
echo "password: [ftp_password]"
read password
echo "--------"
echo "key: [ssh_private_key_name]"
read key
echo "--------"
echo "pubkey: [ssh_public_key_name]"
read pubkey
echo "--------"
echo "You entered"
echo " protocol: $protocol"
echo " host: $host"
echo " port: $port"
echo " path: $path"
echo " user: $user"
echo " password: $password"
echo " key: $key"
echo " pubkey: $pubkey"
echo "is this information correct? [Y/N]"
read confirm
if [ "$confirm" == "Y" ] || [ "$confirm" == "y" ]; then
echo "-------- adding"
echo " git config git-ftp.$1.url $protocol://$host:$port/$path"
git config git-ftp."$1".url "$protocol"://"$host":"$port"/"$path"
echo " git config git-ftp.$1.user $user"
git config git-ftp."$1".user "$user"
echo " git config git-ftp.$1.password $password"
git config git-ftp."$1".password "$password"
echo " git config git-ftp.$1.key $key"
git config git-ftp."$1".key "$key"
echo " git config git-ftp.$1.pubkey $pubkey"
git config git-ftp."$1".pubkey "$pubkey"
echo " git config git-ftp.$1.insecure 1"
git config git-ftp."$1".insecure 1
echo "--------"
echo "You can now deploy using this scope:"
echo " rare deploy $1"
fi
}
#=======================================================================================
deployinit() {
echo "initializing first deployment to $1"
git ftp init -s "$1" -v
}
#=======================================================================================
deploy() {
echo "deploying to $1"
git ftp push -s "$1" -v
}
#=======================================================================================
update() {
echo 'updating rare...';
echo " location: `which rare`";
echo " version: `rare -v`";
touch $TMPDIR/rare-self-update
sudo chmod 777 $TMPDIR/rare-self-update
echo "#!/usr/bin/env bash
LOCATION=\`which rare\`;
curl https://gist.githubusercontent.com/yosukehasumi/d0c905da78229122e7c1bb34a0fc92a7/raw/rare.sh > \$TMPDIR/rare;
sudo chmod 755 \$TMPDIR/rare;
sudo mv \$TMPDIR/rare \$LOCATION;
echo \" rare has updated to version: \`rare -v\`\";
" > $TMPDIR/rare-self-update
exec $TMPDIR/rare-self-update
}
#=======================================================================================
echohelp() {
echo " are install wp [theme_name]";
echo " are install compilers [path]";
echo " are install theme [theme_name]";
echo " are install deployment [scope/environment]";
echo " rare server";
echo " rare update";
echo " rare deploy [scope/environment]";
echo "------";
echo "For git-ftp deployment information/installation see https://github.com/git-ftp/git-ftp.";
}
#=======================================================================================
if [ "$1" == "install" ]; then
if [ "$2" == "wp" ]; then
if [ -n "$3" ]; then
installwp "$3";
fi
elif [ "$2" == "theme" ]; then
if [ -n "$3" ]; then
installtheme "$3";
fi
elif [ "$2" == "compilers" ]; then
if [ -n "$3" ]; then
installcompilers "$3";
fi
elif [ "$2" == "deployment" ]; then
if [ -n "$3" ]; then
deploysetup "$3";
fi
fi
elif [ "$1" == "server" ] || [ "$1" == "s" ]; then
server;
elif [ "$1" == "deploy" ]; then
if [ "$2" == "init" ]; then
deployinit "$3";
elif [ -n "$2" ]; then
deploy "$2";
fi
elif [ "$1" == "-v" ]; then
echo $VERSION;
elif [ "$1" == "update" ]; then
update;
else
echohelp;
fi
#=======================================================================================
exit 0
@nathanieltubb
Copy link

The npm install commands are no longer matching the dependant modules for the revised boiler theme.

Lines 59, 96, 121

npm install gulp gulp-util gulp-sass gulp-autoprefixer gulp-coffee gulp-clean-css gulp-uglify gulp-babel gulp-concat merge2 babel-preset-es2015 --save-dev

Also, the lines which install the gulpfile are grabbing an old version rather than using the sample.gulpfile.js included in the boiler theme.

Lines 54, 92, 117

mv "$THEMEDIR/sample.gulpfile.js" "wordpress/gulpfile.js";

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment