diff options
Diffstat (limited to 'python-polidoro-cli.spec')
-rw-r--r-- | python-polidoro-cli.spec | 698 |
1 files changed, 698 insertions, 0 deletions
diff --git a/python-polidoro-cli.spec b/python-polidoro-cli.spec new file mode 100644 index 0000000..a1ea956 --- /dev/null +++ b/python-polidoro-cli.spec @@ -0,0 +1,698 @@ +%global _empty_manifest_terminate_build 0 +Name: python-polidoro-cli +Version: 4.6.8 +Release: 1 +Summary: Polidoro CLI. +License: MIT +URL: https://github.com/heitorpolidoro/polidoro-cli +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/6b/47/961af7e24dafca07d13fc2e4df9654065d57d1605f9086e5c5746249f47c/polidoro-cli-4.6.8.tar.gz +BuildArch: noarch + +Requires: python3-polidoro-argument +Requires: python3-pyyaml + +%description +# Polidoro CLI +[](https://github.com/heitorpolidoro/polidoro-cli/actions/workflows/python-publish.yml) +[](https://github.com/heitorpolidoro/polidoro-cli/actions/workflows/python-lint.yml) + +[](https://coveralls.io/github/heitorpolidoro/polidoro-cli?branch=master) +[](https://sonarcloud.io/summary/new_code?id=heitorpolidoro_polidoro-cli) + +[](https://github.com/heitorpolidoro/polidoro-cli/releases/latest) + + + + + +### To install + +``` +sudo apt install python3-pip -y +pip3 install polidoro_cli +``` + +### To use: +`cli --help` + +### Tips: +Create alias for the CLI commands: + +Add in your `.bashrc` +``` +alias dk='cli docker' +alias ex='cli elixir' +alias dj='cli django' +alias rb='cli ruby' +alias g='cli git' +... +``` +Or run `cli create_aliases` to create aliases for all default CLIs +### Default CLIs: +- **Django** [more information](README_DJANGO.md) +- **Docker:** [more information](README_DOCKER.md) +- **Elixir:** [more information](README_ELIXIR.md) +- **Git:** [more information](README_GIT.md) +- **NPM:** [more information](README_NPM.md) +- **PyTest:** [more information](README_PYTEST.md) +- **Ruby:** [more information](README_RUBY.md) + +### Creating your own CLI +To create your CLI just create a file in `~/.cli` with the CLI name `NAME.cli` or `NAME.py` then call it with `cli name` or create an alias for it: +```shell +alias name='cli name' +``` +In the `.cli` file, create aliases similar to the bash +``` +# git.cli +ps=git push +``` +To call run `cli git ps`. Or create an bash alias `alias g=cli git` then run using only `g ps` + +#### Multiples aliases +To create multiples aliases separate by `,` +``` +# git.cli +simple_log,l=git log --one-line +``` +You can call using either `g simple_log` or `g l`. + +#### Multiples commands +To create a command with multiple commands separate by `;` +``` +# git.cli +commit_push,cp=git commit;git push +``` +**NOTE:** If any command fails, will not execute the other commands + +#### Using arguments +The CLI will put any arguments at the end of the command, by default, +but you can specify where use those arguments using `$args`. +``` +# git.cli +commit_push,cp=git commit -m "$args";git push +``` +Run with `g cp batata` will execute `git commit -m "batata"` then `git push` + +It is possible to specify the argument +``` +# postgres.cli +run=psql -U $arg0 -d $arg1 -c $arg2 +``` +Running `cli postgres run heitor polidoro_db "select * from table"` will execute +`psql -U 'heitor' -d 'polidoro_db' -c 'select * from table'` + +Use `${argN:DEFAULT_VALUE}` to specify a default value to the argument + +#### Variables + +To set some variable use `set NAME=VALE` and use it with `$NAME` +``` +# postgres.cli +set DB_USER=heitor +set DB_NAME=polidoro_db + +run=psql -U $USER -d $DB_NAME -c +``` +Running `cli postgres run "select * from table"` will execute +`psql -U 'heitor' -d 'polidoro_db' -c 'select * from table'` + +There is a special variable called `DEFAULT_COMMAND`, when set will start all commands with the value. +``` +# git.cli +set DEFAULT_COMMAND=git + +ps=push +pl=pull +commit_push,cp=commit -m "$args";push +``` +When run `g ps` will execute `git push`. Also works with multiple commands, like `g cp msg` will execute +`git commit -m "msg"` then `git push`. Also, when `DEFAULT_COMMAND` is set, all commands that is not set in +the `.cli` file will be called using the `DEFAULT_COMMAND`. `g fetch` will call `git fetch` even if the command +`fetch` is not in the `git.cli`, and, when run `--help` will show the `DEFAULT_COMMAND` help then the CLI help. + +There is a pair of special variables called `docker` and `service`, you can't (shouldn't) set, but you can use. When used will +replace the `$docker` with `docker-compose exec $service` if the parameter `-d/--docker` is in the command line. +The CLI will replace `$service` for the first argument from the command line, if is a valid service, +or will use the first service with `build` in `docker-compose.yml`. + +``` +# elixir.cli +deps=$docker mix deps.get +``` +If you call `ex deps` will execute `mix deps.get`, if you call `ex deps -d` will execute `docker-compose exec service_name mix deps.get` +or `ex deps -d other_service` will execute `docker-compose exec other_service mix deps.get`. +With the `$docker` variable you can create CLIs that runs in the host or in the container. + +You can combine things like: +``` +# elixir.cli +set DEFAULT_COMMAND=$docker mix + +deps=deps.get +setup=ecto.setup +reset=ecto.reset +``` +All commands will run in the host or in the container if `-d/--docker` is in the parameters + +You can explicit the command (or replace the `DEFAULT_COMMAND`) passing a dict (Python format) as command. +``` +# elixir.cli +set DEFAULT_COMMAND=mix + +deps=deps.get +iex={'command': 'iex -S mix'} +``` +In this case, when you call `ex iex` will run `iex -S mix` without the `DEFAULT_COMMAND` + +These ar the values you can use: + +| Key | Description | +| ---: | --- | +| `command` | The command to execute | +| `help` | Replace the generated help | +| `show_cmd` | To print or not the command (default=`True`) | +| `exit_on_fail` | if `False` will not terminate multiples commands when any one fails (default=`True`) | +| `messages` | Another dict with Messages to print: <br> `start`: Print the message before any command <br> `success`: Print the message when the command finish with success <br> `error`: Print the message when the command fails <br> `finish`: Print the message regardless the command result | +| `ANY_THNG` | Will set environment variable + +Examples: +``` +test={ + 'command': '$docker mix test', + 'MIX_ENV': 'test' +} +``` +Will set the environment variable `MIX_ENV` to `test` then run `mix test` + +#### Environment Variables +To set an environment variable for the CLIs commands use `export` like in bash +``` +# pytest.cli +export DJANGO_LOG_FILE=/tmp/log +export PYTEST_ADDOPTS="--color=yes" +``` +Any command in the Pytest CLI will use those environment variables + +#### Complex Commands +To create more complexes commands, you can create a `NAME.py` file. Create a class with the name of the CLI, +annotate the method you want with `@Command` and run the commands with `CLI.execute` +``` +# git.py +import os + +from polidoro_argument import Command +from polidoro_cli import CLI + + +class Git(object): + @staticmethod + @Command(help='Run "git fetch" in all git projects') + def fetch_all(): + for dir in os.listdir(): + if os.path.isdir(dir): + os.chdir(dir) + if os.path.exists('.git'): + print(f'Fetching in {dir}...') + CLI.execute('git fetch', show_cmd=False) + os.chdir('..') +``` + + + + + +%package -n python3-polidoro-cli +Summary: Polidoro CLI. +Provides: python-polidoro-cli +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-polidoro-cli +# Polidoro CLI +[](https://github.com/heitorpolidoro/polidoro-cli/actions/workflows/python-publish.yml) +[](https://github.com/heitorpolidoro/polidoro-cli/actions/workflows/python-lint.yml) + +[](https://coveralls.io/github/heitorpolidoro/polidoro-cli?branch=master) +[](https://sonarcloud.io/summary/new_code?id=heitorpolidoro_polidoro-cli) + +[](https://github.com/heitorpolidoro/polidoro-cli/releases/latest) + + + + + +### To install + +``` +sudo apt install python3-pip -y +pip3 install polidoro_cli +``` + +### To use: +`cli --help` + +### Tips: +Create alias for the CLI commands: + +Add in your `.bashrc` +``` +alias dk='cli docker' +alias ex='cli elixir' +alias dj='cli django' +alias rb='cli ruby' +alias g='cli git' +... +``` +Or run `cli create_aliases` to create aliases for all default CLIs +### Default CLIs: +- **Django** [more information](README_DJANGO.md) +- **Docker:** [more information](README_DOCKER.md) +- **Elixir:** [more information](README_ELIXIR.md) +- **Git:** [more information](README_GIT.md) +- **NPM:** [more information](README_NPM.md) +- **PyTest:** [more information](README_PYTEST.md) +- **Ruby:** [more information](README_RUBY.md) + +### Creating your own CLI +To create your CLI just create a file in `~/.cli` with the CLI name `NAME.cli` or `NAME.py` then call it with `cli name` or create an alias for it: +```shell +alias name='cli name' +``` +In the `.cli` file, create aliases similar to the bash +``` +# git.cli +ps=git push +``` +To call run `cli git ps`. Or create an bash alias `alias g=cli git` then run using only `g ps` + +#### Multiples aliases +To create multiples aliases separate by `,` +``` +# git.cli +simple_log,l=git log --one-line +``` +You can call using either `g simple_log` or `g l`. + +#### Multiples commands +To create a command with multiple commands separate by `;` +``` +# git.cli +commit_push,cp=git commit;git push +``` +**NOTE:** If any command fails, will not execute the other commands + +#### Using arguments +The CLI will put any arguments at the end of the command, by default, +but you can specify where use those arguments using `$args`. +``` +# git.cli +commit_push,cp=git commit -m "$args";git push +``` +Run with `g cp batata` will execute `git commit -m "batata"` then `git push` + +It is possible to specify the argument +``` +# postgres.cli +run=psql -U $arg0 -d $arg1 -c $arg2 +``` +Running `cli postgres run heitor polidoro_db "select * from table"` will execute +`psql -U 'heitor' -d 'polidoro_db' -c 'select * from table'` + +Use `${argN:DEFAULT_VALUE}` to specify a default value to the argument + +#### Variables + +To set some variable use `set NAME=VALE` and use it with `$NAME` +``` +# postgres.cli +set DB_USER=heitor +set DB_NAME=polidoro_db + +run=psql -U $USER -d $DB_NAME -c +``` +Running `cli postgres run "select * from table"` will execute +`psql -U 'heitor' -d 'polidoro_db' -c 'select * from table'` + +There is a special variable called `DEFAULT_COMMAND`, when set will start all commands with the value. +``` +# git.cli +set DEFAULT_COMMAND=git + +ps=push +pl=pull +commit_push,cp=commit -m "$args";push +``` +When run `g ps` will execute `git push`. Also works with multiple commands, like `g cp msg` will execute +`git commit -m "msg"` then `git push`. Also, when `DEFAULT_COMMAND` is set, all commands that is not set in +the `.cli` file will be called using the `DEFAULT_COMMAND`. `g fetch` will call `git fetch` even if the command +`fetch` is not in the `git.cli`, and, when run `--help` will show the `DEFAULT_COMMAND` help then the CLI help. + +There is a pair of special variables called `docker` and `service`, you can't (shouldn't) set, but you can use. When used will +replace the `$docker` with `docker-compose exec $service` if the parameter `-d/--docker` is in the command line. +The CLI will replace `$service` for the first argument from the command line, if is a valid service, +or will use the first service with `build` in `docker-compose.yml`. + +``` +# elixir.cli +deps=$docker mix deps.get +``` +If you call `ex deps` will execute `mix deps.get`, if you call `ex deps -d` will execute `docker-compose exec service_name mix deps.get` +or `ex deps -d other_service` will execute `docker-compose exec other_service mix deps.get`. +With the `$docker` variable you can create CLIs that runs in the host or in the container. + +You can combine things like: +``` +# elixir.cli +set DEFAULT_COMMAND=$docker mix + +deps=deps.get +setup=ecto.setup +reset=ecto.reset +``` +All commands will run in the host or in the container if `-d/--docker` is in the parameters + +You can explicit the command (or replace the `DEFAULT_COMMAND`) passing a dict (Python format) as command. +``` +# elixir.cli +set DEFAULT_COMMAND=mix + +deps=deps.get +iex={'command': 'iex -S mix'} +``` +In this case, when you call `ex iex` will run `iex -S mix` without the `DEFAULT_COMMAND` + +These ar the values you can use: + +| Key | Description | +| ---: | --- | +| `command` | The command to execute | +| `help` | Replace the generated help | +| `show_cmd` | To print or not the command (default=`True`) | +| `exit_on_fail` | if `False` will not terminate multiples commands when any one fails (default=`True`) | +| `messages` | Another dict with Messages to print: <br> `start`: Print the message before any command <br> `success`: Print the message when the command finish with success <br> `error`: Print the message when the command fails <br> `finish`: Print the message regardless the command result | +| `ANY_THNG` | Will set environment variable + +Examples: +``` +test={ + 'command': '$docker mix test', + 'MIX_ENV': 'test' +} +``` +Will set the environment variable `MIX_ENV` to `test` then run `mix test` + +#### Environment Variables +To set an environment variable for the CLIs commands use `export` like in bash +``` +# pytest.cli +export DJANGO_LOG_FILE=/tmp/log +export PYTEST_ADDOPTS="--color=yes" +``` +Any command in the Pytest CLI will use those environment variables + +#### Complex Commands +To create more complexes commands, you can create a `NAME.py` file. Create a class with the name of the CLI, +annotate the method you want with `@Command` and run the commands with `CLI.execute` +``` +# git.py +import os + +from polidoro_argument import Command +from polidoro_cli import CLI + + +class Git(object): + @staticmethod + @Command(help='Run "git fetch" in all git projects') + def fetch_all(): + for dir in os.listdir(): + if os.path.isdir(dir): + os.chdir(dir) + if os.path.exists('.git'): + print(f'Fetching in {dir}...') + CLI.execute('git fetch', show_cmd=False) + os.chdir('..') +``` + + + + + +%package help +Summary: Development documents and examples for polidoro-cli +Provides: python3-polidoro-cli-doc +%description help +# Polidoro CLI +[](https://github.com/heitorpolidoro/polidoro-cli/actions/workflows/python-publish.yml) +[](https://github.com/heitorpolidoro/polidoro-cli/actions/workflows/python-lint.yml) + +[](https://coveralls.io/github/heitorpolidoro/polidoro-cli?branch=master) +[](https://sonarcloud.io/summary/new_code?id=heitorpolidoro_polidoro-cli) + +[](https://github.com/heitorpolidoro/polidoro-cli/releases/latest) + + + + + +### To install + +``` +sudo apt install python3-pip -y +pip3 install polidoro_cli +``` + +### To use: +`cli --help` + +### Tips: +Create alias for the CLI commands: + +Add in your `.bashrc` +``` +alias dk='cli docker' +alias ex='cli elixir' +alias dj='cli django' +alias rb='cli ruby' +alias g='cli git' +... +``` +Or run `cli create_aliases` to create aliases for all default CLIs +### Default CLIs: +- **Django** [more information](README_DJANGO.md) +- **Docker:** [more information](README_DOCKER.md) +- **Elixir:** [more information](README_ELIXIR.md) +- **Git:** [more information](README_GIT.md) +- **NPM:** [more information](README_NPM.md) +- **PyTest:** [more information](README_PYTEST.md) +- **Ruby:** [more information](README_RUBY.md) + +### Creating your own CLI +To create your CLI just create a file in `~/.cli` with the CLI name `NAME.cli` or `NAME.py` then call it with `cli name` or create an alias for it: +```shell +alias name='cli name' +``` +In the `.cli` file, create aliases similar to the bash +``` +# git.cli +ps=git push +``` +To call run `cli git ps`. Or create an bash alias `alias g=cli git` then run using only `g ps` + +#### Multiples aliases +To create multiples aliases separate by `,` +``` +# git.cli +simple_log,l=git log --one-line +``` +You can call using either `g simple_log` or `g l`. + +#### Multiples commands +To create a command with multiple commands separate by `;` +``` +# git.cli +commit_push,cp=git commit;git push +``` +**NOTE:** If any command fails, will not execute the other commands + +#### Using arguments +The CLI will put any arguments at the end of the command, by default, +but you can specify where use those arguments using `$args`. +``` +# git.cli +commit_push,cp=git commit -m "$args";git push +``` +Run with `g cp batata` will execute `git commit -m "batata"` then `git push` + +It is possible to specify the argument +``` +# postgres.cli +run=psql -U $arg0 -d $arg1 -c $arg2 +``` +Running `cli postgres run heitor polidoro_db "select * from table"` will execute +`psql -U 'heitor' -d 'polidoro_db' -c 'select * from table'` + +Use `${argN:DEFAULT_VALUE}` to specify a default value to the argument + +#### Variables + +To set some variable use `set NAME=VALE` and use it with `$NAME` +``` +# postgres.cli +set DB_USER=heitor +set DB_NAME=polidoro_db + +run=psql -U $USER -d $DB_NAME -c +``` +Running `cli postgres run "select * from table"` will execute +`psql -U 'heitor' -d 'polidoro_db' -c 'select * from table'` + +There is a special variable called `DEFAULT_COMMAND`, when set will start all commands with the value. +``` +# git.cli +set DEFAULT_COMMAND=git + +ps=push +pl=pull +commit_push,cp=commit -m "$args";push +``` +When run `g ps` will execute `git push`. Also works with multiple commands, like `g cp msg` will execute +`git commit -m "msg"` then `git push`. Also, when `DEFAULT_COMMAND` is set, all commands that is not set in +the `.cli` file will be called using the `DEFAULT_COMMAND`. `g fetch` will call `git fetch` even if the command +`fetch` is not in the `git.cli`, and, when run `--help` will show the `DEFAULT_COMMAND` help then the CLI help. + +There is a pair of special variables called `docker` and `service`, you can't (shouldn't) set, but you can use. When used will +replace the `$docker` with `docker-compose exec $service` if the parameter `-d/--docker` is in the command line. +The CLI will replace `$service` for the first argument from the command line, if is a valid service, +or will use the first service with `build` in `docker-compose.yml`. + +``` +# elixir.cli +deps=$docker mix deps.get +``` +If you call `ex deps` will execute `mix deps.get`, if you call `ex deps -d` will execute `docker-compose exec service_name mix deps.get` +or `ex deps -d other_service` will execute `docker-compose exec other_service mix deps.get`. +With the `$docker` variable you can create CLIs that runs in the host or in the container. + +You can combine things like: +``` +# elixir.cli +set DEFAULT_COMMAND=$docker mix + +deps=deps.get +setup=ecto.setup +reset=ecto.reset +``` +All commands will run in the host or in the container if `-d/--docker` is in the parameters + +You can explicit the command (or replace the `DEFAULT_COMMAND`) passing a dict (Python format) as command. +``` +# elixir.cli +set DEFAULT_COMMAND=mix + +deps=deps.get +iex={'command': 'iex -S mix'} +``` +In this case, when you call `ex iex` will run `iex -S mix` without the `DEFAULT_COMMAND` + +These ar the values you can use: + +| Key | Description | +| ---: | --- | +| `command` | The command to execute | +| `help` | Replace the generated help | +| `show_cmd` | To print or not the command (default=`True`) | +| `exit_on_fail` | if `False` will not terminate multiples commands when any one fails (default=`True`) | +| `messages` | Another dict with Messages to print: <br> `start`: Print the message before any command <br> `success`: Print the message when the command finish with success <br> `error`: Print the message when the command fails <br> `finish`: Print the message regardless the command result | +| `ANY_THNG` | Will set environment variable + +Examples: +``` +test={ + 'command': '$docker mix test', + 'MIX_ENV': 'test' +} +``` +Will set the environment variable `MIX_ENV` to `test` then run `mix test` + +#### Environment Variables +To set an environment variable for the CLIs commands use `export` like in bash +``` +# pytest.cli +export DJANGO_LOG_FILE=/tmp/log +export PYTEST_ADDOPTS="--color=yes" +``` +Any command in the Pytest CLI will use those environment variables + +#### Complex Commands +To create more complexes commands, you can create a `NAME.py` file. Create a class with the name of the CLI, +annotate the method you want with `@Command` and run the commands with `CLI.execute` +``` +# git.py +import os + +from polidoro_argument import Command +from polidoro_cli import CLI + + +class Git(object): + @staticmethod + @Command(help='Run "git fetch" in all git projects') + def fetch_all(): + for dir in os.listdir(): + if os.path.isdir(dir): + os.chdir(dir) + if os.path.exists('.git'): + print(f'Fetching in {dir}...') + CLI.execute('git fetch', show_cmd=False) + os.chdir('..') +``` + + + + + +%prep +%autosetup -n polidoro-cli-4.6.8 + +%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-polidoro-cli -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot <Python_Bot@openeuler.org> - 4.6.8-1 +- Package Spec generated |