Skip to content

Commit b2d2afc

Browse files
committed
Update whole dependency tree: make it a subroutine
1 parent d147ba3 commit b2d2afc

File tree

3 files changed

+25
-14
lines changed

3 files changed

+25
-14
lines changed

src/fpm.f90

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,8 @@ subroutine build_model(model, settings, package, error)
6161
if (allocated(error)) return
6262

6363
! Update dependencies where needed
64-
do i = 1, model%deps%ndep
65-
66-
if (model%deps%dep(i)%update) then
67-
call model%deps%update(model%deps%dep(i)%name,error)
68-
if (allocated(error)) return
69-
end if
70-
71-
end do
64+
call model%deps%update(error)
65+
if (allocated(error)) return
7266

7367
! build/ directory should now exist
7468
if (.not.exists("build/.gitignore")) then

src/fpm/cmd/update.f90

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,8 @@ subroutine cmd_update(settings)
4343
if (settings%fetch_only) return
4444

4545
if (size(settings%name) == 0) then
46-
do ii = 1, deps%ndep
47-
call deps%update(deps%dep(ii)%name, error)
48-
call handle_error(error)
49-
end do
46+
call deps%update(error)
47+
call handle_error(error)
5048
else
5149
do ii = 1, size(settings%name)
5250
call deps%update(trim(settings%name(ii)), error)

src/fpm/dependency.f90

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,11 @@ module fpm_dependency
159159
!> Write dependency tree to TOML data structure
160160
procedure, private :: dump_to_toml
161161
!> Update dependency tree
162-
generic :: update => update_dependency
162+
generic :: update => update_dependency,update_tree
163163
!> Update a list of dependencies
164164
procedure, private :: update_dependency
165+
!> Update all dependencies in the tree
166+
procedure, private :: update_tree
165167
end type dependency_tree_t
166168

167169
!> Common output format for writing to the command line
@@ -382,7 +384,7 @@ subroutine add_dependency(self, dependency, error)
382384

383385
!> Ensure an update is requested whenever the dependency has changed
384386
if (needs_update) then
385-
write(self%unit, out_fmt) "Update needed:", dependency%name
387+
write(self%unit, out_fmt) "Dependency change detected:", dependency%name
386388
call new_dependency_node(self%dep(id), dependency, update=.true.)
387389
endif
388390

@@ -442,6 +444,23 @@ subroutine update_dependency(self, name, error)
442444

443445
end subroutine update_dependency
444446

447+
!> Update whole dependency tree
448+
subroutine update_tree(self, error)
449+
!> Instance of the dependency tree
450+
class(dependency_tree_t), intent(inout) :: self
451+
!> Error handling
452+
type(error_t), allocatable, intent(out) :: error
453+
454+
integer :: i
455+
456+
! Update dependencies where needed
457+
do i = 1, self%ndep
458+
call self%update(self%dep(i)%name,error)
459+
if (allocated(error)) return
460+
end do
461+
462+
end subroutine update_tree
463+
445464
!> Resolve all dependencies in the tree
446465
subroutine resolve_dependencies(self, root, error)
447466
!> Instance of the dependency tree

0 commit comments

Comments
 (0)