diff options
Diffstat (limited to 'src/febootstrap_cmdline.ml')
-rw-r--r-- | src/febootstrap_cmdline.ml | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/src/febootstrap_cmdline.ml b/src/febootstrap_cmdline.ml new file mode 100644 index 0000000..667e297 --- /dev/null +++ b/src/febootstrap_cmdline.ml @@ -0,0 +1,96 @@ +(* febootstrap 3 + * Copyright (C) 2009-2010 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + *) + +open Printf + +let excludes = ref [] +let names_mode = ref false +let outputdir = ref "." +let packages = ref [] +let save_temps = ref false +let verbose = ref false +let warnings = ref true +let yum_config = ref None + +let print_version () = + printf "%s %s\n" Config.package_name Config.package_version; + exit 0 + +let add_exclude re = + excludes := Str.regexp re :: !excludes + +let set_yum_config str = + yum_config := Some str + +let argspec = Arg.align [ + "--exclude", Arg.String add_exclude, + "regexp Exclude packages matching regexp"; + "--names", Arg.Set names_mode, + " Specify set of root package names on command line"; + "--no-warnings", Arg.Clear warnings, + " Suppress warnings"; + "-o", Arg.Set_string outputdir, + "outputdir Set output directory (default: \".\")"; + "--save-temp", Arg.Set save_temps, + " Don't delete temporary files and directories on exit."; + "--save-temps", Arg.Set save_temps, + " Don't delete temporary files and directories on exit."; + "-v", Arg.Set verbose, + " Enable verbose output"; + "--verbose", Arg.Set verbose, + " Enable verbose output"; + "-V", Arg.Unit print_version, + " Print package name and version, and exit"; + "--version", Arg.Unit print_version, + " Print package name and version, and exit"; + "--yum-config", Arg.String set_yum_config, + "file Set alternate yum configuration file"; +] +let anon_fn str = + packages := str :: !packages + +let usage_msg = + "\ +febootstrap - bootstrapping tool for creating supermin appliances +Copyright (C) 2009-2010 Red Hat Inc. + +Usage: + febootstrap [-o OUTPUTDIR] --names LIST OF PKGS ... + febootstrap [-o OUTPUTDIR] PKG FILE NAMES ... + +For full instructions see the febootstrap(8) man page. + +Options:\n" + +let () = + Arg.parse argspec anon_fn usage_msg; + if !packages = [] then ( + eprintf "febootstrap: no packages listed on the command line\n"; + exit 1 + ) + +let excludes = List.rev !excludes +let names_mode = !names_mode +let outputdir = !outputdir +let packages = List.rev !packages +let save_temps = !save_temps +let verbose = !verbose +let warnings = !warnings +let yum_config = !yum_config + +let debug fs = ksprintf (fun str -> if verbose then print_endline str) fs |