'Returns the path to the expanded/checked out source code.
To find the source code, this method searches for the first
subdirectory of the stage that it can find, and returns it.
This assumes nothing besides the archive file will be in the
stage path, but it has the advantage that we don\'t need to
know the name of the archive or its contents.
If the fetch strategy is not supposed to expand the downloaded
file, it will just return the stage path. If the archive needs
to be expanded, it will return None when no archive is found.'

@property
def source_path(self):

    if isinstance(self.fetcher, fs.URLFetchStrategy):
        if (not self.fetcher.expand_archive):
            return self.path
    for p in [os.path.join(self.path, f) for f in os.listdir(self.path)]:
        if os.path.isdir(p):
            return p
    return None
