summaryrefslogtreecommitdiff
path: root/bin/xfs-release.sh
blob: 105c4a686ae5d13f8525c6d884d87c191fd6eb3d (plain)
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
#!/bin/bash

#Maintainer info
MAINTAINER_EMAIL="[email protected]"
MAINTAINER_NAME="Carlos Maiolino"

SOURCE=$PWD

#Files
VERSION_FILE="$SOURCE/VERSION"
CONFIGURE_FILE="$SOURCE/configure.ac"
DEBIAN_FILE="$SOURCE/debian/changelog"
CHANGES_FILE="$SOURCE/doc/CHANGES"

VER_MAJ="$1"
VER_MIN="$2"
VER_REV="$3"

REL_VER="$VER_MAJ.$VER_MIN.$VER_REV"
REL_TAG="v$VER_MAJ.$VER_MIN.$VER_REV"

#OLD_VER here points to the previous released tag
OLD_TAG=$4

usage() {
	echo "./xfsprogs_release.sh <mav_ver> <min_ver> <revision> <old_git_tag>"
	exit
}

## UPDATE VERSIONING ##
update_version_file() {
	sed -i -e "s/^PKG_MAJOR=.*/PKG_MAJOR=$VER_MAJ/" $VERSION_FILE
	sed -i -e "s/^PKG_MINOR=.*/PKG_MINOR=$VER_MIN/" $VERSION_FILE
	sed -i -e "s/^PKG_REVISION=.*/PKG_REVISION=$VER_REV/" $VERSION_FILE
}

update_configure_file() {
	CONF_AC="AC_INIT([xfsprogs],[$REL_VER],[[email protected]])"
	sed -i "s/^AC_INIT.*/$CONF_AC/" $CONFIGURE_FILE
}

# Update is done in 'reverse order', so the script can always update the first
# line of the file, just to KISS.
update_debian_changelog() {
	sed -i "1s/^/\n/" $DEBIAN_FILE
	sed -i "1s/^/ -- Nathan Scott <[email protected]>  $(date -R)\n/" $DEBIAN_FILE
	sed -i "1s/^/\n/" $DEBIAN_FILE

	sed -i "1s/^/  * New upstream release\n/" $DEBIAN_FILE
	sed -i "1s/^/\n/" $DEBIAN_FILE
	sed -i "1s/^/xfsprogs ($VER_MAJ.$VER_MIN.$VER_REV) unstable; urgency=low\n/" $DEBIAN_FILE
}

update_changes_file() {

	TMP_FILE=$(mktemp)
	git log --oneline --reverse --format="%s (%an)" $OLD_TAG.. > $TMP_FILE

	while read -r line; do
		sed -i "1s/^/\t$line\n/" $CHANGES_FILE
	done < $TMP_FILE

	rm -f $TMP_FILE
}

create_signed_tag() {
	git tag -s -u $MAINTAINER_EMAIL -m "Release $REL_RAG" $REL_TAG
}

create_and_push_tarball() {
	kup put xfsprogs-$REL_VER.tar.gz xfsprogs-$REL_VER.tar.sign \
	pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-$REL_VER.tar.gz
}

is_xfsprogs_repo() {
	if [ -a $SOURCE/README ] && \
	[ "$(head -1 $SOURCE/README)" == "XFS User Tools README" ]; then
		return 0
	else
		echo "Current dir not a xfsprogs repository"
		usage
		exit 1
	fi
}


### PROGRAM STARTS HERE ###
# Ensure we are withing a xfsprogs repository:
is_xfsprogs_repo

# MAJ, MIN, REV, OLD_TAG
if [ $# -ne 4 ]; then
	echo "Invalid number of arguments"
	usage
	exit 1
fi

# Update files for new release

#echo "Updating config.ac file..."
#update_configure_file
#echo "...done"
#echo
#echo "Updating debian changelog..."
#update_debian_changelog
#echo "...done"
#echo
#echo "Updating VERSION file..."
#update_version_file
#echo "...done"
#echo

#echo "Commiting changes..."
#git add $VERSION_FILE $CONFIGURE_FILE $DEBIAN_FILE
#
#git commit -s -m "xfsprogs: Release $REL_TAG" \
#-m "Update all the necessary files for a $REL_TAG release."
update_changes_file