From a36a89e90d3fde67f76640d9de97d8a1e9f4ab8d Mon Sep 17 00:00:00 2001 From: FernandoCelmer Date: Tue, 14 Mar 2023 20:52:37 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=8C=20ISSUE-#2=20-=20initial=20structu?= =?UTF-8?q?re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linux_profile_plugin/__init__.py | 32 +++++++++++++++++++++++++++ linux_profile_plugin/commands.py | 9 ++++++++ linux_profile_plugin/main.py | 37 ++++++++++++++++++++++++++++++++ main.py | 37 ++++++++++++++++++++++++++++++++ 4 files changed, 115 insertions(+) create mode 100644 linux_profile_plugin/__init__.py create mode 100644 linux_profile_plugin/commands.py create mode 100644 linux_profile_plugin/main.py create mode 100644 main.py diff --git a/linux_profile_plugin/__init__.py b/linux_profile_plugin/__init__.py new file mode 100644 index 0000000..3ab334f --- /dev/null +++ b/linux_profile_plugin/__init__.py @@ -0,0 +1,32 @@ +__version__ = "1.0.0-dev.1" + +__author__ = 'Fernando Celmer ' +__copyright__ = """MIT License + +Copyright (c) 2023 Linux Profile + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.""" + + +__info__ = """ + +Help: linuxp-plugin --help +Docs: https://docs.linuxprofile.com/ +===================================== +""" diff --git a/linux_profile_plugin/commands.py b/linux_profile_plugin/commands.py new file mode 100644 index 0000000..6444bab --- /dev/null +++ b/linux_profile_plugin/commands.py @@ -0,0 +1,9 @@ +from linux_profile.base.command import Command + + +class HelloWorld(Command): + + def execute(self): + """Method for initializing custom commands. + """ + print("Hello World!", (self.arguments.message or "")) diff --git a/linux_profile_plugin/main.py b/linux_profile_plugin/main.py new file mode 100644 index 0000000..30bd3c8 --- /dev/null +++ b/linux_profile_plugin/main.py @@ -0,0 +1,37 @@ +from linux_profile.main import BuildCommand +from linux_profile.base.command import BaseCommand +from linux_profile_plugin.commands import HelloWorld + + +class ArgsCommand(BaseCommand): + + def __init__(self, parser): + super().__init__(parser) + + # "hello" command launcher. + self.setup_hello() + + def setup_hello(self): + """Argument loading method for the new command. + """ + self.cmd_hello = self.subparsers.add_parser('hello', help="My custom command") + self.cmd_hello = self.cmd_hello.add_argument_group('Usage: linuxp hello [OPTIONS]') + self.cmd_hello.add_argument('--message') + + +class Build(BuildCommand): + + base_command = ArgsCommand + + def setup(self) -> str: + """Method for initializing custom commands. + """ + self.command.cmd_hello.set_defaults(exec=HelloWorld) + + +def main(): + Build() + + +if __name__ == '__main__': + main() diff --git a/main.py b/main.py new file mode 100644 index 0000000..30bd3c8 --- /dev/null +++ b/main.py @@ -0,0 +1,37 @@ +from linux_profile.main import BuildCommand +from linux_profile.base.command import BaseCommand +from linux_profile_plugin.commands import HelloWorld + + +class ArgsCommand(BaseCommand): + + def __init__(self, parser): + super().__init__(parser) + + # "hello" command launcher. + self.setup_hello() + + def setup_hello(self): + """Argument loading method for the new command. + """ + self.cmd_hello = self.subparsers.add_parser('hello', help="My custom command") + self.cmd_hello = self.cmd_hello.add_argument_group('Usage: linuxp hello [OPTIONS]') + self.cmd_hello.add_argument('--message') + + +class Build(BuildCommand): + + base_command = ArgsCommand + + def setup(self) -> str: + """Method for initializing custom commands. + """ + self.command.cmd_hello.set_defaults(exec=HelloWorld) + + +def main(): + Build() + + +if __name__ == '__main__': + main()