summaryrefslogtreecommitdiff
path: root/import/pip.to_lorry
blob: 7483b6b2ea417eb0130609fcff5d056119861f78 (plain)
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!")