diff options
Diffstat (limited to 'python-cli2.spec')
-rw-r--r-- | python-cli2.spec | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/python-cli2.spec b/python-cli2.spec new file mode 100644 index 0000000..b974a0e --- /dev/null +++ b/python-cli2.spec @@ -0,0 +1,153 @@ +%global _empty_manifest_terminate_build 0 +Name: python-cli2 +Version: 2.6.1 +Release: 1 +Summary: image:: https://yourlabs.io/oss/cli2/badges/master/pipeline.svg +License: MIT +URL: https://yourlabs.io/oss/cli2 +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/83/f2/d6f30c4f0e212f8946a358969ff8d2310d1194d70b5d964495c77a91016f/cli2-2.6.1.tar.gz +BuildArch: noarch + + +%description +cli2 is a little library to build CLIs, which documentation is `available on +RTFD <https://cli2.readthedocs.io/en/latest/>`_, but it comes with its own demo +command that may as well be useful to explore Python libraries and call +functions on the fly. +Because, initially, cli2 was supposed to just bring Python callables on the CLI +without even a single line of code:: + cli2 path.to.your.callable arg1 kwarg1=value +This command was implemented again in this 10th rewrite of the CLI engine +extracted from Playlabs, however this implementation features something pretty +funny: cli2 is a Group subclass which overrides the default Group +implementation based on the first argument passed on the command line. +Basically, when you call ``cli2 path.to.module``, it will load a Group of name +``path.to.module`` which whill load one Command per callable in +``path.to.module``. +When you call ``cli2 path.to.function`` it will execute the function. +As a result, these three commands are strictly equivalent:: + cli2 cli2.test_node.example_function foo=bar + cli2 cli2.test_node example_function foo=bar +That is because cli2 generates a group with every member of the previous group! +See for yourself with:: + cli2 help cli2.test_node +Or just:: + cli2 cli2.test_node +Because cli2.test_node is not a callable but a module, cli2's cli2 CLI created +a command Group on the fly with the module and added every callable member as +command. +When you call a group on the command line, it displays help by default to drive +the user. + +%package -n python3-cli2 +Summary: image:: https://yourlabs.io/oss/cli2/badges/master/pipeline.svg +Provides: python-cli2 +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-cli2 +cli2 is a little library to build CLIs, which documentation is `available on +RTFD <https://cli2.readthedocs.io/en/latest/>`_, but it comes with its own demo +command that may as well be useful to explore Python libraries and call +functions on the fly. +Because, initially, cli2 was supposed to just bring Python callables on the CLI +without even a single line of code:: + cli2 path.to.your.callable arg1 kwarg1=value +This command was implemented again in this 10th rewrite of the CLI engine +extracted from Playlabs, however this implementation features something pretty +funny: cli2 is a Group subclass which overrides the default Group +implementation based on the first argument passed on the command line. +Basically, when you call ``cli2 path.to.module``, it will load a Group of name +``path.to.module`` which whill load one Command per callable in +``path.to.module``. +When you call ``cli2 path.to.function`` it will execute the function. +As a result, these three commands are strictly equivalent:: + cli2 cli2.test_node.example_function foo=bar + cli2 cli2.test_node example_function foo=bar +That is because cli2 generates a group with every member of the previous group! +See for yourself with:: + cli2 help cli2.test_node +Or just:: + cli2 cli2.test_node +Because cli2.test_node is not a callable but a module, cli2's cli2 CLI created +a command Group on the fly with the module and added every callable member as +command. +When you call a group on the command line, it displays help by default to drive +the user. + +%package help +Summary: Development documents and examples for cli2 +Provides: python3-cli2-doc +%description help +cli2 is a little library to build CLIs, which documentation is `available on +RTFD <https://cli2.readthedocs.io/en/latest/>`_, but it comes with its own demo +command that may as well be useful to explore Python libraries and call +functions on the fly. +Because, initially, cli2 was supposed to just bring Python callables on the CLI +without even a single line of code:: + cli2 path.to.your.callable arg1 kwarg1=value +This command was implemented again in this 10th rewrite of the CLI engine +extracted from Playlabs, however this implementation features something pretty +funny: cli2 is a Group subclass which overrides the default Group +implementation based on the first argument passed on the command line. +Basically, when you call ``cli2 path.to.module``, it will load a Group of name +``path.to.module`` which whill load one Command per callable in +``path.to.module``. +When you call ``cli2 path.to.function`` it will execute the function. +As a result, these three commands are strictly equivalent:: + cli2 cli2.test_node.example_function foo=bar + cli2 cli2.test_node example_function foo=bar +That is because cli2 generates a group with every member of the previous group! +See for yourself with:: + cli2 help cli2.test_node +Or just:: + cli2 cli2.test_node +Because cli2.test_node is not a callable but a module, cli2's cli2 CLI created +a command Group on the fly with the module and added every callable member as +command. +When you call a group on the command line, it displays help by default to drive +the user. + +%prep +%autosetup -n cli2-2.6.1 + +%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-cli2 -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 2.6.1-1 +- Package Spec generated |