import collections
import configparser
import contextlib
+import copy
import crypt
import ctypes
import ctypes.util
group = parser.add_argument_group("Additional Configuration")
group.add_argument('-C', "--directory", help='Change to specified directory before doing anything', metavar='PATH')
group.add_argument("--default", dest='default_path', help='Read configuration data from file', metavar='PATH')
+ group.add_argument('-a', "--all", action='store_true', dest='all', default=False, help='Build all settings files in mkosi.files/')
+ group.add_argument("--all-directory", dest='all_directory', help='Specify path to directory to read settings files from', metavar='PATH')
group.add_argument("--kernel-commandline", help='Set the kernel command line (only bootable images)')
group.add_argument("--hostname", help="Set hostname")
parser.print_help()
sys.exit(0)
+ if args.all and args.default_path:
+ die("--all and --default= may not be combined.")
+
+ args_find_path(args, 'all_directory', "mkosi.files/")
+
return args
return strip_suffixes(path) + ".roothash"
-def load_args() -> CommandLineArguments:
- args = parse_args()
-
- if args.directory is not None:
- os.chdir(args.directory)
-
+def load_args(args) -> CommandLineArguments:
global arg_debug
arg_debug = args.debug
os.environ["PATH"] = new_path + ":" + original_path
-def main() -> None:
- args = load_args()
+def run_verb(args):
+ load_args(args)
if args.verb in ("build", "clean", "shell", "boot", "qemu"):
check_root()
if args.verb == "summary" or needs_build:
print_summary(args)
- prepend_to_environ_path(args.extra_search_paths)
-
if needs_build:
check_root()
check_native(args)
run_qemu(args)
+def main() -> None:
+ args = parse_args()
+
+ if args.directory is not None:
+ os.chdir(args.directory)
+
+ prepend_to_environ_path(args.extra_search_paths)
+
+ if args.all:
+ for f in os.scandir(args.all_directory):
+
+ if not f.name.startswith("mkosi."):
+ continue
+
+ a = copy.deepcopy(args)
+ a.default_path = f.path
+
+ with complete_step('Processing ' + f.path):
+ run_verb(a)
+ else:
+ run_verb(args)
+
+
if __name__ == "__main__":
main()