示例#1
0
    def handle(self):
        from poetry.masonry.publishing.publisher import Publisher

        publisher = Publisher(self.poetry, self.output)

        # Building package first, if told
        if self.option("build"):
            if publisher.files:
                if not self.confirm(
                    "There are <info>{}</info> files ready for publishing. "
                    "Build anyway?".format(len(publisher.files))
                ):
                    self.line_error("<error>Aborted!</error>")

                    return 1

            self.call("build")

        files = publisher.files
        if not files:
            self.line_error(
                "<error>No files to publish. "
                "Run poetry build first or use the --build option.</error>"
            )

            return 1

        self.line("")

        publisher.publish(
            self.option("repository"), self.option("username"), self.option("password")
        )
def test_publish_can_publish_to_given_repository(fixture_dir, mocker, config):
    uploader_auth = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.auth")
    uploader_upload = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.upload")
    poetry = Factory().create_poetry(fixture_dir("sample_project"))
    poetry._config = config
    poetry.config.merge({
        "repositories": {
            "my-repo": {
                "url": "http://foo.bar"
            }
        },
        "http-basic": {
            "my-repo": {
                "username": "******",
                "password": "******"
            }
        },
    })
    publisher = Publisher(poetry, NullIO())

    publisher.publish("my-repo", None, None)

    assert [("foo", "bar")] == uploader_auth.call_args
    assert [
        ("http://foo.bar", ),
        {
            "cert": None,
            "client_cert": None
        },
    ] == uploader_upload.call_args
示例#3
0
文件: publish.py 项目: ofek/poetry
    def handle(self):
        from poetry.masonry.publishing.publisher import Publisher

        publisher = Publisher(self.poetry, self.output)

        # Building package first, if told
        if self.option('build'):
            if publisher.files:
                if not self.confirm(
                    'There are <info>{}</info> files ready for publishing. '
                    'Build anyway?'.format(len(publisher.files))
                ):
                    self.line_error('<error>Aborted!</error>')

                    return 1

            self.call('build')

        files = publisher.files
        if not files:
            self.line_error(
                '<error>No files to publish. '
                'Run poetry build first or use the --build option.</error>'
            )

            return 1

        self.line('')

        publisher.publish(
            self.option('repository'),
            self.option('username'),
            self.option('password')
        )
def test_publish_uses_client_cert(fixture_dir, mocker, config):
    client_cert = "path/to/client.pem"
    uploader_upload = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.upload")
    poetry = Factory().create_poetry(fixture_dir("sample_project"))
    poetry._config = config
    poetry.config.merge({
        "repositories": {
            "foo": {
                "url": "https://foo.bar"
            }
        },
        "certificates": {
            "foo": {
                "client-cert": client_cert
            }
        },
    })
    publisher = Publisher(poetry, NullIO())

    publisher.publish("foo", None, None)

    assert [
        ("https://foo.bar", ),
        {
            "cert": None,
            "client_cert": Path(client_cert)
        },
    ] == uploader_upload.call_args
def test_publish_publishes_to_pypi_by_default(fixture_dir, mocker, config):
    uploader_auth = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.auth")
    uploader_upload = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.upload")
    poetry = Factory().create_poetry(fixture_dir("sample_project"))
    poetry._config = config
    poetry.config.merge(
        {"http-basic": {
            "pypi": {
                "username": "******",
                "password": "******"
            }
        }})
    publisher = Publisher(poetry, NullIO())

    publisher.publish(None, None, None)

    assert [("foo", "bar")] == uploader_auth.call_args
    assert [
        ("https://upload.pypi.org/legacy/", ),
        {
            "cert": None,
            "client_cert": None
        },
    ] == uploader_upload.call_args
示例#6
0
    def handle(self):
        # Building package first, unless told otherwise
        if not self.option('no-build'):
            self.call('build')

        self.line('')

        publisher = Publisher(self.poetry, self.output)
        publisher.publish(self.option('repository'))
示例#7
0
文件: publish.py 项目: undu/poetry
    def handle(self):
        from poetry.masonry.publishing.publisher import Publisher

        # Building package first, unless told otherwise
        if not self.option('no-build'):
            self.call('build')

        self.line('')

        publisher = Publisher(self.poetry, self.output)
        publisher.publish(self.option('repository'), self.option('username'),
                          self.option('password'))
def test_publish_raises_error_for_undefined_repository(fixture_dir, mocker,
                                                       config):
    poetry = Factory().create_poetry(fixture_dir("sample_project"))
    poetry._config = config
    poetry.config.merge(
        {"http-basic": {
            "my-repo": {
                "username": "******",
                "password": "******"
            }
        }})
    publisher = Publisher(poetry, NullIO())

    with pytest.raises(RuntimeError):
        publisher.publish("my-repo", None, None)
def test_publish_uses_token_if_it_exists(fixture_dir, mocker, config):
    uploader_auth = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.auth")
    uploader_upload = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.upload")
    poetry = Factory().create_poetry(fixture_dir("sample_project"))
    poetry._config = config
    poetry.config.merge({"pypi-token": {"pypi": "my-token"}})
    publisher = Publisher(poetry, NullIO())

    publisher.publish(None, None, None)

    assert [("__token__", "my-token")] == uploader_auth.call_args
    assert [
        ("https://upload.pypi.org/legacy/", ),
        {
            "cert": None,
            "client_cert": None
        },
    ] == uploader_upload.call_args
def test_publish_read_from_environment_variable(fixture_dir, environ, mocker,
                                                config):
    os.environ["POETRY_REPOSITORIES_FOO_URL"] = "https://foo.bar"
    os.environ["POETRY_HTTP_BASIC_FOO_USERNAME"] = "******"
    os.environ["POETRY_HTTP_BASIC_FOO_PASSWORD"] = "******"
    uploader_auth = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.auth")
    uploader_upload = mocker.patch(
        "poetry.masonry.publishing.uploader.Uploader.upload")
    poetry = Factory().create_poetry(fixture_dir("sample_project"))
    publisher = Publisher(poetry, NullIO())

    publisher.publish("foo", None, None)

    assert [("bar", "baz")] == uploader_auth.call_args
    assert [
        ("https://foo.bar", ),
        {
            "cert": None,
            "client_cert": None
        },
    ] == uploader_upload.call_args