From 17b2cf8dc274f950865911185fc4c6a9ccf915d5 Mon Sep 17 00:00:00 2001 From: jvech Date: Sat, 21 Oct 2023 21:43:36 -0500 Subject: setup: man page improved Documentation: Example sections was improved Files sections was added Fixes: default config filepath was fixed --- src/main.c | 12 ++++++++++-- src/util.c | 13 +++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 210db7e..8718a66 100644 --- a/src/main.c +++ b/src/main.c @@ -194,6 +194,7 @@ struct Cost load_loss(struct Configs cfg) } int main(int argc, char *argv[]) { + char default_config_path[512]; struct Configs ml_configs = { .epochs = 100, .alpha = 1e-5, @@ -202,11 +203,18 @@ int main(int argc, char *argv[]) { .out_filepath = NULL, }; - // Try different config paths - load_config(&ml_configs, 3, "~/.config/ml/ml.cfg", "~/.ml/ml.cfg", ml_configs.config_filepath); + // First past to check if --config option was put + util_load_cli(&ml_configs, argc, argv); + optind = 1; + // Load configs with different possible paths + sprintf(default_config_path, "%s/%s", getenv("HOME"), ".config/ml/ml.cfg"); + load_config(&ml_configs, 2, ml_configs.config_filepath, default_config_path); + + // re-read cli options again, to overwrite file configuration options util_load_cli(&ml_configs, argc, argv); argc -= optind; argv += optind; + Layer *network = load_network(ml_configs); Array X, y; diff --git a/src/util.c b/src/util.c index 8c7ec14..cd87d5c 100644 --- a/src/util.c +++ b/src/util.c @@ -83,7 +83,7 @@ void version() "the Free Software Foundation, either version 3 of the License, or\n" "(at your option) any later version.\n\n" ); - printf("Written by vech\n"); + printf("Written by jvech\n"); exit(0); } @@ -93,17 +93,14 @@ void usage(int exit_code) fprintf(fp, "Usage: ml train [Options] JSON_FILE\n" " or: ml predict [-o FILE] FILE\n" - "Train and predict json data\n" "\n" "Options:\n" " -h, --help Show this message\n" " -a, --alpha=ALPHA Learning rate (only works with train)\n" " -e, --epochs=EPOCHS Epochs to train the model (only works with train)\n" " -o, --output=FILE Output file (only works with predict)\n" + " -c, --config=FILE Configuration filepath [default=~/.config/ml/ml.cfg]\n" "\n" - "Examples:\n" - " $ ml train -e 150 -a 1e-4 housing.json\n" - " $ ml predict housing.json -o predictions.json\n" ); exit(exit_code); } @@ -117,12 +114,13 @@ void util_load_cli(struct Configs *ml, int argc, char *argv[]) {"epochs", required_argument, 0, 'e'}, {"alpha", required_argument, 0, 'a'}, {"output", required_argument, 0, 'o'}, + {"config", required_argument, 0, 'c'}, {0, 0, 0, 0 }, }; int c; while (1) { - c = getopt_long(argc, argv, "hve:a:o:i:l:", long_opts, NULL); + c = getopt_long(argc, argv, "hvc:e:a:o:i:l:", long_opts, NULL); if (c == -1) { break; @@ -137,6 +135,9 @@ void util_load_cli(struct Configs *ml, int argc, char *argv[]) case 'o': ml->out_filepath = optarg; break; + case 'c': + ml->config_filepath = optarg; + break; case 'h': usage(0); case 'v': -- cgit v1.2.3-70-g09d2