Prechádzať zdrojové kódy

- création de la commande

fanch 1 rok pred
rodič
commit
450581c832

+ 1 - 1
setup.py

@@ -26,7 +26,7 @@ def get_files(path):
 
 setup(
     name="metadocker",
-    version="0.2.0",
+    version="0.2.3",
     description="Un outil pour gérer des conteneurs",
     author="François GAUTRAIS",
     author_email="francois@gautrais.eu",

+ 1 - 1
src/metadocker.egg-info/PKG-INFO

@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: metadocker
-Version: 0.2.0
+Version: 0.2.2
 Summary: Un outil pour gérer des conteneurs
 Author: François GAUTRAIS
 Author-email: francois@gautrais.eu

+ 2 - 0
src/metadocker.egg-info/SOURCES.txt

@@ -33,6 +33,7 @@ src/metadocker/cmdline/commands/main/config.py
 src/metadocker/cmdline/commands/main/init.py
 src/metadocker/cmdline/commands/main/list.py
 src/metadocker/cmdline/commands/main/manage.py
+src/metadocker/cmdline/commands/main/remove.py
 src/metadocker/cmdline/commands/main/use.py
 src/metadocker/cmdline/commands/main/__pycache__/__init__.cpython-311.pyc
 src/metadocker/cmdline/commands/main/__pycache__/__init__.cpython-38.pyc
@@ -42,6 +43,7 @@ src/metadocker/cmdline/commands/main/__pycache__/init.cpython-38.pyc
 src/metadocker/cmdline/commands/main/__pycache__/list.cpython-311.pyc
 src/metadocker/cmdline/commands/main/__pycache__/list.cpython-38.pyc
 src/metadocker/cmdline/commands/main/__pycache__/manage.cpython-311.pyc
+src/metadocker/cmdline/commands/main/__pycache__/remove.cpython-311.pyc
 src/metadocker/cmdline/commands/main/__pycache__/use.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__init__.py
 src/metadocker/cmdline/commands/specific/build.py

+ 1 - 2
src/metadocker/__main__.py

@@ -2,9 +2,8 @@ from metadocker.cmdline.base import MainArgs
 from metadocker.db.db import settings
 from metadocker.env.base import Env
 
-
-settings.load()
 def main():
+    settings.load()
     MainArgs.main()
 
 main()

+ 12 - 1
src/metadocker/cmdline/commands/main/use.py

@@ -1,11 +1,21 @@
 import argparse
+import os
 
 from metadocker.cmdline.commands.base import Argument, Command, ArgumentSubCommands
 from metadocker.cmdline.commands import specific
 from metadocker.db.db import settings
 from metadocker.db.manager import DockerManager
 
+class chdir:
+    def __init__(self, path):
+        self.old_path = None
+        self.path = path
 
+    def __enter__(self):
+        self.old_path = os.getcwd()
+        os.chdir(self.path)
+    def __exit__(self, exc_type, exc_val, exc_tb):
+        os.chdir(self.old_path)
 
 class UseCommand(Command):
     NAME = "use"
@@ -37,4 +47,5 @@ class UseCommand(Command):
                     return -1
 
         env = docker.get_env_object()
-        return self.sub_command(parser, self._data).start(env)
+        with chdir(docker.root_dir):
+            return self.sub_command(parser, self._data).start(env)

+ 1 - 1
src/metadocker/cmdline/commands/specific/start.py

@@ -8,4 +8,4 @@ class StartCommand(SpecificCommand):
     HELP = "Lance le conteneur"
 
     def run(self, env):
-        driver.start("-a")
+        driver.start("-a", env.docker.name)

+ 2 - 2
src/metadocker/cmdline/commands/specific/systemd.py

@@ -38,7 +38,7 @@ class SystemdCommand(SpecificCommand):
         elif self.install:
             level = 1
 
-        output = (Path(self.output or env.root) / f"{name}.service").resolve()
+        output = (Path(self.output or env.root) / f"docker_{name}.service").resolve()
         output.parent.mkdir(exist_ok=True, parents=True)
         output.write_text(get_file_content(name))
 
@@ -46,4 +46,4 @@ class SystemdCommand(SpecificCommand):
             subprocess.run(["sudo", "cp", output, "/etc/systemd/system/"])
 
         if level >= 2:
-            subprocess.run(["sudo", "systemctl", "enable", f"{name}.service"])
+            subprocess.run(["sudo", "systemctl", "enable", f"docker_{name}.service"])

+ 6 - 1
src/metadocker/db/db.py

@@ -1,6 +1,7 @@
 import json
 import os
 import pickle
+import sys
 from pathlib import Path
 
 from metadocker.common.errors import SimpleError, MultipleError, MetadockerError
@@ -45,7 +46,11 @@ class _Config:
             self.data = self._engine.loads(self.filename.read_bytes())
         except Exception as err:
             print(f"Impossible de trouver la configuration dans {self.filename}. Création")
-            self.save()
+            self.data = {}
+            errors = self.validate(False)
+            if errors:
+                print(MultipleError(errors).get_error(), file=sys.stderr)
+            exit(-1)
 
         return self
 

+ 0 - 51
src/metadocker/db/entry.py

@@ -1,7 +1,6 @@
 import shutil
 import sys
 from importlib import _bootstrap_external
-from contextlib import chdir
 
 from pathlib import Path
 
@@ -12,56 +11,6 @@ from metadocker.register import load_env
 import sys
 import importlib.util
 
-# def spec_from_file_location(name, location, *, loader=None,
-#                             submodule_search_locations=_POPULATE):
-#     """Return a module spec based on a file location.
-#
-#     To indicate that the module is a package, set
-#     submodule_search_locations to a list of directory paths.  An
-#     empty list is sufficient, though its not otherwise useful to the
-#     import system.
-#
-#     The loader must take a spec as its only __init__() arg.
-#
-#     """
-#      location = str(Path(location).resolve())
-#
-#
-#     _bootstrap
-#
-#     spec = _bootstrap.ModuleSpec(name, loader, origin=location)
-#     spec._set_fileattr = True
-#
-#     # Pick a loader if one wasn't provided.
-#     if loader is None:
-#         for loader_class, suffixes in _get_supported_file_loaders():
-#             if location.endswith(tuple(suffixes)):
-#                 loader = loader_class(name, location)
-#                 spec.loader = loader
-#                 break
-#         else:
-#             return None
-#
-#     # Set submodule_search_paths appropriately.
-#     if submodule_search_locations is _POPULATE:
-#         # Check the loader.
-#         if hasattr(loader, 'is_package'):
-#             try:
-#                 is_package = loader.is_package(name)
-#             except ImportError:
-#                 pass
-#             else:
-#                 if is_package:
-#                     spec.submodule_search_locations = []
-#     else:
-#         spec.submodule_search_locations = submodule_search_locations
-#     if spec.submodule_search_locations == []:
-#         if location:
-#             dirname = _path_split(location)[0]
-#             spec.submodule_search_locations.append(dirname)
-#
-#     return spec
-
 class LoaderContext:
 
     def __init__(self, suffix):