Skip to content

Commit b1ace78

Browse files
committed
fix just manage so that arguments with spaces are wrapped and passed correctly #190
1 parent 9d264b0 commit b1ace78

File tree

1 file changed

+35
-3
lines changed

1 file changed

+35
-3
lines changed

justfile

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,55 @@
11
set windows-shell := ["powershell.exe", "-NoLogo", "-Command"]
22
set unstable := true
33
set script-interpreter := ['uv', 'run', '--script']
4+
set positional-arguments := true
45

56
export PYTHONPATH := source_directory()
67

78
[private]
89
default:
910
@just --list --list-submodules
1011

11-
# run the django admin
1212
[script]
13-
manage *COMMAND:
13+
_manage *COMMAND:
1414
import os
1515
import sys
1616
import shlex
1717
from pathlib import Path
1818
from django.core import management
1919
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tests.settings.base")
20-
management.execute_from_command_line(sys.argv + shlex.split('{{ COMMAND }}'))
20+
management.execute_from_command_line(["just manage", *shlex.split("{{ COMMAND }}")])
21+
22+
# run the django admin
23+
manage *COMMAND:
24+
#! /bin/sh
25+
ARGS_LIST=""
26+
for arg in "$@"; do
27+
case "$arg" in
28+
*[[:space:]]*)
29+
# Argument contains a space; wrap it in quotes.
30+
ARGS_LIST="${ARGS_LIST} \"\'${arg}\'\""
31+
;;
32+
*)
33+
# No spaces, print as-is.
34+
ARGS_LIST="${ARGS_LIST} ${arg}"
35+
;;
36+
esac
37+
done
38+
eval "just _manage $ARGS_LIST"
39+
40+
# run the django admin
41+
[windows]
42+
manage *COMMAND:
43+
$ARGS_LIST = ""
44+
foreach ($arg in $args) {
45+
if ($arg -match "\s") {
46+
$ARGS_LIST += " " + '"' + "'" + $arg + "'" + '"'
47+
}
48+
else {
49+
$ARGS_LIST += " " + $arg
50+
}
51+
}
52+
Invoke-Expression "just _manage $ARGS_LIST"
2153

2254
# install the uv package manager
2355
[linux]

0 commit comments

Comments
 (0)