summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-cloudmesh-cmd5.spec440
-rw-r--r--sources1
3 files changed, 442 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..4e08cfb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/cloudmesh-cmd5-4.3.26.tar.gz
diff --git a/python-cloudmesh-cmd5.spec b/python-cloudmesh-cmd5.spec
new file mode 100644
index 0000000..d8e8260
--- /dev/null
+++ b/python-cloudmesh-cmd5.spec
@@ -0,0 +1,440 @@
+%global _empty_manifest_terminate_build 0
+Name: python-cloudmesh-cmd5
+Version: 4.3.26
+Release: 1
+Summary: A dynamic extensible CMD based command shell
+License: Apache 2.0
+URL: https://github.com/cloudmesh/cloudmesh-cmd5
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b7/ed/283674eb4c77cf23a541fd6afbe0f62b4e15d0f7efafb389d1367518073c/cloudmesh-cmd5-4.3.26.tar.gz
+BuildArch: noarch
+
+Requires: python3-pyyaml
+Requires: python3-docopt
+Requires: python3-requests
+Requires: python3-md-toc
+Requires: python3-cloudmesh-common
+
+%description
+EOF commands default help pause q shell sys version
+banner config echo info plugin quit sleep test
+clear debug gui man py set stopwatch var
+```
+To see the manual page for a specific command, please use::
+```
+cms> help COMMANDNAME
+```
+A full manual page is available at
+* <https://cloudmesh.github.io/cloudmesh-manual/>
+## CMD 5 Plugin Mechanism
+Cmd5 comes with a sophisticated plugin mechanism. Commands can be readily
+designed from the sys command.
+The sys command can be installed either from source (as discussed previously) or
+via pip
+```bash
+$ pip install cloudmesh-sys
+```
+Once you have installed it, execute `cms help sys` to see the usage. Now you
+simply can in a new directory execute the sys command as follows, where
+`mycommnad` is than name of the command you like to implement.
+```bash
+$ mkdir mycommand
+$ cd mycommand
+$ cms sys command generate mycommand .
+```
+A directory with the name `cloudmesh-mycommand` will be generated that contains
+the template for the command. You can enter this template and modify the
+implementation in the folders `cloudmesh/mycommand/api` and
+`cloudmesh/mycommand/command` when installing it with
+```
+$ pip install .
+```
+The command will be added to the cms command>
+An example for the bar command is presented at:
+* [cloudmesh/bar/command/bar.py](https://github.com/cloudmesh/cloudmesh.bar/blob/main/cloudmesh/bar/command/bar.py)
+It shows how simple the command definition is (bar.py)::
+```bash
+from cloudmesh.shell.command import command
+from cloudmesh.shell.command import PluginCommand
+class BarCommand(PluginCommand):
+ @command
+ def do_bar(self, args, arguments):
+ """
+ Usage:
+ command -f FILE
+ command FILE
+ command list
+ This command does some useful things.
+ Arguments:
+ FILE a file name
+ Options:
+ -f specify the file
+ """
+ print(arguments)
+```
+An important difference to other CMD solutions is that our commands
+can leverage (besides the standard definition), docopts as a way to
+define the manual page. This allows us to use arguments as dict and
+use simple if conditions to interpret the command. Using docopts has
+the advantage that contributors are forced to think about the command
+and its options and document them from the start. Previously we used
+not to use docopts and argparse was used. However we noticed that for
+some contributions the lead to commands that were either not properly
+documented or the developers delivered ambiguous commands that
+resulted in confusion and wrong usage by the users. Hence, we do
+recommend that you use docopts.
+The transformation is enabled by the `@command` decorator that takes
+also the manual page and creates a proper help message for the shell
+automatically. Thus there is no need to introduce a separate help
+method as would normally be needed in CMD.
+## Features
+The following highlighted features are available:
+* easy command integration through separate modules
+* multi cloud environments (under development) though cloudmesh-cloud plugin
+* openapi integration through cloudmesh-openapi plugin
+* general commands as documented at in the
+ [manual](https://cloudmesh.github.io/cloudmesh-manual/) such as
+ [admin](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/admin.html),
+ [banner](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/banner.html),
+ [clear](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/clear.html),
+ [echo](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/echo.html),
+ [default](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/default.html),
+ [info](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/info.html),
+ [pause](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/pause.html),
+ [plugin](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/plugin.html),
+ [quit](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/quit.html),
+ [shell](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/shell.html),
+ [sleep](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/sleep.html),
+ [stopwatch](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/stopwatch.html),
+ [sys](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/sys.html),
+ [var](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/var.html),
+ [version](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/version.html),
+ [open](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/open.html),
+ and others
+## New Features
+* Support for terminals with dark background
+* Support for python in variable assignments
+ ```
+ cms set a=\"py 1 + 1\"
+ a='2'
+ ```
+* Support for executing python in a py command
+ ```
+ cms py 1 + 1
+ 2
+ ```
+* Support for shell commands in the variabe value
+ ```
+ cms set a=\!pwd
+ ```
+* Support for reading values from a yaml configuration file in
+ `~/.cloudmesh/cloudmesh.yaml`
+ ```
+ cms set a=cloudmesh.profile.user
+ ```
+ where it is defined as
+ ```
+ cloudmesh:
+ profile:
+ user: gregor
+ ```
+
+%package -n python3-cloudmesh-cmd5
+Summary: A dynamic extensible CMD based command shell
+Provides: python-cloudmesh-cmd5
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-cloudmesh-cmd5
+EOF commands default help pause q shell sys version
+banner config echo info plugin quit sleep test
+clear debug gui man py set stopwatch var
+```
+To see the manual page for a specific command, please use::
+```
+cms> help COMMANDNAME
+```
+A full manual page is available at
+* <https://cloudmesh.github.io/cloudmesh-manual/>
+## CMD 5 Plugin Mechanism
+Cmd5 comes with a sophisticated plugin mechanism. Commands can be readily
+designed from the sys command.
+The sys command can be installed either from source (as discussed previously) or
+via pip
+```bash
+$ pip install cloudmesh-sys
+```
+Once you have installed it, execute `cms help sys` to see the usage. Now you
+simply can in a new directory execute the sys command as follows, where
+`mycommnad` is than name of the command you like to implement.
+```bash
+$ mkdir mycommand
+$ cd mycommand
+$ cms sys command generate mycommand .
+```
+A directory with the name `cloudmesh-mycommand` will be generated that contains
+the template for the command. You can enter this template and modify the
+implementation in the folders `cloudmesh/mycommand/api` and
+`cloudmesh/mycommand/command` when installing it with
+```
+$ pip install .
+```
+The command will be added to the cms command>
+An example for the bar command is presented at:
+* [cloudmesh/bar/command/bar.py](https://github.com/cloudmesh/cloudmesh.bar/blob/main/cloudmesh/bar/command/bar.py)
+It shows how simple the command definition is (bar.py)::
+```bash
+from cloudmesh.shell.command import command
+from cloudmesh.shell.command import PluginCommand
+class BarCommand(PluginCommand):
+ @command
+ def do_bar(self, args, arguments):
+ """
+ Usage:
+ command -f FILE
+ command FILE
+ command list
+ This command does some useful things.
+ Arguments:
+ FILE a file name
+ Options:
+ -f specify the file
+ """
+ print(arguments)
+```
+An important difference to other CMD solutions is that our commands
+can leverage (besides the standard definition), docopts as a way to
+define the manual page. This allows us to use arguments as dict and
+use simple if conditions to interpret the command. Using docopts has
+the advantage that contributors are forced to think about the command
+and its options and document them from the start. Previously we used
+not to use docopts and argparse was used. However we noticed that for
+some contributions the lead to commands that were either not properly
+documented or the developers delivered ambiguous commands that
+resulted in confusion and wrong usage by the users. Hence, we do
+recommend that you use docopts.
+The transformation is enabled by the `@command` decorator that takes
+also the manual page and creates a proper help message for the shell
+automatically. Thus there is no need to introduce a separate help
+method as would normally be needed in CMD.
+## Features
+The following highlighted features are available:
+* easy command integration through separate modules
+* multi cloud environments (under development) though cloudmesh-cloud plugin
+* openapi integration through cloudmesh-openapi plugin
+* general commands as documented at in the
+ [manual](https://cloudmesh.github.io/cloudmesh-manual/) such as
+ [admin](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/admin.html),
+ [banner](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/banner.html),
+ [clear](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/clear.html),
+ [echo](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/echo.html),
+ [default](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/default.html),
+ [info](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/info.html),
+ [pause](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/pause.html),
+ [plugin](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/plugin.html),
+ [quit](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/quit.html),
+ [shell](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/shell.html),
+ [sleep](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/sleep.html),
+ [stopwatch](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/stopwatch.html),
+ [sys](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/sys.html),
+ [var](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/var.html),
+ [version](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/version.html),
+ [open](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/open.html),
+ and others
+## New Features
+* Support for terminals with dark background
+* Support for python in variable assignments
+ ```
+ cms set a=\"py 1 + 1\"
+ a='2'
+ ```
+* Support for executing python in a py command
+ ```
+ cms py 1 + 1
+ 2
+ ```
+* Support for shell commands in the variabe value
+ ```
+ cms set a=\!pwd
+ ```
+* Support for reading values from a yaml configuration file in
+ `~/.cloudmesh/cloudmesh.yaml`
+ ```
+ cms set a=cloudmesh.profile.user
+ ```
+ where it is defined as
+ ```
+ cloudmesh:
+ profile:
+ user: gregor
+ ```
+
+%package help
+Summary: Development documents and examples for cloudmesh-cmd5
+Provides: python3-cloudmesh-cmd5-doc
+%description help
+EOF commands default help pause q shell sys version
+banner config echo info plugin quit sleep test
+clear debug gui man py set stopwatch var
+```
+To see the manual page for a specific command, please use::
+```
+cms> help COMMANDNAME
+```
+A full manual page is available at
+* <https://cloudmesh.github.io/cloudmesh-manual/>
+## CMD 5 Plugin Mechanism
+Cmd5 comes with a sophisticated plugin mechanism. Commands can be readily
+designed from the sys command.
+The sys command can be installed either from source (as discussed previously) or
+via pip
+```bash
+$ pip install cloudmesh-sys
+```
+Once you have installed it, execute `cms help sys` to see the usage. Now you
+simply can in a new directory execute the sys command as follows, where
+`mycommnad` is than name of the command you like to implement.
+```bash
+$ mkdir mycommand
+$ cd mycommand
+$ cms sys command generate mycommand .
+```
+A directory with the name `cloudmesh-mycommand` will be generated that contains
+the template for the command. You can enter this template and modify the
+implementation in the folders `cloudmesh/mycommand/api` and
+`cloudmesh/mycommand/command` when installing it with
+```
+$ pip install .
+```
+The command will be added to the cms command>
+An example for the bar command is presented at:
+* [cloudmesh/bar/command/bar.py](https://github.com/cloudmesh/cloudmesh.bar/blob/main/cloudmesh/bar/command/bar.py)
+It shows how simple the command definition is (bar.py)::
+```bash
+from cloudmesh.shell.command import command
+from cloudmesh.shell.command import PluginCommand
+class BarCommand(PluginCommand):
+ @command
+ def do_bar(self, args, arguments):
+ """
+ Usage:
+ command -f FILE
+ command FILE
+ command list
+ This command does some useful things.
+ Arguments:
+ FILE a file name
+ Options:
+ -f specify the file
+ """
+ print(arguments)
+```
+An important difference to other CMD solutions is that our commands
+can leverage (besides the standard definition), docopts as a way to
+define the manual page. This allows us to use arguments as dict and
+use simple if conditions to interpret the command. Using docopts has
+the advantage that contributors are forced to think about the command
+and its options and document them from the start. Previously we used
+not to use docopts and argparse was used. However we noticed that for
+some contributions the lead to commands that were either not properly
+documented or the developers delivered ambiguous commands that
+resulted in confusion and wrong usage by the users. Hence, we do
+recommend that you use docopts.
+The transformation is enabled by the `@command` decorator that takes
+also the manual page and creates a proper help message for the shell
+automatically. Thus there is no need to introduce a separate help
+method as would normally be needed in CMD.
+## Features
+The following highlighted features are available:
+* easy command integration through separate modules
+* multi cloud environments (under development) though cloudmesh-cloud plugin
+* openapi integration through cloudmesh-openapi plugin
+* general commands as documented at in the
+ [manual](https://cloudmesh.github.io/cloudmesh-manual/) such as
+ [admin](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/admin.html),
+ [banner](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/banner.html),
+ [clear](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/clear.html),
+ [echo](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/echo.html),
+ [default](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/default.html),
+ [info](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/info.html),
+ [pause](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/pause.html),
+ [plugin](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/plugin.html),
+ [quit](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/quit.html),
+ [shell](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/shell.html),
+ [sleep](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/sleep.html),
+ [stopwatch](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/stopwatch.html),
+ [sys](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/sys.html),
+ [var](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/var.html),
+ [version](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/version.html),
+ [open](https://cloudmesh.github.io/cloudmesh-manual/manual/cmd5/open.html),
+ and others
+## New Features
+* Support for terminals with dark background
+* Support for python in variable assignments
+ ```
+ cms set a=\"py 1 + 1\"
+ a='2'
+ ```
+* Support for executing python in a py command
+ ```
+ cms py 1 + 1
+ 2
+ ```
+* Support for shell commands in the variabe value
+ ```
+ cms set a=\!pwd
+ ```
+* Support for reading values from a yaml configuration file in
+ `~/.cloudmesh/cloudmesh.yaml`
+ ```
+ cms set a=cloudmesh.profile.user
+ ```
+ where it is defined as
+ ```
+ cloudmesh:
+ profile:
+ user: gregor
+ ```
+
+%prep
+%autosetup -n cloudmesh-cmd5-4.3.26
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-cloudmesh-cmd5 -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Mon May 15 2023 Python_Bot <Python_Bot@openeuler.org> - 4.3.26-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..32923eb
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+ce22eaa5304a2558b1932ccaeddb36c8 cloudmesh-cmd5-4.3.26.tar.gz