resolve_module_to_package Subroutine

public subroutine resolve_module_to_package(module_name, package_name, git_url, found)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: module_name
character(len=*), intent(out) :: package_name
character(len=*), intent(out) :: git_url
logical, intent(out) :: found

Source Code

    subroutine resolve_module_to_package(module_name, package_name, git_url, found)
        character(len=*), intent(in) :: module_name
        character(len=*), intent(out) :: package_name
        character(len=*), intent(out) :: git_url
        logical, intent(out) :: found

        integer :: i, underscore_pos
        character(len=128) :: inferred_package

        found = .false.
        package_name = ''
        git_url = ''

        ! First check prefixes
        do i = 1, n_packages
            if (len_trim(packages(i)%prefix) > 0) then
                if (index(module_name, trim(packages(i)%prefix)) == 1) then
                    package_name = packages(i)%name
                    git_url = packages(i)%git_url
                    found = .true.
                    return
                end if
            end if
        end do

        ! Try underscore inference
        underscore_pos = index(module_name, '_')
        if (underscore_pos > 0) then
            inferred_package = module_name(1:underscore_pos - 1)//'-fortran'
        else
            inferred_package = module_name
        end if

        ! Look for inferred package name
        do i = 1, n_packages
            if (trim(packages(i)%name) == trim(inferred_package)) then
                package_name = packages(i)%name
                git_url = packages(i)%git_url
                found = .true.
                return
            end if
        end do

    end subroutine resolve_module_to_package