def add(self, artifact_type: ArtifactType, src_path: str,
            dst_path: str=None):
        """Add an artifact of type `artifact_type` at `src_path`.

        `src_path` should be the path of the file relative to project root.
        `dst_path`, if given, is the desired path of the artifact in dependent
        targets, relative to its base path (by type).
        """
        if dst_path is None:
            dst_path = src_path
        other_src_path = self._artifacts[artifact_type].setdefault(
            dst_path, src_path)
        if src_path != other_src_path:
            raise RuntimeError(
                '{} artifact with dest path {} exists with different src '
                'path: {} != {}'.format(artifact_type, dst_path, src_path,
                                        other_src_path))
Add an artifact of type `artifact_type` at `src_path`.

        `src_path` should be the path of the file relative to project root.
        `dst_path`, if given, is the desired path of the artifact in dependent
        targets, relative to its base path (by type).