mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 14:32:28 +03:00
[import] Rename to import_subcommand internally
This enables normal import of the module without the need for workarounds.
This commit is contained in:
parent
2eb56ae8d4
commit
7b7f863c65
6 changed files with 11 additions and 41 deletions
|
@ -254,8 +254,7 @@ black:
|
||||||
tests/build.TestCase
|
tests/build.TestCase
|
||||||
tests/deploy.TestCase
|
tests/deploy.TestCase
|
||||||
tests/exception.TestCase
|
tests/exception.TestCase
|
||||||
tests/import.TestCase
|
tests/import_subcommand.TestCase
|
||||||
tests/import_proxy.py
|
|
||||||
tests/init.TestCase
|
tests/init.TestCase
|
||||||
tests/install.TestCase
|
tests/install.TestCase
|
||||||
tests/key-tricks.py
|
tests/key-tricks.py
|
||||||
|
|
|
@ -567,8 +567,7 @@ include tests/gnupghome/secring.gpg
|
||||||
include tests/gnupghome/trustdb.gpg
|
include tests/gnupghome/trustdb.gpg
|
||||||
include tests/gradle-maven-blocks.yaml
|
include tests/gradle-maven-blocks.yaml
|
||||||
include tests/gradle-release-checksums.py
|
include tests/gradle-release-checksums.py
|
||||||
include tests/import_proxy.py
|
include tests/import_subcommand.TestCase
|
||||||
include tests/import.TestCase
|
|
||||||
include tests/index.TestCase
|
include tests/index.TestCase
|
||||||
include tests/init.TestCase
|
include tests/init.TestCase
|
||||||
include tests/install.TestCase
|
include tests/install.TestCase
|
||||||
|
|
|
@ -40,7 +40,7 @@ COMMANDS = OrderedDict([
|
||||||
("deploy", _("Interact with the repo HTTP server")),
|
("deploy", _("Interact with the repo HTTP server")),
|
||||||
("verify", _("Verify the integrity of downloaded packages")),
|
("verify", _("Verify the integrity of downloaded packages")),
|
||||||
("checkupdates", _("Check for updates to applications")),
|
("checkupdates", _("Check for updates to applications")),
|
||||||
("import", _("Add a new application from its source code")),
|
("import", _("Extract application metadata from a source repository")),
|
||||||
("install", _("Install built packages on devices")),
|
("install", _("Install built packages on devices")),
|
||||||
("readmeta", _("Read all the metadata files and exit")),
|
("readmeta", _("Read all the metadata files and exit")),
|
||||||
("rewritemeta", _("Rewrite all the metadata files")),
|
("rewritemeta", _("Rewrite all the metadata files")),
|
||||||
|
@ -197,6 +197,8 @@ def main():
|
||||||
|
|
||||||
del sys.argv[1]
|
del sys.argv[1]
|
||||||
if command in COMMANDS.keys():
|
if command in COMMANDS.keys():
|
||||||
|
# import is named import_subcommand internally b/c import is reserved by Python
|
||||||
|
command = 'import_subcommand' if command == 'import' else command
|
||||||
mod = __import__('fdroidserver.' + command, None, None, [command])
|
mod = __import__('fdroidserver.' + command, None, None, [command])
|
||||||
else:
|
else:
|
||||||
mod = __import__(available_plugins[command]['name'], None, None, [command])
|
mod = __import__(available_plugins[command]['name'], None, None, [command])
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
#
|
#
|
||||||
# import.py - part of the FDroid server tools
|
# import_subcommand.py - part of the FDroid server tools
|
||||||
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
|
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
|
||||||
# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
|
# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
|
||||||
#
|
#
|
||||||
|
@ -42,9 +42,6 @@ config = None
|
||||||
options = None
|
options = None
|
||||||
|
|
||||||
|
|
||||||
# WARNING! This cannot be imported as a Python module, so reuseable functions need to go into common.py!
|
|
||||||
|
|
||||||
|
|
||||||
def clone_to_tmp_dir(app):
|
def clone_to_tmp_dir(app):
|
||||||
tmp_dir = Path('tmp')
|
tmp_dir = Path('tmp')
|
||||||
tmp_dir.mkdir(exist_ok=True)
|
tmp_dir.mkdir(exist_ok=True)
|
|
@ -1,27 +0,0 @@
|
||||||
# workaround the syntax error from: import fdroidserver.import
|
|
||||||
|
|
||||||
import inspect
|
|
||||||
import sys
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
localmodule = Path(__file__).resolve().parent.parent
|
|
||||||
print('localmodule: ' + str(localmodule))
|
|
||||||
if localmodule not in sys.path:
|
|
||||||
sys.path.insert(0, str(localmodule))
|
|
||||||
|
|
||||||
|
|
||||||
class Options:
|
|
||||||
def __init__(self):
|
|
||||||
self.rev = None
|
|
||||||
self.subdir = None
|
|
||||||
|
|
||||||
|
|
||||||
module = __import__('fdroidserver.import')
|
|
||||||
for name, obj in inspect.getmembers(module):
|
|
||||||
if name == 'import':
|
|
||||||
clone_to_tmp_dir = obj.clone_to_tmp_dir
|
|
||||||
obj.options = Options()
|
|
||||||
options = obj.options
|
|
||||||
break
|
|
||||||
|
|
||||||
globals().update(vars(module))
|
|
|
@ -15,15 +15,13 @@ from pathlib import Path
|
||||||
import requests
|
import requests
|
||||||
from testcommon import TmpCwd
|
from testcommon import TmpCwd
|
||||||
|
|
||||||
# work around the syntax error from: import fdroidserver.import
|
|
||||||
import import_proxy
|
|
||||||
|
|
||||||
localmodule = Path(__file__).resolve().parent.parent
|
localmodule = Path(__file__).resolve().parent.parent
|
||||||
print('localmodule: ' + str(localmodule))
|
print('localmodule: ' + str(localmodule))
|
||||||
if localmodule not in sys.path:
|
if localmodule not in sys.path:
|
||||||
sys.path.insert(0, str(localmodule))
|
sys.path.insert(0, str(localmodule))
|
||||||
|
|
||||||
import fdroidserver.common
|
import fdroidserver.common
|
||||||
|
import fdroidserver.import_subcommand
|
||||||
import fdroidserver.metadata
|
import fdroidserver.metadata
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,6 +35,8 @@ class ImportTest(unittest.TestCase):
|
||||||
self.tmpdir.mkdir(exist_ok=True)
|
self.tmpdir.mkdir(exist_ok=True)
|
||||||
# TODO: Python3.6: Accepts a path-like object.
|
# TODO: Python3.6: Accepts a path-like object.
|
||||||
os.chdir(str(self.basedir))
|
os.chdir(str(self.basedir))
|
||||||
|
fdroidserver.import_subcommand.options = mock.Mock()
|
||||||
|
fdroidserver.import_subcommand.options.rev = None
|
||||||
|
|
||||||
def test_import_gitlab(self):
|
def test_import_gitlab(self):
|
||||||
# FDroidPopen needs some config to work
|
# FDroidPopen needs some config to work
|
||||||
|
@ -52,7 +52,7 @@ class ImportTest(unittest.TestCase):
|
||||||
return
|
return
|
||||||
|
|
||||||
app = fdroidserver.common.get_app_from_url(url)
|
app = fdroidserver.common.get_app_from_url(url)
|
||||||
import_proxy.clone_to_tmp_dir(app)
|
fdroidserver.import_subcommand.clone_to_tmp_dir(app)
|
||||||
self.assertEqual(app.RepoType, 'git')
|
self.assertEqual(app.RepoType, 'git')
|
||||||
self.assertEqual(app.Repo, 'https://gitlab.com/fdroid/ci-test-app.git')
|
self.assertEqual(app.Repo, 'https://gitlab.com/fdroid/ci-test-app.git')
|
||||||
|
|
||||||
|
@ -103,7 +103,7 @@ class ImportTest(unittest.TestCase):
|
||||||
), mock.patch(
|
), mock.patch(
|
||||||
'shutil.rmtree', lambda a, onerror=None: None
|
'shutil.rmtree', lambda a, onerror=None: None
|
||||||
):
|
):
|
||||||
build_dir = import_proxy.clone_to_tmp_dir(app)
|
build_dir = fdroidserver.import_subcommand.clone_to_tmp_dir(app)
|
||||||
self.assertEqual('git', app.RepoType)
|
self.assertEqual('git', app.RepoType)
|
||||||
self.assertEqual(url, app.Repo)
|
self.assertEqual(url, app.Repo)
|
||||||
self.assertEqual(url, app.SourceCode)
|
self.assertEqual(url, app.SourceCode)
|
Loading…
Add table
Add a link
Reference in a new issue