File: make_release.sh

package info (click to toggle)
fpart 1.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,304 kB
  • sloc: sh: 5,614; ansic: 3,847; makefile: 34
file content (55 lines) | stat: -rwxr-xr-x 1,536 bytes parent folder | download
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
#!/bin/sh

# Generates a release tarball

_release=$(git tag | tail -n 1)
_target_dir="/tmp"

# Print a message to stderr and exit with error code 1
end_die () {
    [ -n "$1" ] && echo "$1" 1>&2
    exit 1
}

cd $(dirname "${0}")/ || \
  end_die "Cannot change directory"

echo "Checking out tag ${_release}..."
{ git checkout "${_release}" && \
  [ "$(git status --porcelain)" = "" ] ;} || \
  end_die "Current branch not clean, cannot proceed"

echo "Copying sources to ${_target_dir}/${_release}..."
{ mkdir -p "${_target_dir}/" && \
  cp -Rf ./ "${_target_dir}/${_release}" ;} || \
  end_die "Error copying sources"

echo "Running autoreconf..."
echo "=="
(cd "${_target_dir}/${_release}" && \
  autoreconf -fi && echo "==") || \
  end_die "Error running autoreconf"

echo "Generating tarball..."
{ tar c -C "${_target_dir}" -zf "${_target_dir}/${_release}.tar.gz" \
    --exclude ".git*" --exclude "autom4te.cache" "${_release}/" ;} || \
  end_die "Error generating file: ${_target_dir}/${_release}.tar.gz"

echo "Created file: ${_target_dir}/${_release}.tar.gz"

echo "Signing release..."
gpg --detach-sign --armor ${_target_dir}/${_release}.tar.gz || \
  end_die "Could not sign tarball"

echo "Created signature: ${_target_dir}/${_release}.tar.gz.asc"

echo "Cleaning up temporary directory..."
rm -rf "${_target_dir}/${_release}" || \
  end_die "Error cleaning up: ${_target_dir}/${_release}"

echo "Coming back to master branch..."
git checkout "master" || \
  end_die "Could not checkout master branch"

echo "done."
exit 0