]> git.pld-linux.org Git - packages/delta.git/blob - create-crates.sh
414c80c750b41482f272c4d404d9f37b7a300009
[packages/delta.git] / create-crates.sh
1 #!/bin/sh
2
3 for cmd in bsdtar rpm-specdump cargo; do
4   if ! command -v $cmd > /dev/null 2> /dev/null; then
5     not_installed="$not_installed$cmd "
6   fi
7 done
8
9 if [ -n "$not_installed" ]; then
10   echo "ERROR: required commands not found: $not_installed" >&2
11   exit 1
12 fi
13
14 pkg_dir=$(readlink -f $(dirname "$0"))
15 pkg_name=$(basename "$pkg_dir")
16
17 if [ ! -f "$pkg_dir/$pkg_name.spec" ]; then
18   echo "ERROR: unable to determine package name" >&2
19   exit 1
20 fi
21
22 spec_dump=$(rpm-specdump "$pkg_dir/$pkg_name.spec")
23 pkg_version=$(echo "$spec_dump" | grep PACKAGE_VERSION | cut -f3 -d' ')
24 pkg_src=$(basename $(echo "$spec_dump" | grep SOURCEURL0 | cut -f3- -d' '))
25 crates_file="$pkg_name-crates-$pkg_version.tar.xz"
26
27 if [ -e "$pkg_dir/$crates_file" ]; then
28   echo "ERROR: crates file $crates_file already exists" >&2
29   exit 1
30 fi
31
32 if [ ! -f "$pkg_dir/$pkg_src" ]; then
33   echo "ERROR: source file $pkg_src not found" >&2
34   exit 1
35 fi
36
37 tmpdir=$(mktemp -d)
38
39 rm_tmpdir() {
40   if [ -n "$tmpdir" -a -d "$tmpdir" ]; then
41     rm -rf "$tmpdir"
42   fi
43 }
44
45 trap rm_tmpdir EXIT INT HUP
46
47 cd "$tmpdir"
48 bsdtar xf "$pkg_dir/$pkg_src"
49 src_dir=$(ls)
50 if [ $(echo "$src_dir" | wc -l) -ne 1 ]; then
51   echo "ERROR: unexpected source structure:\n$src_dir" >&2
52   exit 1
53 fi
54
55 cd "$src_dir"
56 cargo vendor
57 if [ $? -ne 0 ]; then
58   echo "ERROR: cargo vendor failed" >&2
59   exit 1
60 fi
61
62 cd ..
63 tar cJf "$pkg_dir/$crates_file" "$src_dir"/{Cargo.lock,vendor}
64
65 # vim: expandtab shiftwidth=2 tabstop=2
This page took 0.039897 seconds and 2 git commands to generate.