1:- module(canny_pack,
    2          [ load_pack_modules/2,                % +Pack,-Modules
    3            load_prolog_module/2                % +Directory,-Module
    4          ]).    5:- autoload(library(filesex), [directory_member/3]).    6:- autoload(library(prolog_pack), [pack_property/2]).    7:- use_module(library(plunit), [load_test_files/1]).
 load_pack_modules(+Pack, -Modules) is semidet
Finds and loads all Prolog module sources for Pack. Also loads test files having once loaded the pack. Modules becomes a list of successfully-loaded pack modules.
   15load_pack_modules(Pack, Modules) :-
   16    pack_property(Pack, directory(Directory)),
   17    findall(Module, load_prolog_module(Directory, Module), Modules),
   18    load_test_files([]).
 load_prolog_module(+Directory, -Module) is nondet
Loads Prolog source recursively at Directory for Module. Does not load non-module sources, e.g. scripts without a module. Operates non-deterministically for Module. Finds and loads all the modules within a given directory; typically amounts to a pack root directory. You can find the File from which the module loaded using module properties, i.e. module_property(Module, file(File)).
   29load_prolog_module(Directory, Module) :-
   30    directory_member(Directory, File, [file_type(prolog), recursive(true)]),
   31    catch(load_files(File, [must_be_module(true)]), _, fail),
   32    module_property(Module, file(File))