mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-08 20:43:31 +08:00
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
This commit is contained in:
@@ -1,20 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Author: w0rp <devw0rp@gmail.com>
|
||||
# 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_file=$(mktemp --tmpdir "ale-XXXXXXXXX$file_extension")
|
||||
trap 'rm $temp_file' EXIT
|
||||
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
|
||||
|
||||
while read -r; do
|
||||
echo "$REPLY" >> "$temp_file"
|
||||
done
|
||||
# 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"
|
||||
|
||||
Reference in New Issue
Block a user