aisl/tool/compose.c

85 lines
1.8 KiB
C

/******************************************************************************
*
* Copyright (c) 2017-2019 by Löwenware Ltd
* Please, refer LICENSE file for legal information
*
******************************************************************************/
/**
* @file compose.c
* @author Ilja Kartašov <ik@lowenware.com>
* @brief
*
* @see https://lowenware.com/
*/
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <components/html.h>
#include "option.h"
#include "compose.h"
static int
compose_help(void)
{
printf("NAME\n");
printf("\taisl-compose - Compose plain text resource\n\n");
printf("SYNOPSIS\n");
printf("\taisl compose [--format=auto|html|js|css] <source> <target>\n\n");
printf("DESCRIPTION\n");
printf("\tComposes a plain text resource to its production version.");
printf("OPTIONS\n");
printf("\t--format=auto|html|js|css\n");
printf("\t Manually set format for the composer. Usefull when file "
"extension does not allow to determine type automatically.\n\n");
return 0;
}
int
compose_execute(int argc, char **argv)
{
int result;
struct cstuff_list list;
struct ax_html_options opts = {0};
if (g_options & OPTION_FLAG_HELP) {
return compose_help();
}
result = -1;
if (!(argc == 1 || argc == 2)) {
return result;
}
g_source = argv[0];
if (argc == 2) {
g_target = argv[1];
}
opts.offset = "\t";
opts.path = g_target ? g_target : ".";
opts.name = "html";
opts.minimize = true;
if (!cstuff_list_init(&list, 128)) {
if (ax_html_import(&list, g_source) == AISL_SUCCESS) {
if (ax_html_export(&list, &opts) == AISL_SUCCESS) {
result = 0;
} else {
fprintf(stderr, "Export failed\n");
}
} else {
fprintf(stderr, "Import failed: %s\n", strerror(errno));
}
cstuff_list_release(&list, (CStuffListFree)ax_html_free);
}
return result;
}