docs: def expand_target_selector(target_selector: str, conf: Config):
      """Return a normalized target name (where `**:*` is the normalized form of
         itself).
  
      Target specifier can be:
  
      - `**:*` - means to recursively build all targets under current
        working dir.
      - relative path from current working directory to another directory -
          means to build all targets defined in that build module.
      - a name of a target - means to build this named target in the build module
          in the current working directory.
      - a named target in another build module, with the build module given as a
          relative path from the current working directory (e.g. `../foo:bar`) -
          means to build the specified named target in the specified build
          module.
      - in cases where a relative path can be specified, it should be given using
          standard POSIX relative path construction.
      """
      if target_selector == '**:*':
          return target_selector
      if ':' not in target_selector:
          target_selector += ':*'
      build_module, target_name = split(target_selector)
      build_module = normpath(join(conf.get_rel_work_dir(), build_module))
      return '{}:{}'.format(PurePath(build_module).as_posix().strip('.'),
                            validate_name(target_name))