This repository has been archived on 2024-07-19. You can view files and clone it, but cannot push or open issues or pull requests.
ale/stdin-wrapper
Łukasz Jan Niemier e293e0b5ab Use cat instead of read -r to stream stdin to file (#120)
* Use `cat` instead of `read -r` to stream stdin to file

* Cleanup dmd-wrapper

* Fix typo

* Make wrapper work on macOS

* Use fifo instead of temporary file

* Fix stdin-wrapper

* Use `awk` instead of `read` hackery

* Finish refactoring

* Fix `exec` issue

* Add myself as an coauthor of wrapper scripts (no shame at all :P)

* Fix dmd-wrapper

* Extract check_dubfile
2016-10-22 13:52:49 +01:00

28 lines
884 B
Bash
Executable file

#!/usr/bin/env bash
# Authors: w0rp <devw0rp@gmail.com>, hauleth <lukasz@niemier.pl>
# Description: This script implements a wrapper for any program which does not accept
# stdin input on most Unix machines. The input to the script is read to a
# temporary file, and the first argument sets a particular file extension
# for the temporary file.
set -eu
# All of the following arguments are read as command to run.
file_extension="$1"
shift
temp_dir=$(mktemp -d 2>/dev/null || mktemp -d -t 'ale_linter')
temp_file="$temp_dir/file$file_extension"
trap 'rm -r "$temp_dir"' EXIT
# In perfect world it wouldn't be needed, but some tools (`go vet`, I am looking
# at you) do not fit in line and require filename ending. Otherwise it would be
# simple as
#
# "$@" /dev/stdin
#
# without all that hackery with copying `/dev/stdin`
cp /dev/stdin "$temp_file"
"$@" "$temp_file"