示例#1
0
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;
}
示例#2
0
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});
示例#3
0
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", &notag, 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;
}