Skip to content

Commit 9b39501

Browse files
committed
Expand '~' in :tangle switch; Improve error if dest dir absent
Fixes #13.
1 parent 8432884 commit 9b39501

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/ntangle.nim

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ proc parseTangleHeaderProperties(file: string, lnum: int, haObj: LangAndArgs) =
157157
of "no":
158158
bufEnabled = false
159159
else: #filename
160-
outfile = argval
160+
outfile = argval.expandTilde
161161
if (not outfile.startsWith "/"): # if relative path
162162
outfile = dir / outfile
163163
of "padline":
@@ -474,11 +474,12 @@ proc writeFiles() =
474474
dataUpdated = data
475475
dbg " outDir: `{outDir}'"
476476
if outDir != "":
477-
if (not dirExists(outDir)) and fileHeaderArgs[file].mkdirp:
478-
echo fmt" Creating {outDir}/ .."
479-
createDir(outDir)
480477
if (not dirExists(outDir)):
481-
raise newException(IOError, fmt"Unable to write to `{file}'. `{outDir}/' directory does not exist.")
478+
if fileHeaderArgs[file].mkdirp:
479+
echo fmt" Creating {outDir}/ .."
480+
createDir(outDir)
481+
else:
482+
raise newException(UserError, fmt"Unable to write to `{file}' as `{outDir}/' directory does not exist. Set ':mkdirp yes' header arg to auto-create it.")
482483

483484
if fileHeaderArgs[file].shebang != "":
484485
dataUpdated = fileHeaderArgs[file].shebang & "\n" & data

tests/mkdirp_no/mkdirp_no.org

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
#+begin_src shell :tangle "./foo/bar/mkdirp_test.sh"
1+
#+begin_src shell :tangle "~/foo/bar/mkdirp_test.sh"
22
echo "Hello"
33
#+end_src

tests/test.sh

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env bash
2-
# Time-stamp: <2018-10-07 23:27:20 kmodi>
2+
# Time-stamp: <2018-10-08 16:54:50 kmodi>
33

44
set -euo pipefail # http://redsymbol.net/articles/unofficial-bash-strict-mode
55
IFS=$'\n\t'
@@ -21,8 +21,11 @@ run_test () {
2121
"${bin}" tests/missing_arg_value/missing_arg_value.org || true
2222
"${bin}" tests/invalid_arg_no_colon/ || true
2323

24-
rm -rf ./tests/foo/bar/
25-
"${bin}" tests/mkdirp_no/mkdirp_no.org || true
24+
TEMP_HOME="${repo_root}/tests/mkdirp_no"
25+
rm -rf "${TEMP_HOME}/foo/"
26+
HOME="${TEMP_HOME}" "${bin}" tests/mkdirp_no/mkdirp_no.org || true
27+
28+
rm -rf "${repo_root}/tests/mkdirp_yes/foo/"
2629
"${bin}" tests/mkdirp_yes/mkdirp_yes.org
2730

2831
# Test tangling an Org file in the same dir.

0 commit comments

Comments
 (0)