diff --git a/README.md b/README.md index f5fe200..caf22a6 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ NOTES: 1. Source and Destination are required 1. Copies using the [_source](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html) field in elasticsearch. If you have made modifications to it (excluding fields) they will not be indexed on the destination host. 1. Ports are required, otherwise 80 is the assumed port +1. All documents are created, nothing is updated. If a document with the same _id is received (which shouldnt happen anyway) an error will be shown and the latter document will not be indexed. 1. --settings is a toggle on weather we should copy replication and sharding settings for the indexes. This is the default, and replication and sharding are the only settings copied. 1. --force will delete indexes on the destination host. Otherwise an error will be returned if the index exists 1. --time is the [scroll time](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-scroll.html#scroll-search-context) passed to the source host, default is 1m. This is a string in es's format. @@ -29,6 +30,6 @@ NOTES: BUGS: == -1. It will not do anything special when copying the _id (copies _id from source host). If _id is remapped this probably wont do what you want. +1. It will not do anything special when copying the _id (copies _id from source host). If _id is remapped this probably won't do what you want. 1. Should check if the bulk index requests starts getting large (in bytes), and force a flush if that is the case. Right now we silently fail if elasticsearch refuses a large request. 1. Should assume a default port of 9200 diff --git a/release.sh b/release.sh new file mode 100755 index 0000000..116aca6 --- /dev/null +++ b/release.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# Copyright 2012 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +# support functions for go cross compilation + +type setopt >/dev/null 2>&1 && setopt shwordsplit +PLATFORMS="darwin/386 darwin/amd64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm windows/386 windows/amd64" + +function go-alias { + GOOS=${1%/*} + GOARCH=${1#*/} + eval "function go-${GOOS}-${GOARCH} { ( GOOS=${GOOS} GOARCH=${GOARCH} go \"\$@\" ) }" +} + +function go-crosscompile-build { + GOOS=${1%/*} + GOARCH=${1#*/} + cd $(go env GOROOT)/src ; GOOS=${GOOS} GOARCH=${GOARCH} ./make.bash --no-clean 2>&1 +} + +function go-crosscompile-build-all { + FAILURES="" + for PLATFORM in $PLATFORMS; do + CMD="go-crosscompile-build ${PLATFORM}" + echo "$CMD" + $CMD || FAILURES="$FAILURES $PLATFORM" + done + if [ "$FAILURES" != "" ]; then + echo "*** go-crosscompile-build-all FAILED on $FAILURES ***" + return 1 + fi +} + +function go-all { + FAILURES="" + for PLATFORM in $PLATFORMS; do + GOOS=${PLATFORM%/*} + GOARCH=${PLATFORM#*/} + CMD="go-${GOOS}-${GOARCH} $@" + echo "$CMD" + $CMD || FAILURES="$FAILURES $PLATFORM" + done + if [ "$FAILURES" != "" ]; then + echo "*** go-all FAILED on $FAILURES ***" + return 1 + fi +} + +function go-build-all { + FAILURES="" + for PLATFORM in $PLATFORMS; do + GOOS=${PLATFORM%/*} + GOARCH=${PLATFORM#*/} + SRCFILENAME=`echo $@ | sed 's/\.go//'` + CURDIRNAME=${PWD##*/} + OUTPUT=${SRCFILENAME:-$CURDIRNAME} # if no src file given, use current dir name + CMD="go-${GOOS}-${GOARCH} build -o $OUTPUT-${GOOS}-${GOARCH} $@" + echo "$CMD" + $CMD || FAILURES="$FAILURES $PLATFORM" + done + if [ "$FAILURES" != "" ]; then + echo "*** go-build-all FAILED on $FAILURES ***" + return 1 + fi +} + +for PLATFORM in $PLATFORMS; do + go-alias $PLATFORM +done + +unset -f go-alias + +# crosscompile +go-build-all