mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 06:30:27 +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