47 std::string usage =
"Creates an archive from FSTs.\n\n Usage: ";
49 usage +=
" [in1.fst [[in2.fst ...] out.far]]\n";
51 SET_FLAGS(usage.c_str(), &argc, &argv,
true);
54 std::vector<std::string> sources;
55 if (FST_FLAGS_file_list_input) {
56 for (
int i = 1; i < argc - 1; ++i) {
57 std::ifstream istrm(argv[i]);
59 while (std::getline(istrm, str)) sources.push_back(str);
62 for (
int i = 1; i < argc - 1; ++i)
63 sources.push_back(strcmp(argv[i],
"-") != 0 ? argv[i] :
"");
64 if (sources.empty()) {
67 sources.push_back(argc == 2 && strcmp(argv[1],
"-") != 0 ? argv[1] :
"");
72 const std::string out_far =
73 argc > 2 && strcmp(argv[argc - 1],
"-") != 0 ? argv[argc - 1] :
"";
77 LOG(ERROR) <<
"Unknown or unsupported FAR type: " 78 << FST_FLAGS_far_type;
83 if (!sources.empty()) {
85 if (arc_type.empty())
return 1;
88 std::unique_ptr<FarWriterClass> writer(
90 if (!writer)
return 1;
92 s::Create(sources, *writer, FST_FLAGS_generate_keys,
93 FST_FLAGS_key_prefix, FST_FLAGS_key_suffix);
95 if (writer->Error()) {
96 FSTERROR() <<
"Error writing FAR: " << out_far;
DECLARE_int32(generate_keys)
void ExpandArgs(int argc, char **argv, int *argcp, char ***argvp)
int farcreate_main(int argc, char **argv)
static const std::string & Type()
std::string LoadArcTypeFromFst(const std::string &fst_source)
#define SET_FLAGS(usage, argc, argv, rmflags)
DECLARE_string(key_prefix)
bool GetFarType(std::string_view str, FarType *far_type)
DECLARE_bool(file_list_input)
void Create(const std::vector< std::string > &sources, FarWriterClass &writer, const int32_t generate_keys, const std::string &key_prefix, const std::string &key_suffix)