Entry point for the export subcommand Read in manifest Export manifest Export dependency tree
Wait for other fpm processes that use the same build directory
Generate dependency tree Export dependency tree Export full model
Wait for other fpm processes that use the same build directory
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(fpm_export_settings), | intent(inout) | :: | settings |
Representation of the command line arguments |
subroutine cmd_export(settings) !> Representation of the command line arguments type(fpm_export_settings), intent(inout) :: settings type(package_config_t) :: package type(dependency_tree_t) :: deps type(fpm_model_t) :: model type(error_t), allocatable :: error type(build_lock_t) :: lock character(len=:), allocatable :: filename if (len_trim(settings%dump_manifest)<=0 .and. & len_trim(settings%dump_model)<=0 .and. & len_trim(settings%dump_dependencies)<=0) then call fpm_stop(0,'*cmd_export* exiting: no manifest/model/dependencies keyword provided') end if !> Read in manifest call get_package_data(package, "fpm.toml", error, apply_defaults=.true.) call handle_error(error, lock) !> Export manifest if (len_trim(settings%dump_manifest)>0) then filename = trim(settings%dump_manifest) call package%dump(filename, error, json=name_is_json(filename)) end if !> Export dependency tree if (len_trim(settings%dump_dependencies)>0) then !> Wait for other fpm processes that use the same build directory call lock%acquire(settings%build_dir) !> Generate dependency tree filename = join_path(settings%build_dir, "cache.toml") call new_dependency_tree(deps, cache=filename, verbosity=merge(2, 1, settings%verbose), build_dir=settings%build_dir) call deps%add(package, error) call handle_error(error, lock) !> Export dependency tree filename = settings%dump_dependencies call deps%dump(filename, error, json=name_is_json(filename)) call handle_error(error, lock) end if !> Export full model if (len_trim(settings%dump_model)>0) then !> Wait for other fpm processes that use the same build directory call lock%acquire(settings%build_dir) call build_model(model, settings%fpm_build_settings, package, error) if (allocated(error)) then call lock%release() call fpm_stop(1,'*cmd_export* Model error: '//error%message) end if filename = settings%dump_model call model%dump(filename, error, json=name_is_json(filename)) call handle_error(error, lock) end if call lock%release() end subroutine cmd_export