handle_manifest_change Subroutine

private subroutine handle_manifest_change(self)

Handle a manifest change (fpm.toml) by rebuilding the watch list.

This also notifies feature plugins via on_manifest_changed.

Arguments

Type IntentOptional Attributes Name
class(watcher_t), intent(inout) :: self

Calls

proc~~handle_manifest_change~~CallsGraph proc~handle_manifest_change handle_manifest_change proc~log_info log_info proc~handle_manifest_change->proc~log_info proc~manifest_key_from_files manifest_key_from_files proc~handle_manifest_change->proc~manifest_key_from_files proc~on_manifest_changed_all feature_manager_t%on_manifest_changed_all proc~handle_manifest_change->proc~on_manifest_changed_all proc~rebuild_watch_list rebuild_watch_list proc~handle_manifest_change->proc~rebuild_watch_list colorize colorize proc~log_info->colorize basename basename proc~manifest_key_from_files->basename features features proc~manifest_key_from_files->features proc~file_fingerprint file_fingerprint proc~manifest_key_from_files->proc~file_fingerprint proc~fnv1a_mix_i64 fnv1a_mix_i64 proc~manifest_key_from_files->proc~fnv1a_mix_i64 proc~fnv1a_mix_str fnv1a_mix_str proc~manifest_key_from_files->proc~fnv1a_mix_str proc~feat_manifest_noop watch_feature_t%feat_manifest_noop proc~on_manifest_changed_all->proc~feat_manifest_noop proc~rebuild_watch_list->proc~log_info proc~rebuild_watch_list->proc~manifest_key_from_files proc~compute_watch_files_from_settings compute_watch_files_from_settings proc~rebuild_watch_list->proc~compute_watch_files_from_settings proc~ftoa ftoa proc~rebuild_watch_list->proc~ftoa proc~init_fingerprints init_fingerprints proc~rebuild_watch_list->proc~init_fingerprints proc~on_watch_list_built_all feature_manager_t%on_watch_list_built_all proc~rebuild_watch_list->proc~on_watch_list_built_all proc~print_banner print_banner proc~rebuild_watch_list->proc~print_banner proc~print_file_list print_file_list proc~rebuild_watch_list->proc~print_file_list str str proc~rebuild_watch_list->str proc~compute_watch_files_from_settings->proc~log_info proc~compute_watch_files_from_settings->basename proc~compute_watch_files_from_settings->proc~ftoa proc~compute_watch_files_from_settings->str add add proc~compute_watch_files_from_settings->add build_model build_model proc~compute_watch_files_from_settings->build_model dep dep proc~compute_watch_files_from_settings->dep get_package_data get_package_data proc~compute_watch_files_from_settings->get_package_data is_executable_target is_executable_target proc~compute_watch_files_from_settings->is_executable_target join_path join_path proc~compute_watch_files_from_settings->join_path new_dependency_tree new_dependency_tree proc~compute_watch_files_from_settings->new_dependency_tree proc~dfs_mark_bool dfs_mark_bool proc~compute_watch_files_from_settings->proc~dfs_mark_bool proc~dfs_mark_mask dfs_mark_mask proc~compute_watch_files_from_settings->proc~dfs_mark_mask proc~filter_watch_files filter_watch_files proc~compute_watch_files_from_settings->proc~filter_watch_files proc~gather_files_with_mask gather_files_with_mask proc~compute_watch_files_from_settings->proc~gather_files_with_mask proc~is_run_or_test is_run_or_test proc~compute_watch_files_from_settings->proc~is_run_or_test proc~normalize_path normalize_path proc~compute_watch_files_from_settings->proc~normalize_path proc~push_file_with_mask push_file_with_mask proc~compute_watch_files_from_settings->proc~push_file_with_mask proc~select_names_or_all select_names_or_all proc~compute_watch_files_from_settings->proc~select_names_or_all proc~trim_or_empty trim_or_empty proc~compute_watch_files_from_settings->proc~trim_or_empty targets_from_sources targets_from_sources proc~compute_watch_files_from_settings->targets_from_sources proc~hash_block hash_block proc~file_fingerprint->proc~hash_block proc~fnv1a_mix_str->proc~fnv1a_mix_i64 proc~init_fingerprints->proc~file_fingerprint proc~feat_list_noop watch_feature_t%feat_list_noop proc~on_watch_list_built_all->proc~feat_list_noop proc~print_banner->colorize proc~print_banner->proc~ftoa proc~print_banner->str proc~active_features active_features proc~print_banner->proc~active_features proc~active_profile active_profile proc~print_banner->proc~active_profile proc~command_mode command_mode proc~print_banner->proc~command_mode proc~trim_or_default trim_or_default proc~print_banner->proc~trim_or_default proc~print_file_list->colorize proc~print_file_list->str proc~join_csv join_csv proc~active_features->proc~join_csv proc~active_profile->proc~trim_or_default proc~dfs_mark_bool->proc~dfs_mark_bool dependencies dependencies proc~dfs_mark_bool->dependencies proc~find_ptr_index find_ptr_index proc~dfs_mark_bool->proc~find_ptr_index proc~dfs_mark_mask->proc~dfs_mark_mask proc~dfs_mark_mask->dependencies proc~dfs_mark_mask->proc~find_ptr_index proc~filter_watch_files->basename proc~filter_watch_files->proc~normalize_path glob glob proc~filter_watch_files->glob include_dependencies include_dependencies proc~gather_files_with_mask->include_dependencies proc~vec_push_unique vec_push_unique proc~gather_files_with_mask->proc~vec_push_unique proc~hash_block->proc~fnv1a_mix_i64 proc~push_file_with_mask->proc~vec_push_unique proc~select_names_or_all->basename proc~select_names_or_all->is_executable_target proc~select_names_or_all->glob proc~vec_push_unique->proc~normalize_path exists exists proc~vec_push_unique->exists proc~is_ignored_path is_ignored_path proc~vec_push_unique->proc~is_ignored_path proc~is_in_dep_dirs is_in_dep_dirs proc~vec_push_unique->proc~is_in_dep_dirs proc~vec_grow vec_grow proc~vec_push_unique->proc~vec_grow proc~is_ignored_path->proc~normalize_path proc~contains_path_fragment contains_path_fragment proc~is_ignored_path->proc~contains_path_fragment proc~starts_with starts_with proc~is_ignored_path->proc~starts_with proc~is_in_dep_dirs->proc~normalize_path proc~is_in_dep_dirs->proc~starts_with proc~ends_with ends_with proc~contains_path_fragment->proc~ends_with

Called by

proc~~handle_manifest_change~~CalledByGraph proc~handle_manifest_change handle_manifest_change proc~watcher_run watcher_t%watcher_run proc~watcher_run->proc~handle_manifest_change

Source Code

   subroutine handle_manifest_change(self)
      class(watcher_t), intent(inout) :: self
      integer(int64) :: man_now

      man_now = manifest_key_from_files(self%cfg%settings, self%files)
      if (man_now /= self%man_prev) then
         call self%fm%on_manifest_changed_all(self%man_prev, man_now)
         self%man_prev = man_now
      end if
      call log_info(self%cfg%w, "manifest changed -> rebuilding watch list")
      call rebuild_watch_list(self, print_header=.false.)
   end subroutine handle_manifest_change