[docutils:bugs] #479 scripts install with broken shebang

Günter Milde via Docutils-develop <[email protected]>
Newsgroups gmane.text.docutils.devel
Message-ID </p/docutils/bugs/479/0400b880fa831e24b3b996f73690b2a3aec20d57.bugs@docutils.p.sourceforge.net>
- **Comment**:

Thank you for reporting a problem with Docutils.

The problem seems caused by the installer `pipx` rather than Docutils:

In the repository and source tarball, the [front end tools](https://docutils.sourceforge.io/docs/user/tools.html) start with the line
~~~
#!/usr/bin/env python3
~~~
In the "wheel", the line is shortened to
~~~
#!python
~~~
The upcoming [release 0.21](https://docutils.sourceforge.io/RELEASE-NOTES.html#release-0-21-unpublished) will provide `rst2*` "console_scripts" *entry points* instead of installing the `rst2*.py` front end tools.
This change will provide the `rst2*` cli commands ("apps") also under Windows and solve the *quick aside*.

The [Generic Command Line Front End](https://docutils.sourceforge.io/docs/user/tools.html#generic-command-line-front-end) `docutils` already uses the new standard.
You may try, e.g, 

    docutils --help
    
to see, if this works on your system. If yes, the "rst2*" commands should work with Docutils 0.21, too.

**Attention**

The current usage is 

    <toolname> [options] [<source> [<destination>]]

In a directory with files `a.rst` and `b.rst`, the command

    rst2html.py docs/*
    
will happily **overwrite** `b.rst` with the output of converting `a.rst` **without warning**.
This is a [known problem](https://sourceforge.net/p/docutils/feature-requests/36/) and [will change in future releases](https://docutils.sourceforge.io/RELEASE-NOTES.html#command-line-interface).




---

**[bugs:#479] scripts install with broken shebang**

**Status:** open
**Created:** Mon Feb 19, 2024 07:25 AM UTC by Jason R. Coombs
**Last Updated:** Mon Feb 19, 2024 07:25 AM UTC
**Owner:** nobody


The way docutils presents its executable scripts is broken on macOS.

Today, I installed docutils using pipx.

```
 @ pipx install docutils
  installed package docutils 0.20.1, installed using Python 3.12.2
  These apps are now globally available
    - docutils
    - rst2html.py
    - rst2html4.py
    - rst2html5.py
    - rst2latex.py
    - rst2man.py
    - rst2odt.py
    - rst2odt_prepstyles.py
    - rst2pseudoxml.py
    - rst2s5.py
    - rst2xetex.py
    - rst2xml.py
    - rstpep2html.py
done! ✨ 🌟 ✨
```

Quick aside, it would be nice if these executables didn't have the .py extension.

After installing, the scripts failed with this error:

```
 @ rst2html.py docs/*
xonsh: subprocess mode: command not found: '/Users/jaraco/Library/Application'
```

The problem is that pipx, by default, installs its data into the "Application Support" directory:

```
 @ pipx environment | grep HOME
PIPX_HOME=
PIPX_HOME=/Users/jaraco/Library/Application Support/pipx
```

And when it does, the scripts get installed with an invalid shebang because [Unix doesn't support spaces in shebangs](https://blog.jaraco.com/unix-doesnt-support-spaces-in-filenames/):

```
 @ head -n 1 $(which rst2html.py)
#!/Users/jaraco/Library/Application Support/pipx/venvs/docutils/bin/python
```




---

Sent from sourceforge.net because [email protected] is subscribed to https://sourceforge.net/p/docutils/bugs/

To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/docutils/admin/bugs/options.  Or, if this is a mailing list, you can unsubscribe from the mailing list.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.