Skip to content

Commit

Permalink
Merge pull request #276 from epage/action
Browse files Browse the repository at this point in the history
fix(action): Be stricter/cleaner with entrypoint
  • Loading branch information
epage committed Jun 5, 2021
2 parents 0aaa2c0 + 60fe94c commit 78787b1
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 54 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/test-action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ jobs:
uses: actions/checkout@v2

- name: Prepare file with mistakes.
run: echo "The quick brown foxx jumped over the slepy dog." > file.txt
run: echo "Finallizes" > file.txt
- name: Test force pass with mistakes
continue-on-error: true
uses: ./
with:
with:
files: ./file.txt

- name: Prepare file with no mistakes.
run: echo "The quick brown fox jumped over the sleepy dog." > file.txt
- name: Test force pass with no mistakes
run: echo "Finalizes" > file.txt
- name: Test pass with no mistakes
uses: ./
with:
with:
files: ./file.txt
65 changes: 20 additions & 45 deletions docker/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,59 +1,34 @@
#!/bin/bash

set -e
set -eu

printf "Found files in workspace:\n"
ls
log() {
echo -e "$1" >&2
}

printf "\nLooking for typos installed...\n"
which typos
CMD_NAME="typos"
TARGET=${INPUT_FILES:-"."}

COMMAND="typos"

# Show the _typos.toml file
if [ -f "_typos.toml" ]; then
echo "_typos.toml:"
cat _typos.toml
echo
if [[ -z $(ls ${TARGET} 2>/dev/null) ]]; then
log "ERROR: Input files (${TARGET}) not found"
exit 1
fi

# Ignore implicit configuration files
if [ "${INPUT_ISOLATED}" == "true" ]; then
COMMAND="${COMMAND} --isolated"
if [[ -z $(which ${CMD_NAME} 2>/dev/null) ]]; then
log "ERROR: 'typos' not found"
exit 1
fi

COMMAND="${CMD_NAME} ${TARGET}"

# Use a custom configuration file
if [ ! -z "${INPUT_CONFIG}" ]; then

# It must exist
if [ ! -f "${INPUT_CONFIG}" ]; then
printf "${INPUT_CONFIG} does not exist.\n"
exit 1;
else
# Show the custom config to the user
printf "Custom config:\n"
cat "${INPUT_CONFIG}"
echo
fi
COMMAND="${COMMAND} --config ${INPUT_CONFIG}"
# Ignore implicit configuration files
if [ "${INPUT_ISOLATED:-false}" == "true" ]; then
COMMAND+=" --isolated"
fi

# Files are technically optional
if [ ! -z "${INPUT_FILES}" ]; then
COMMAND="${COMMAND} ${INPUT_FILES}"
# Use a custom configuration file
if [[ -n "${INPUT_CONFIG:-}" ]]; then
COMMAND+=" --config ${INPUT_CONFIG}"
fi

echo "Command: "
echo "${COMMAND}"
echo

log "$ ${COMMAND}"
${COMMAND}
retval=$?

if [[ "${retval}" -eq 0 ]]; then
printf "No spelling mistakes found! 🎉️\n"
else
printf "Spelling mistakes found! 😱️\n"
exit $retval;
fi
9 changes: 5 additions & 4 deletions src/bin/typos-cli/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -172,13 +172,14 @@ fn run_checks(
let mut errors_found = false;
for path in args.path.iter() {
let cwd = if path == std::path::Path::new("-") {
global_cwd.as_path()
global_cwd.clone()
} else if path.is_file() {
path.parent().unwrap()
let mut cwd = path.canonicalize().with_code(proc_exit::Code::USAGE_ERR)?;
cwd.pop();
cwd
} else {
path.as_path()
path.clone()
};
let cwd = cwd.canonicalize().with_code(proc_exit::Code::USAGE_ERR)?;

engine
.init_dir(&cwd)
Expand Down
7 changes: 7 additions & 0 deletions tests/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,10 @@ fn test_stdin_correct() {
.write_stdin("Apropriate world");
cmd.assert().success().stdout("Appropriate world");
}

#[test]
fn test_file_failure() {
let mut cmd = Command::cargo_bin("typos").unwrap();
cmd.arg("README.md");
cmd.assert().code(2);
}

0 comments on commit 78787b1

Please sign in to comment.