summaryrefslogblamecommitdiff
path: root/tools/get-scala-commit-sha
blob: 0abe31a53cc3817015ee645032f6eb230ba6d576 (plain) (tree)
1
2
3
4
5
6
7
8

                   

                                                
                                                  

                               
               




                         




                                                             

   






                                                                
 

                                                         
                                                   
 


                                                                
                              
                                    
              
 
            
#!/usr/bin/env bash
#
# Usage: get-scala-commit-sha [dir]
# Figures out current commit sha of a git clone.
# If no dir is given, current working dir is used.
#
# Example build version string:
#   6f1c486d0ba
#

[[ $# -eq 0 ]] || cd "$1"

ensure_tag () {
  sha=$1
  rev=$2
  
  [[ -n $(git tag -l $rev) ]] || {
    git tag -a -m "generated by get-scala-revision" $rev $sha
  }
}

# Ensure some baseline tags are present so if this repository's
# tags are screwed up or stale, we should still have a reference
# point for a build string.
ensure_tag 58cb15c40d v2.10.0-M1
ensure_tag 29f3eace1e v2.9.1
ensure_tag b0d78f6b9c v2.8.2

# the closest tag, obtained separately because we have to
# reconstruct the string around the padded distance.
tag=$(git describe --tags --match 'v2*' --abbrev=0)

# printf %016s is not portable for 0-padding, has to be a digit.
# so we're stuck disassembling it.
described=$(git describe --tags --match 'v2*' --abbrev=10)
suffix="${described##${tag}-}"
hash=$(echo $suffix | cut -d - -f 2)
hash=${hash#g}

echo "$hash"