-
-
Save yosukehasumi/d0c905da78229122e7c1bb34a0fc92a7 to your computer and use it in GitHub Desktop.
#!/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 |
After running the rare install wp themename
command the SCSS file is loaded with the theme name "Theme Name: pen-archive" rather than the name provided via the install command. This might be a problem with the boiler theme however.
https://github.com/yosukehasumi/boiler-theme/blob/master/scss/style.scss
Update
Line 38 and Line 79 are the culprits. In the boiler theme the temporary theme name in the style.scss file must have got changed at some point so the automatic replacement no longer works.
sed "s/boiler-theme/$THEMENAME/g" "$THEMEDIR/scss/style.scss" > "$THEMEDIR/scss/tmpfile.scss";
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";
Line 230-233 help text misspells 'rare' command.