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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/usr/bin/env python
#
# Create a Baserock .lorry file for a given Python package
#
# Copyright (C) 2014 Codethink Limited
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from __future__ import print_function
import subprocess
import requests
import json
import sys
def fetch_package_metadata(package_name):
return requests.get('http://pypi.python.org/pypi/%s/json'
% package_name).json()
def is_repo(url):
vcss = [('git', 'clone'), ('hg', 'clone'),
('svn', 'checkout'), ('bzr', 'branch')]
for (vcs, vcs_command) in vcss:
p = subprocess.Popen([vcs, vcs_command, url], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
if p.returncode == 0:
return True
return False
if len(sys.argv) != 2:
print('usage: %s python_package' % sys.argv[0], file=sys.stderr)
sys.exit(1)
info = fetch_package_metadata('numpy')['info']
if 'home_page' in info:
# TODO: detect if git repo, if so then great lorry from here
if is_repo(info['home_page']):
# lorry this thing
print('not implemented yet: lorry from ', info['home_page'])
else:
# tarball time
print("not a repo, it's tarball time!")
|