File: mkdist

package info (click to toggle)
smlsharp 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 123,732 kB
  • sloc: ansic: 16,725; sh: 4,347; makefile: 2,191; java: 742; haskell: 493; ruby: 305; cpp: 284; pascal: 256; ml: 255; lisp: 141; asm: 97; sql: 74
file content (86 lines) | stat: -rw-r--r-- 2,113 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
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
#!/bin/sh

set -e
cd $(dirname "$0")

get_version () {
  date=$(git log -1 --format='%ai')
  desc=$(git describe --match='v[0-9]*' --tags --long)
  args=$(echo "$desc" | sed -E 's/^v(.*)-([0-9]+)-g([a-f0-9]+)$/\1 \2 \3/')
  set -- $args
  case "$2" in
    "")
      exit 1
      ;;
    0)
      version="$1"
      ref="refs/tags/v$1"
      date=$(git for-each-ref --format='%(creatordate:iso)' "$ref")
      ;;
    *)
      case "$1" in
        *-*)
          version="$1.$2.g$3"
          ;;
        *)
          version=$(echo "$1" | awk -v FS=. -v OFS=. '{$3+=1;print}')
          version="$version-$2.g$3"
          ;;
      esac
      ;;
  esac
  release="$version ($(echo "$date" | sed 's/+0900/JST/'))"
}

get_version

case "$1" in
  version)
    echo "$version"
    ;;

  release)
    echo "$release"
    ;;

  package)
    TAR=tar
    $TAR --version | grep 'GNU tar' > /dev/null 2>&1 || TAR=gtar
    tmp=$(mktemp -d)
    trap 'rm -rf "$tmp"' EXIT
    trap 'exit 127' INT QUIT STOP
    root="$tmp/smlsharp-$version"
    mkdir "$root"
    git archive -o "$tmp/archive.tar" HEAD
    $TAR -C "$root" -xf "$tmp/archive.tar"
    echo "$release" > "$root/RELEASE"
    rm -r "$root/.github"
    $TAR -cf "smlsharp-$version.tar.gz" -C "$tmp" --sort=name \
         --format=ustar --use-compress-program='gzip -c -n -9' \
         --owner=root:0 --group=root:0 --mtime="$date" \
         "smlsharp-$version"
    hash=$(openssl dgst -sha256 < "smlsharp-$version.tar.gz")
    echo "version=$version"
    echo "date=$date"
    echo "filename=smlsharp-$version.tar.gz"
    echo "hash=${hash#*= }"
    ;;

  history)
    tmp=$(mktemp -d)
    trap 'rm -rf "$tmp"' EXIT
    trap 'exit 127' INT QUIT STOP
    dst="smlsharp-$version.history"
    git tag -l 'v[0-9]*' --merged=HEAD --sort=-creatordate \
            --format='%(objecttype) %(refname) %(creatordate:iso)' \
            >> "$tmp/tags"
    sed -i~ -E 's|^[a-z]+ refs/tags/v||' "$tmp/tags"
    echo "$version $date" > "$tmp/history"
    cat "$tmp/tags" >> "$tmp/history"
    uniq "$tmp/history" > "smlsharp-$version.history"
    ;;

  *)
    exit 1
    ;;
esac