ソースを参照

- création de la commande

fanch 1 年間 前
コミット
450581c832

+ 1 - 1
setup.py

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

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

@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Metadata-Version: 2.1
 Name: metadocker
 Name: metadocker
-Version: 0.2.0
+Version: 0.2.2
 Summary: Un outil pour gérer des conteneurs
 Summary: Un outil pour gérer des conteneurs
 Author: François GAUTRAIS
 Author: François GAUTRAIS
 Author-email: francois@gautrais.eu
 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/init.py
 src/metadocker/cmdline/commands/main/list.py
 src/metadocker/cmdline/commands/main/list.py
 src/metadocker/cmdline/commands/main/manage.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/use.py
 src/metadocker/cmdline/commands/main/__pycache__/__init__.cpython-311.pyc
 src/metadocker/cmdline/commands/main/__pycache__/__init__.cpython-311.pyc
 src/metadocker/cmdline/commands/main/__pycache__/__init__.cpython-38.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-311.pyc
 src/metadocker/cmdline/commands/main/__pycache__/list.cpython-38.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__/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/main/__pycache__/use.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__init__.py
 src/metadocker/cmdline/commands/specific/__init__.py
 src/metadocker/cmdline/commands/specific/build.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.db.db import settings
 from metadocker.env.base import Env
 from metadocker.env.base import Env
 
 
-
-settings.load()
 def main():
 def main():
+    settings.load()
     MainArgs.main()
     MainArgs.main()
 
 
 main()
 main()

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

@@ -1,11 +1,21 @@
 import argparse
 import argparse
+import os
 
 
 from metadocker.cmdline.commands.base import Argument, Command, ArgumentSubCommands
 from metadocker.cmdline.commands.base import Argument, Command, ArgumentSubCommands
 from metadocker.cmdline.commands import specific
 from metadocker.cmdline.commands import specific
 from metadocker.db.db import settings
 from metadocker.db.db import settings
 from metadocker.db.manager import DockerManager
 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):
 class UseCommand(Command):
     NAME = "use"
     NAME = "use"
@@ -37,4 +47,5 @@ class UseCommand(Command):
                     return -1
                     return -1
 
 
         env = docker.get_env_object()
         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"
     HELP = "Lance le conteneur"
 
 
     def run(self, env):
     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:
         elif self.install:
             level = 1
             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.parent.mkdir(exist_ok=True, parents=True)
         output.write_text(get_file_content(name))
         output.write_text(get_file_content(name))
 
 
@@ -46,4 +46,4 @@ class SystemdCommand(SpecificCommand):
             subprocess.run(["sudo", "cp", output, "/etc/systemd/system/"])
             subprocess.run(["sudo", "cp", output, "/etc/systemd/system/"])
 
 
         if level >= 2:
         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 json
 import os
 import os
 import pickle
 import pickle
+import sys
 from pathlib import Path
 from pathlib import Path
 
 
 from metadocker.common.errors import SimpleError, MultipleError, MetadockerError
 from metadocker.common.errors import SimpleError, MultipleError, MetadockerError
@@ -45,7 +46,11 @@ class _Config:
             self.data = self._engine.loads(self.filename.read_bytes())
             self.data = self._engine.loads(self.filename.read_bytes())
         except Exception as err:
         except Exception as err:
             print(f"Impossible de trouver la configuration dans {self.filename}. Création")
             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
         return self
 
 

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

@@ -1,7 +1,6 @@
 import shutil
 import shutil
 import sys
 import sys
 from importlib import _bootstrap_external
 from importlib import _bootstrap_external
-from contextlib import chdir
 
 
 from pathlib import Path
 from pathlib import Path
 
 
@@ -12,56 +11,6 @@ from metadocker.register import load_env
 import sys
 import sys
 import importlib.util
 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:
 class LoaderContext:
 
 
     def __init__(self, suffix):
     def __init__(self, suffix):