forked from tokkonopapa/WordPress-IP-Geo-Block
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdeploy.sh
executable file
·167 lines (140 loc) · 4.41 KB
/
deploy.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#! /bin/bash
# A modification of Dean Clatworthy's deploy script at: https://github.com/deanc/wordpress-plugin-git-svn
# The difference is that this script lives in the plugin's git repo & doesn't require an existing SVN repo.
# structure on http://plugins.svn.wordpress.org/ip-geo-block/
# /ip-geo-block
# assets/
# icon-128x128.png
# screenshot-1.png
# screenshot-2.png
# screenshot-3.png
# screenshot-4.png
# screenshot-5.png
# branches/
# tags/
# 1.0.0/
# ...
# 2.0.0/
# LICENSE.txt
# README.txt
# admin/
# classes/
# database/
# includes/
# index.php
# ip-geo-block.php
# languages/
# samples.php
# uninstall.php
# trunk/
# LICENSE.txt
# README.txt
# admin/
# classes/
# database/
# includes/
# index.php
# ip-geo-block.php
# languages/
# samples.php
# uninstall.php
# main config
PLUGINSLUG="ip-geo-block"
CURRENTDIR=`pwd`
MAINFILE="$PLUGINSLUG.php" # this should be the name of your main php file in the wordpress plugin
# git config
GITPATH="$CURRENTDIR/$PLUGINSLUG/" # this file should be in the base of your git repository
# svn config
SVNPATH="/tmp/$PLUGINSLUG" # path to a temp SVN repo. No trailing slash required and don't add trunk.
SVNURL="http://plugins.svn.wordpress.org/$PLUGINSLUG/" # Remote SVN repo on wordpress.org, with no trailing slash
SVNUSER="tokkonopapa" # your svn username
# Let's begin...
echo ".........................................."
echo
echo "Preparing to deploy wordpress plugin"
echo
echo ".........................................."
echo
# Check version in readme.txt is the same as plugin file
NEWVERSION1=`grep "^Stable tag:" $GITPATH/README.txt | awk '{print $NF}'`
echo "readme version: $NEWVERSION1"
NEWVERSION2=`grep "Version:" $GITPATH/$MAINFILE | awk '{print $NF}'`
echo "$MAINFILE version: $NEWVERSION2"
if [ "$NEWVERSION1" != "$NEWVERSION2" ]; then echo "Versions don't match. Exiting...."; exit 1; fi
echo "Versions match in README.txt and PHP file. Let's proceed..."
cd $GITPATH
echo -e "Enter a commit message for this new version: \c"
read COMMITMSG
git commit -am "$COMMITMSG"
echo "Tagging new version in git"
git tag -a "$NEWVERSION1" -m "Tagging version $NEWVERSION1"
echo "Pushing latest commit to origin, with tags"
git push origin master
git push origin master --tags
echo
echo "Creating local copy of SVN repo ..."
svn co $SVNURL $SVNPATH
echo "Exporting the HEAD of master from git to the trunk of SVN"
git checkout-index -a -f --prefix=$SVNPATH/trunk/
echo "Ignoring github specific files and deployment script"
svn propset svn:ignore "README.md
Thumbs.db
.github/*
.git
.gitattributes
.gitignore
deploy.sh
test/*" "$SVNPATH/trunk/"
echo "Changing directory to SVN and committing to trunk"
cd $SVNPATH/trunk/
# re-construct PLUGINSLUG dir
echo "Setting trunc"
cp -Rp $PLUGINSLUG/* ./
rm -rf $PLUGINSLUG
# Support for the /assets folder on the .org repo.
echo "Moving assets"
rm -f $SVNPATH/assets/*
#mv -f assets/* $SVNPATH/assets/
#rmdir assets
cp -p $CURRENTDIR/assets/* $SVNPATH/assets/
# Update all the files that are not set to be ignored
svn status | grep -v "^.[ \t]*\..*" | grep "^\!" | awk '{print $2}' | xargs svn del
svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add
svn commit --username=$SVNUSER -m "$COMMITMSG"
echo "Creating new SVN tag & committing it"
cd $SVNPATH
# Delete unused files
#svn delete --force \
# trunk/classes/class-ip-geo-block-api.php \
# trunk/includes/upgrade.php \
# trunk/admin/js/footable.all.min.js \
# trunk/admin/js/auth-nonce.js \
# trunc/includes/Net/PEAR.php
#svn delete --force \
# trunk/includes/venders/ \
# trunk/includes/download.php \
# trunk/includes/localdate.php
#svn delete --force \
# trunk/admin/css/footable.core.min.css \
# trunk/admin/css/font/footable.eot \
# trunk/admin/css/font/footable.svg \
# trunk/admin/css/font/footable.ttf \
# trunk/admin/css/font/footable.woff \
# trunk/admin/js/footable.min.js
# Copy all files to tags
svn copy trunk/ tags/$NEWVERSION1/
cd $SVNPATH/tags/$NEWVERSION1
# Delete unused files
#svn delete --force \
# trunk/ \
# ip-geo-api/
svn commit --username=$SVNUSER -m "Tagging version $NEWVERSION1"
# for assets
echo "Commit assets"
cd $SVNPATH/assets/
svn status | grep -v "^.[ \t]*\..*" | grep "^\!" | awk '{print $2}' | xargs svn del
svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add
svn commit --username=$SVNUSER -m "$NEWVERSION1"
echo "Removing temporary directory $SVNPATH"
rm -fr $SVNPATH/
echo "*** FIN ***"