mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-09-17 18:50:11 +02:00
import: split out URL handling into its own function
This is preparation to add other import methods, like checking if the command was run in a currently checked out git repo.
This commit is contained in:
parent
9489e80f09
commit
c80c1bf017
@ -70,71 +70,43 @@ config = None
|
|||||||
options = None
|
options = None
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def get_metadata_from_url(app, url):
|
||||||
|
|
||||||
global config, options
|
|
||||||
|
|
||||||
# Parse command line...
|
|
||||||
parser = ArgumentParser()
|
|
||||||
parser.add_argument("-v", "--verbose", action="store_true", default=False,
|
|
||||||
help="Spew out even more information than normal")
|
|
||||||
parser.add_argument("-q", "--quiet", action="store_true", default=False,
|
|
||||||
help="Restrict output to warnings and errors")
|
|
||||||
parser.add_argument("-u", "--url", default=None,
|
|
||||||
help="Project URL to import from.")
|
|
||||||
parser.add_argument("-s", "--subdir", default=None,
|
|
||||||
help="Path to main android project subdirectory, if not in root.")
|
|
||||||
parser.add_argument("--rev", default=None,
|
|
||||||
help="Allows a different revision (or git branch) to be specified for the initial import")
|
|
||||||
options = parser.parse_args()
|
|
||||||
|
|
||||||
config = common.read_config(options)
|
|
||||||
|
|
||||||
if not options.url:
|
|
||||||
logging.error("Specify project url.")
|
|
||||||
sys.exit(1)
|
|
||||||
url = options.url
|
|
||||||
|
|
||||||
tmp_dir = 'tmp'
|
tmp_dir = 'tmp'
|
||||||
if not os.path.isdir(tmp_dir):
|
if not os.path.isdir(tmp_dir):
|
||||||
logging.info("Creating temporary directory")
|
logging.info("Creating temporary directory")
|
||||||
os.makedirs(tmp_dir)
|
os.makedirs(tmp_dir)
|
||||||
|
|
||||||
# Get all apps...
|
|
||||||
apps = metadata.read_metadata()
|
|
||||||
|
|
||||||
# Figure out what kind of project it is...
|
# Figure out what kind of project it is...
|
||||||
projecttype = None
|
projecttype = None
|
||||||
issuetracker = None
|
app['Web Site'] = url # by default, we might override it
|
||||||
license = None
|
|
||||||
website = url # by default, we might override it
|
|
||||||
if url.startswith('git://'):
|
if url.startswith('git://'):
|
||||||
projecttype = 'git'
|
projecttype = 'git'
|
||||||
repo = url
|
repo = url
|
||||||
repotype = 'git'
|
repotype = 'git'
|
||||||
sourcecode = ""
|
app['Source Code'] = ""
|
||||||
website = ""
|
app['Web Site'] = ""
|
||||||
elif url.startswith('https://github.com'):
|
elif url.startswith('https://github.com'):
|
||||||
projecttype = 'github'
|
projecttype = 'github'
|
||||||
repo = url
|
repo = url
|
||||||
repotype = 'git'
|
repotype = 'git'
|
||||||
sourcecode = url
|
app['Source Code'] = url
|
||||||
issuetracker = url + '/issues'
|
app['issuetracker'] = url + '/issues'
|
||||||
website = ""
|
app['Web Site'] = ""
|
||||||
elif url.startswith('https://gitlab.com/'):
|
elif url.startswith('https://gitlab.com/'):
|
||||||
projecttype = 'gitlab'
|
projecttype = 'gitlab'
|
||||||
repo = url
|
repo = url
|
||||||
repotype = 'git'
|
repotype = 'git'
|
||||||
sourcecode = url + '/tree/HEAD'
|
app['Source Code'] = url + '/tree/HEAD'
|
||||||
issuetracker = url + '/issues'
|
app['issuetracker'] = url + '/issues'
|
||||||
elif url.startswith('https://bitbucket.org/'):
|
elif url.startswith('https://bitbucket.org/'):
|
||||||
if url.endswith('/'):
|
if url.endswith('/'):
|
||||||
url = url[:-1]
|
url = url[:-1]
|
||||||
projecttype = 'bitbucket'
|
projecttype = 'bitbucket'
|
||||||
sourcecode = url + '/src'
|
app['Source Code'] = url + '/src'
|
||||||
issuetracker = url + '/issues'
|
app['issuetracker'] = url + '/issues'
|
||||||
# Figure out the repo type and adddress...
|
# Figure out the repo type and adddress...
|
||||||
repotype, repo = getrepofrompage(sourcecode)
|
repotype, repo = getrepofrompage(app['Source Code'])
|
||||||
if not repotype:
|
if not repotype:
|
||||||
logging.error("Unable to determine vcs type. " + repo)
|
logging.error("Unable to determine vcs type. " + repo)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
@ -166,6 +138,49 @@ def main():
|
|||||||
else:
|
else:
|
||||||
root_dir = src_dir
|
root_dir = src_dir
|
||||||
|
|
||||||
|
app['Repo Type'] = repotype
|
||||||
|
app['Repo'] = repo
|
||||||
|
|
||||||
|
return root_dir, src_dir
|
||||||
|
|
||||||
|
|
||||||
|
config = None
|
||||||
|
options = None
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
global config, options
|
||||||
|
|
||||||
|
# Parse command line...
|
||||||
|
parser = ArgumentParser()
|
||||||
|
parser.add_argument("-v", "--verbose", action="store_true", default=False,
|
||||||
|
help="Spew out even more information than normal")
|
||||||
|
parser.add_argument("-q", "--quiet", action="store_true", default=False,
|
||||||
|
help="Restrict output to warnings and errors")
|
||||||
|
parser.add_argument("-u", "--url", default=None,
|
||||||
|
help="Project URL to import from.")
|
||||||
|
parser.add_argument("-s", "--subdir", default=None,
|
||||||
|
help="Path to main android project subdirectory, if not in root.")
|
||||||
|
parser.add_argument("--rev", default=None,
|
||||||
|
help="Allows a different revision (or git branch) to be specified for the initial import")
|
||||||
|
options = parser.parse_args()
|
||||||
|
|
||||||
|
config = common.read_config(options)
|
||||||
|
|
||||||
|
apps = metadata.read_metadata()
|
||||||
|
package, app = metadata.get_default_app_info_list(apps)
|
||||||
|
app['Update Check Mode'] = "Tags"
|
||||||
|
|
||||||
|
if os.path.isdir('.git'):
|
||||||
|
if options.url:
|
||||||
|
app['Web Site'] = options.url
|
||||||
|
elif options.url:
|
||||||
|
root_dir, src_dir = get_metadata_from_url(app, options.url)
|
||||||
|
else:
|
||||||
|
logging.error("Specify project url.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
# Extract some information...
|
# Extract some information...
|
||||||
paths = common.manifest_paths(root_dir, [])
|
paths = common.manifest_paths(root_dir, [])
|
||||||
if paths:
|
if paths:
|
||||||
@ -197,18 +212,6 @@ def main():
|
|||||||
logging.error("Package " + package + " already exists")
|
logging.error("Package " + package + " already exists")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Construct the metadata...
|
|
||||||
app = metadata.parse_txt_metadata(None)[1]
|
|
||||||
app['Web Site'] = website
|
|
||||||
app['Source Code'] = sourcecode
|
|
||||||
if issuetracker:
|
|
||||||
app['Issue Tracker'] = issuetracker
|
|
||||||
if license:
|
|
||||||
app['License'] = license
|
|
||||||
app['Repo Type'] = repotype
|
|
||||||
app['Repo'] = repo
|
|
||||||
app['Update Check Mode'] = "Tags"
|
|
||||||
|
|
||||||
# Create a build line...
|
# Create a build line...
|
||||||
build = {}
|
build = {}
|
||||||
build['version'] = version or '?'
|
build['version'] = version or '?'
|
||||||
@ -230,9 +233,10 @@ def main():
|
|||||||
# Keep the repo directory to save bandwidth...
|
# Keep the repo directory to save bandwidth...
|
||||||
if not os.path.exists('build'):
|
if not os.path.exists('build'):
|
||||||
os.mkdir('build')
|
os.mkdir('build')
|
||||||
shutil.move(src_dir, os.path.join('build', package))
|
if src_dir is not None:
|
||||||
|
shutil.move(src_dir, os.path.join('build', package))
|
||||||
with open('build/.fdroidvcs-' + package, 'w') as f:
|
with open('build/.fdroidvcs-' + package, 'w') as f:
|
||||||
f.write(repotype + ' ' + repo)
|
f.write(app['Repo Type'] + ' ' + app['Repo'])
|
||||||
|
|
||||||
metadatapath = os.path.join('metadata', package + '.txt')
|
metadatapath = os.path.join('metadata', package + '.txt')
|
||||||
metadata.write_metadata(metadatapath, app)
|
metadata.write_metadata(metadatapath, app)
|
||||||
|
@ -579,8 +579,11 @@ def split_list_values(s):
|
|||||||
return [v for v in l if v]
|
return [v for v in l if v]
|
||||||
|
|
||||||
|
|
||||||
def get_default_app_info_list(apps, metadatapath):
|
def get_default_app_info_list(apps, metadatapath=None):
|
||||||
appid = os.path.splitext(os.path.basename(metadatapath))[0]
|
if metadatapath is None:
|
||||||
|
appid = None
|
||||||
|
else:
|
||||||
|
appid = os.path.splitext(os.path.basename(metadatapath))[0]
|
||||||
if appid in apps:
|
if appid in apps:
|
||||||
logging.critical("'%s' is a duplicate! '%s' is already provided by '%s'"
|
logging.critical("'%s' is a duplicate! '%s' is already provided by '%s'"
|
||||||
% (metadatapath, appid, apps[appid]['metadatapath']))
|
% (metadatapath, appid, apps[appid]['metadatapath']))
|
||||||
|
Loading…
Reference in New Issue
Block a user