ww output: match Go exact -o parsing

This commit is contained in:
2026-08-22 01:59:02 +09:00
parent 4b9968e4e6
commit d61805262e
7 changed files with 701 additions and 36 deletions

View File

@@ -7375,7 +7375,8 @@ parse_build_flags(const char *cmd, int argc, char **argv,
} else if (strncmp(argv[i], "-I", 2) == 0 && argv[i][2]) {
if (include_append(cmd, incs, incsz, argv[i] + 2) < 0)
return -1;
} else if (strcmp(argv[i], "-o") == 0) {
} else if (strcmp(argv[i], "-o") == 0 ||
(strcmp(cmd, "build") == 0 && strcmp(argv[i], "--o") == 0)) {
if (i + 1 >= argc) {
fprintf(stderr,
"ww %s: -o needs an argument\n", cmd);
@@ -7383,7 +7384,16 @@ parse_build_flags(const char *cmd, int argc, char **argv,
}
if (cli_copy(cmd, "-o", outpath, outsz, argv[++i]) < 0)
return -1;
} else if (strncmp(argv[i], "-o", 2) == 0 && argv[i][2]) {
} else if (strcmp(cmd, "build") == 0 &&
strncmp(argv[i], "-o=", 3) == 0) {
if (cli_copy(cmd, "-o", outpath, outsz, argv[i] + 3) < 0)
return -1;
} else if (strcmp(cmd, "build") == 0 &&
strncmp(argv[i], "--o=", 4) == 0) {
if (cli_copy(cmd, "-o", outpath, outsz, argv[i] + 4) < 0)
return -1;
} else if (strcmp(cmd, "run") == 0 &&
strncmp(argv[i], "-o", 2) == 0 && argv[i][2]) {
if (cli_copy(cmd, "-o", outpath, outsz, argv[i] + 2) < 0)
return -1;
} else if (argv[i][0] == '-') {
@@ -7863,7 +7873,8 @@ do_test(int argc, char **argv)
} else if (strncmp(argv[i], "-timeout-ms=", 12) == 0 &&
argv[i][12] != '\0') {
packageopts = 1;
} else if (strcmp(argv[i], "-o") == 0) {
} else if (strcmp(argv[i], "-o") == 0 ||
strcmp(argv[i], "--o") == 0) {
if (i + 1 >= argc) {
fprintf(stderr,
"ww test: -o needs an argument\n");
@@ -7871,9 +7882,12 @@ do_test(int argc, char **argv)
}
if (cli_copy("test", "-o", outstem, sizeof outstem,
argv[++i]) < 0) return 2;
} else if (argv[i][1] == 'o' && argv[i][2]) {
} else if (strncmp(argv[i], "-o=", 3) == 0) {
if (cli_copy("test", "-o", outstem, sizeof outstem,
argv[i] + 2) < 0) return 2;
argv[i] + 3) < 0) return 2;
} else if (strncmp(argv[i], "--o=", 4) == 0) {
if (cli_copy("test", "-o", outstem, sizeof outstem,
argv[i] + 4) < 0) return 2;
} else if (strcmp(argv[i], "-w") == 0) {
if (i + 1 >= argc) {
fprintf(stderr,