Source

nrsc / nrsc

#!/bin/bash
# Pack assets as zip payload in go executable

# Idea from Carlos Castillo (http://bit.ly/SmYXXm)

case "$1" in
    -h | --help )
        echo "usage: $(basename $0) EXECTABLE RESOURCE_DIR [ZIP OPTIONS]";
        exit;;
    --version )
        echo "nrsc version 0.3.1"; exit;;
esac

if [ $# -lt 2 ]; then
    $0 -h
    exit 1
fi

exe=$1
shift
root=$1
shift

if [ ! -f "${exe}" ]; then
    echo "error: can't find $exe"
    exit 1
fi

if [ ! -d "${root}" ]; then
    echo "error: ${root} is not a directory"
    exit 1
fi

# Exit on 1'st error
set -e

# The below is due to the retarded OSX mktemp
tmp=$(mktemp)
tmpzip=${tmp}.zip
trap "rm -f ${tmp} ${tmpzip}" EXIT

# Create zip file
(cd "${root}" && zip -r "${tmpzip}" . $@)

# Append zip to executable
cat "${tmpzip}" >> "${exe}"
# Fix zip offset in file
zip -q -A "${exe}"
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.