github.com/NeowayLabs/nash@v0.2.2-0.20200127205349-a227041ffd50/hack/releaser.sh (about)

     1  #!/usr/bin/env nash
     2  
     3  if len($ARGS) != "2" {
     4  	print("usage: %s <version>\n\n", $ARGS[0])
     5  	exit("1")
     6  }
     7  
     8  var version = $ARGS[1]
     9  var supported_os = ("linux" "darwin" "windows")
    10  var supported_arch = ("amd64")
    11  
    12  # Guarantee passing tests at least on the host arch/os
    13  make test
    14  mkdir -p dist
    15  
    16  fn prepare_execs(distfiles, os) {
    17  	if $os == "windows" {
    18  		var newfiles = ()
    19  		
    20  		for distfile in $distfiles {
    21  			var src = $distfile[0]
    22  			var dst = $distfile[1]
    23  			var newsrc = $src+".exe"
    24  			var newdst = $dst+".exe"
    25  		
    26  			newfiles <= append($newfiles, ($newsrc $newdst))
    27  		}
    28  		
    29  		return $newfiles
    30  	}
    31  	if $os == "linux" {
    32  		for distfile in $distfiles {
    33  			strip $distfile[0]
    34  		}
    35  	}
    36  
    37  	return $distfiles
    38  }
    39  
    40  for os in $supported_os {
    41  	for arch in $supported_arch {
    42  		setenv GOOS = $os
    43  		setenv GOARCH = $arch
    44  
    45  		if $os == "linux" {
    46  			setenv CGO_ENABLED = "1"
    47  		} else {
    48  			setenv CGO_ENABLED = "0"
    49  		}
    50  
    51  		echo "building OS: "+$GOOS+" ARCH : "+$GOARCH
    52  		make build "version="+$version
    53  
    54  		var pkgdir <= mktemp -d
    55  
    56  		var bindir = $pkgdir+"/bin"
    57  		var stdlibdir = $pkgdir+"/stdlib"
    58  
    59  		mkdir -p $bindir
    60  		mkdir -p $stdlibdir
    61  
    62  		var nash_src = "./cmd/nash/nash"
    63  		var nash_dst = $bindir+"/nash"
    64  		var nashfmt_src = "./cmd/nashfmt/nashfmt"
    65  		var nashfmt_dst = $bindir+"/nashfmt"
    66  		var execfiles = (
    67  			($nash_src $nash_dst)
    68  			($nashfmt_src $nashfmt_dst)
    69  		)
    70  
    71  		var execfiles <= prepare_execs($execfiles, $os)
    72  
    73  		# TODO: Improve with glob, right now have only two packages =)
    74  		var distfiles <= append($execfiles, ("./stdlib/io.sh" $stdlibdir))
    75  
    76  		distfiles <= append($distfiles, ("./stdlib/map.sh" $stdlibdir))
    77  
    78  		for distfile in $distfiles {
    79  			var src = $distfile[0]
    80  			var dst = $distfile[1]
    81  
    82  			cp -pr $src $dst
    83  		}
    84  
    85  		var projectdir <= pwd
    86  		var distar <= format("%s/dist/nash-%s-%s-%s.tar.gz", $projectdir, $version, $os, $arch)
    87  
    88  		chdir($pkgdir)
    89  
    90  		var pkgraw <= ls
    91  		var pkgfiles <= split($pkgraw, "\n")
    92  
    93  		tar cvfz $distar $pkgfiles
    94  
    95  		chdir($projectdir)
    96  	}
    97  }