Make svg-flatten auto-search for cargo dependencies in all call sites
This commit is contained in:
parent
f2f0ac2416
commit
4ffb4c6582
6 changed files with 128 additions and 88 deletions
|
|
@ -1,18 +1,16 @@
|
|||
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <sys/types.h>
|
||||
#include <pwd.h>
|
||||
#include <filesystem>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
#include <argagg.hpp>
|
||||
#include <subprocess.h>
|
||||
#include <gerbolyze.hpp>
|
||||
#include "vec_core.h"
|
||||
#include <base64.h>
|
||||
#include "util.h"
|
||||
|
||||
using argagg::parser_results;
|
||||
using argagg::parser;
|
||||
|
|
@ -354,70 +352,8 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
string dpi_str = to_string(dpi);
|
||||
|
||||
const char *homedir;
|
||||
if ((homedir = getenv("HOME")) == NULL) {
|
||||
homedir = getpwuid(getuid())->pw_dir;
|
||||
}
|
||||
string homedir_s(homedir);
|
||||
string loc_in_home = homedir_s + "/.cargo/bin/usvg";
|
||||
|
||||
const char *command_line[] = {nullptr, "--keep-named-groups", "--dpi", dpi_str.c_str(), barf.c_str(), frob.c_str(), NULL};
|
||||
bool found_usvg = false;
|
||||
int usvg_rc=-1;
|
||||
for (int i=0; i<3; i++) {
|
||||
const char *usvg_envvar;
|
||||
switch (i) {
|
||||
case 0:
|
||||
if ((usvg_envvar = getenv("USVG")) == NULL) {
|
||||
continue;
|
||||
} else {
|
||||
command_line[0] = "usvg";
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
command_line[0] = "usvg";
|
||||
break;
|
||||
|
||||
case 2:
|
||||
command_line[0] = loc_in_home.c_str();
|
||||
break;
|
||||
}
|
||||
|
||||
struct subprocess_s subprocess;
|
||||
int rc = subprocess_create(command_line, subprocess_option_inherit_environment, &subprocess);
|
||||
if (rc) {
|
||||
cerr << "Error calling usvg!" << endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
usvg_rc = -1;
|
||||
rc = subprocess_join(&subprocess, &usvg_rc);
|
||||
if (rc) {
|
||||
cerr << "Error calling usvg!" << endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
rc = subprocess_destroy(&subprocess);
|
||||
if (rc) {
|
||||
cerr << "Error calling usvg!" << endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (usvg_rc == 255) {
|
||||
continue;
|
||||
}
|
||||
found_usvg = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!found_usvg) {
|
||||
cerr << "Error: Cannot find usvg. Is it installed and in $PATH?" << endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (usvg_rc) {
|
||||
cerr << "usvg returned an error code: " << usvg_rc << endl;
|
||||
const char *command_line[] = {nullptr, "--keep-named-groups", "--dpi", dpi_str.c_str(), barf.c_str(), frob.c_str(), nullptr};
|
||||
if (run_cargo_command("usvg", command_line, "USVG")) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue