-
-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathgit.py
More file actions
39 lines (33 loc) · 1.42 KB
/
Copy pathgit.py
File metadata and controls
39 lines (33 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# fetchcode is a free software tool from nexB Inc. and others.
# Visit https://github.com/aboutcode-org/fetchcode for support and download.
#
# Copyright (c) nexB Inc. and others. All rights reserved.
# http://nexb.com and http://aboutcode.org
#
# This software is licensed under the Apache License version 2.0.
#
# You may not use this software except in compliance with the License.
# You may obtain a copy of the License at:
# http://apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
import os
import tempfile
from urllib.parse import urlparse
from fetchcode.vcs import VCSResponse
from fetchcode.vcs.pip._internal.utils import misc
from fetchcode.vcs.pip._internal.vcs import vcs
from fetchcode.vcs.pip._internal.vcs.git import Git
def fetch_via_git(url):
parsed_url = urlparse(url)
scheme = parsed_url.scheme
domain = parsed_url.netloc
temp = tempfile.mkdtemp()
os.rmdir(temp)
if scheme not in Git.schemes:
raise Exception("Not a Git based scheme.")
backend = vcs.get_backend(name="git")
backend.obtain(dest=temp, url=misc.hide_url(url))
return VCSResponse(dest_dir=temp, vcs_type="git", domain=domain)