Commit e592fba9 by Konstantin Molchanov Committed by Sébastien Eustace

Add username and password options to publish command. (#83)

parent 1eef2c7f
...@@ -34,11 +34,11 @@ python get-poetry.py --version 0.7.0 ...@@ -34,11 +34,11 @@ python get-poetry.py --version 0.7.0
``` ```
Using `pip` to install `poetry` is also possible. Using `pip` to install `poetry` is also possible.
```bash ```bash
pip install --user poetry pip install --user poetry
``` ```
Be aware, however, that it will also install poetry's dependencies Be aware, however, that it will also install poetry's dependencies
which might cause conflicts. which might cause conflicts.
...@@ -83,7 +83,7 @@ poetry completions fish > ~/.config/fish/completions/pyproject.fish ...@@ -83,7 +83,7 @@ poetry completions fish > ~/.config/fish/completions/pyproject.fish
poetry completions zsh > ~/.zfunc/_poetry poetry completions zsh > ~/.zfunc/_poetry
``` ```
*Note:* you may need to restart your shell in order for the changes to take *Note:* you may need to restart your shell in order for the changes to take
effect. effect.
For `zsh`, you must then add the following line in your `~/.zshrc` before For `zsh`, you must then add the following line in your `~/.zshrc` before
...@@ -225,7 +225,7 @@ You either have to use `sync` or `clean` to fix that. ...@@ -225,7 +225,7 @@ You either have to use `sync` or `clean` to fix that.
#### Too limited in scope #### Too limited in scope
Finally, the `Pipfile` is just a replacement from `requirements.txt` and, in the end, you will still need to Finally, the `Pipfile` is just a replacement from `requirements.txt` and, in the end, you will still need to
populate your `setup.py` file (or `setup.cfg`) with the exact same dependencies you declared in your `Pipfile`. populate your `setup.py` file (or `setup.cfg`) with the exact same dependencies you declared in your `Pipfile`.
So, in the end, you will still need to manage a few configuration files to properly setup your project. So, in the end, you will still need to manage a few configuration files to properly setup your project.
...@@ -410,6 +410,8 @@ poetry publish ...@@ -410,6 +410,8 @@ poetry publish
* `-r|--repository`: The repository to register the package to (default: `pypi`). * `-r|--repository`: The repository to register the package to (default: `pypi`).
Should match a repository name set by the [`config`](#config) command. Should match a repository name set by the [`config`](#config) command.
* `--username (-u)`: The username to access the repository.
* `--password (-p)`: The password to access the repository.
### `config` ### `config`
......
...@@ -201,7 +201,8 @@ poetry publish ...@@ -201,7 +201,8 @@ poetry publish
* `--repository (-r)`: The repository to register the package to (default: `pypi`). * `--repository (-r)`: The repository to register the package to (default: `pypi`).
Should match a repository name set by the [`config`](#config) command. Should match a repository name set by the [`config`](#config) command.
* `--username (-u)`: The username to access the repository.
* `--password (-p)`: The password to access the repository.
## config ## config
......
...@@ -7,11 +7,13 @@ class PublishCommand(Command): ...@@ -7,11 +7,13 @@ class PublishCommand(Command):
publish publish
{ --r|repository= : The repository to publish the package to. } { --r|repository= : The repository to publish the package to. }
{ --u|username= : The username to access the repository. }
{ --p|password= : The password to access the repository. }
{ --no-build : Do not build the package before publishing. } { --no-build : Do not build the package before publishing. }
""" """
help = """The publish command builds and uploads the package to a remote repository. help = """The publish command builds and uploads the package to a remote repository.
By default, it will upload to PyPI but if you pass the --repository option it will By default, it will upload to PyPI but if you pass the --repository option it will
upload to it instead. upload to it instead.
...@@ -29,4 +31,8 @@ the config command. ...@@ -29,4 +31,8 @@ the config command.
self.line('') self.line('')
publisher = Publisher(self.poetry, self.output) publisher = Publisher(self.poetry, self.output)
publisher.publish(self.option('repository')) publisher.publish(
self.option('repository'),
self.option('username'),
self.option('password')
)
...@@ -17,7 +17,7 @@ class Publisher: ...@@ -17,7 +17,7 @@ class Publisher:
self._io = io self._io = io
self._uploader = Uploader(poetry, io) self._uploader = Uploader(poetry, io)
def publish(self, repository_name): def publish(self, repository_name, username, password):
if repository_name: if repository_name:
self._io.writeln( self._io.writeln(
'Publishing <info>{}</info> (<comment>{}</comment>) ' 'Publishing <info>{}</info> (<comment>{}</comment>) '
...@@ -62,18 +62,17 @@ class Publisher: ...@@ -62,18 +62,17 @@ class Publisher:
url = config['repositories'][repository_name]['url'] url = config['repositories'][repository_name]['url']
username = None if not (username and password):
password = None auth_file = Path(CONFIG_DIR) / 'auth.toml'
auth_file = Path(CONFIG_DIR) / 'auth.toml' if auth_file.exists():
if auth_file.exists(): with auth_file.open() as f:
with auth_file.open() as f: auth_config = toml.loads(f.read())
auth_config = toml.loads(f.read())
if 'http-basic' in auth_config and repository_name in auth_config['http-basic']: if 'http-basic' in auth_config and repository_name in auth_config['http-basic']:
config = auth_config['http-basic'][repository_name] config = auth_config['http-basic'][repository_name]
username = config.get('username') username = config.get('username')
password = config.get('password') password = config.get('password')
# Requesting missing credentials # Requesting missing credentials
if not username: if not username:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment