static int cortotool_addDirToMonitor(corto_string dir, corto_ll monitorList) { corto_id cortoDir, srcDir; sprintf(cortoDir, "%s/.corto", dir); sprintf(srcDir, "%s/src", dir); corto_ll files = corto_opendir(srcDir); if (!files || !corto_fileTest(cortoDir)) { corto_error("'%s' isn't a valid project directory", dir); goto error; } corto_iter iter = corto_ll_iter(files); while (corto_iter_hasNext(&iter)) { corto_id srcFile; corto_string file = corto_iter_next(&iter); sprintf(srcFile, "%s/src/%s", dir, file); corto_fileMonitor *mon = cortotool_monitorNew(srcFile, dir); corto_ll_append(monitorList, mon); } corto_closedir(files); return 0; error: return -1; }
corto_int16 cortotool_test(int argc, char *argv[]) { corto_string testCase = NULL; if (argc > 1) { if (corto_chdir(argv[1])) { corto_error("corto: can't change to directory '%s'", argv[1]); goto error; } if (argc > 2) { testCase = argv[2]; } } if (corto_fileTest("test")) { corto_int8 ret = 0, sig = 0, err = 0; corto_pid pid = corto_procrun("corto", (char*[]){"corto", "build", "test", "--silent", NULL});
corto_int16 cortotool_publish(int argc, char *argv[]) { corto_ll silent, mute, notag, dirs, majorarg, minorarg, patcharg; corto_uint32 major = 0, minor = 0, patch = 0; CORTO_UNUSED(argc); corto_argdata *data = corto_argparse( argv, (corto_argdata[]){ {"$0", NULL, NULL}, /* Ignore 'publish' argument */ {"--silent", &silent, NULL}, {"--mute", &mute, NULL}, {"--notag", ¬ag, NULL}, {"$?*", &dirs, NULL}, {"$+major", &majorarg, NULL}, {"$|minor", &minorarg, NULL}, {"$|patch", &patcharg, NULL}, {NULL} } ); if (!data) { corto_error("corto: %s", corto_lasterr()); goto error; } if (dirs) { corto_string dir = corto_llGet(dirs, 0); if (corto_chdir(dir)) { corto_error("corto: %s", corto_lasterr()); goto error; } } if (!corto_fileTest("./.corto")) { corto_error("corto: invalid project directory"); goto error; } if (!notag) { corto_error( "corto: tagging of repository not yet supported " "(use --notag to just increase version)"); goto error; } corto_string version = corto_fileLoad(".corto/version.txt"); /* Patch version */ if (version) { char *v = version; /* Parse major version */ char *ptr = strchr(version, '.'); if (ptr) { *ptr = '\0'; major = atoi(v); v = ptr + 1; } /* Parse minor version */ ptr = strchr(v, '.'); if (ptr) { *ptr = '\0'; minor = atoi(v); v = ptr + 1; } /* Parse patch version */ patch = atoi(v); } if (majorarg) { major++; } if (minorarg) { minor++; } if (patcharg) { patch++; } FILE *f = fopen(".corto/version.txt", "w"); if (!f) { corto_error("failed to open '.corto/version.txt' (check permissions)"); goto error; } fprintf(f, "%u.%u.%u\n", major, minor, patch); fclose(f); corto_argclean(data); corto_dealloc(version); if (!silent) { corto_print("corto: version updated to %u.%u.%u", major, minor, patch); } return 0; error: return -1; }