Explorar el Código

- change version

fanch hace 1 año
padre
commit
7599bfe02e

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

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

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

@@ -42,29 +42,39 @@ src/metadocker/cmdline/commands/specific/build.py
 src/metadocker/cmdline/commands/specific/logs.py
 src/metadocker/cmdline/commands/specific/rm.py
 src/metadocker/cmdline/commands/specific/run.py
+src/metadocker/cmdline/commands/specific/shell.py
 src/metadocker/cmdline/commands/specific/start.py
 src/metadocker/cmdline/commands/specific/status.py
 src/metadocker/cmdline/commands/specific/stop.py
+src/metadocker/cmdline/commands/specific/systemd.py
 src/metadocker/cmdline/commands/specific/__pycache__/__init__.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/__init__.cpython-38.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/build.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/build.cpython-38.pyc
+src/metadocker/cmdline/commands/specific/__pycache__/logs.cpython-311.pyc
+src/metadocker/cmdline/commands/specific/__pycache__/logs.cpython-38.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/rm.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/rm.cpython-38.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/run.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/run.cpython-38.pyc
+src/metadocker/cmdline/commands/specific/__pycache__/shell.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/start.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/start.cpython-38.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/status.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/status.cpython-38.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/stop.cpython-311.pyc
 src/metadocker/cmdline/commands/specific/__pycache__/stop.cpython-38.pyc
+src/metadocker/cmdline/commands/specific/__pycache__/systemd.cpython-311.pyc
+src/metadocker/cmdline/commands/specific/__pycache__/systemd.cpython-38.pyc
 src/metadocker/common/__init__.py
 src/metadocker/common/errors.py
+src/metadocker/common/misc.py
 src/metadocker/common/__pycache__/__init__.cpython-311.pyc
 src/metadocker/common/__pycache__/__init__.cpython-38.pyc
 src/metadocker/common/__pycache__/errors.cpython-311.pyc
 src/metadocker/common/__pycache__/errors.cpython-38.pyc
+src/metadocker/common/__pycache__/misc.cpython-311.pyc
+src/metadocker/common/__pycache__/misc.cpython-38.pyc
 src/metadocker/docker/__init__.py
 src/metadocker/docker/builder.py
 src/metadocker/docker/driver.py
@@ -77,11 +87,13 @@ src/metadocker/docker/__pycache__/driver.cpython-38.pyc
 src/metadocker/env/__init__.py
 src/metadocker/env/base.py
 src/metadocker/env/pythonserver.py
+src/metadocker/env/var.py
 src/metadocker/env/__pycache__/__init__.cpython-311.pyc
 src/metadocker/env/__pycache__/__init__.cpython-38.pyc
 src/metadocker/env/__pycache__/base.cpython-311.pyc
 src/metadocker/env/__pycache__/base.cpython-38.pyc
 src/metadocker/env/__pycache__/pythonserver.cpython-311.pyc
 src/metadocker/env/__pycache__/pythonserver.cpython-38.pyc
+src/metadocker/env/__pycache__/var.cpython-311.pyc
 src/metadocker/scripts/__init__.py
 src/metadocker/scripts/metadocker

+ 2 - 2
src/metadocker/cmdline/base.py

@@ -1,7 +1,7 @@
 import argparse
 from metadocker.cmdline.commands.specific import start, stop, build, run, \
     rm, status, logs, systemd, shell
-from metadocker.cmdline.commands.main import init, list
+from metadocker.cmdline.commands.main import init, list, config, manage
 import sys
 
 
@@ -58,7 +58,7 @@ class ArgsFromFile(Args):
         super().__init__()
 
 class MainArgs(Args):
-    _COMMANDS = [init.InitCommand, list.ListCommand]
+    _COMMANDS = [init.InitCommand, list.ListCommand, config.ConfigCommand, manage.ManageCommand]
 
     def __init__(self):
         super().__init__()

+ 38 - 0
src/metadocker/cmdline/commands/main/config.py

@@ -0,0 +1,38 @@
+import sys
+from pathlib import Path
+
+from metadocker.cmdline.commands.base import Argument, Command
+from metadocker.db.db import settings
+from metadocker.register import load_env
+
+
+class ConfigCommand(Command):
+    NAME = "config"
+    HELP = "Configure l'application\nEx metadocker config -l # liste les config\n" \
+           "metadocker config my.key # renvoie la valeur de my.key\n" \
+           "metadocker config \"my.key=my value\" # affctre la valeur \"my value\" à my.key"
+
+    ARGUMENTS = [
+        Argument("--list", "-l", action="store_true", help="Liste les configurations"),
+        Argument("--short", "-s", action="store_true", help="N'affiche pas les clés"),
+        Argument("args",  nargs="*", help="Les ")
+    ]
+
+    def run(self):
+        if self.list or not self.args:
+            for k, v in settings.items():
+                print(f"{k}={v}")
+            exit(0)
+
+        for arg in self.args:
+            if "=" in arg:
+                key, _, value = arg.partition("=")
+                settings[key] = value
+            else:
+                if arg in settings:
+                    if self.short:
+                        print(settings[arg])
+                    else:
+                        print(f"{arg}={settings[arg]}")
+                else:
+                    print(f"Clé {arg} introuvable", file=sys.stderr)

+ 17 - 0
src/metadocker/cmdline/commands/main/manage.py

@@ -0,0 +1,17 @@
+import sys
+from pathlib import Path
+
+from metadocker.cmdline.commands.base import Argument, Command
+from metadocker.db.db import settings
+from metadocker.register import load_env
+
+
+class ManageCommand(Command):
+    NAME = "manage"
+    HELP = "Manage les dockers"
+
+    ARGUMENTS = [
+    ]
+
+    def run(self):
+        pass

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

@@ -13,5 +13,5 @@ class ShellCommand(SpecificCommand):
     def run(self, env):
         if not driver.is_running(name=env.docker.name):
             raise SimpleError(f"Le conteneur '{env.docker.name}' n'est pas lancé")
-        env.docker.exec(env.docker.name, self.shell, interactive=True, catch=False)
+        driver.exec(env.docker.name, self.shell, interactive=True, catch=False)
 

+ 5 - 0
src/metadocker/cmdline/commands/specific/stop.py

@@ -1,4 +1,5 @@
 from metadocker.cmdline.commands.base import SpecificCommand, Argument
+from metadocker.common.errors import SimpleError
 from metadocker.docker import DockerBuilder
 from metadocker.docker.driver import driver
 
@@ -13,6 +14,10 @@ class StopCommand(SpecificCommand):
     ]
     def run(self, env):
         name = env.docker.name
+
+        if not driver.is_running(name=env.docker.name):
+            raise SimpleError(f"Le conteneur '{env.docker.name}' n'est pas lancé")
+
         if self.kill:
             driver.kill(name, signal=self.signal)
         else:

+ 0 - 0
src/metadocker/db/__init__.py


+ 62 - 0
src/metadocker/db/db.py

@@ -0,0 +1,62 @@
+import json
+import os
+import pickle
+from pathlib import Path
+
+from metadocker.common.errors import SimpleError
+
+
+class _Config:
+    _engine = pickle
+    _INSTANCE = None
+    DEFAULT_DATA = {
+        "app.docker.max_depth" : 3,
+        "app.docker.cache" : [],
+    }
+    def __init__(self):
+        if _Config._INSTANCE is not None:
+            raise ValueError(f"Impossible de lancer pluseir base de données")
+
+        self.filename = self._get_path() / f"metadocker.{self._engine.__name__}"
+        self.data = dict(self.DEFAULT_DATA)
+        try:
+            self.data.update(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()
+
+    def _get_path(self):
+        return Path(os.environ.get("METADOCKER_CONF_DIR",
+                                   Path(os.environ["HOME"]) / ".config" / "metadocker" )).resolve()
+
+
+    def save(self):
+        self.filename.parent.mkdir(exist_ok=True, parents=True)
+        self.filename.write_bytes(self._engine.dumps(self.data))
+
+    def __getitem__(self, item):
+        return self.data[item]
+    def __setitem__(self, item, value):
+        self.data[item] = value
+        self.save()
+
+    def items(self):
+        return self.data.items()
+
+    def __contains__(self, item):
+        return item in self.data
+
+    def values(self):
+        return self.data.values()
+
+    def get(self, k, *args):
+        return self.data.get(k, *args)
+
+    @property
+    def app_dir(self):
+        if "app.dir" not in self.data:
+            raise SimpleError(f"Option base_dir non définie. Merci d'utilser\n"
+                              f"metadocker config \#app.dirr=/dossier/de/donne\"")
+
+
+settings = _Config()

+ 1 - 1
src/metadocker/docker/driver.py

@@ -65,7 +65,7 @@ class DockerDriver:
     def exec(self, name, commande=None, interactive=False, **kwarsg):
         args = []
         if interactive:
-            args.append("-i")
+            args.append("-it")
 
         args.append(name)
         if commande:

+ 0 - 1
src/metadocker/env/pythonserver.py

@@ -138,7 +138,6 @@ class PythonServerEnv(Env):
         if self.RUN_CMD:
             self.docker.cmd(self.RUN_CMD)
         else:
-            self.docker.run(f"python -m {self.PROJECT} migrate")
             self.docker.cmd(f"python -m {self.PROJECT} run")