#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

[tool.poetry]
name = "airavata-mft-cli"
version = "0.1.10"
description = "Command Line Client for Apache Airavata MFT data transfer software"
authors = [
    "Dimuthu Wannipurage <dwannipu@iu.edu>",
]
maintainers = [
    "Apache Airavata Developers <dev@apache.airavata.org>",
]
readme = "README.md"
homepage = "https://github.com/apache/airavata-mft"
license = "Apache-2.0"
keywords = ["MFT", "Data", "High Thorught Data Transfer", "Multi Protocol", "S3", "GCS", "Azure", "SCP", "Google Drive", "Swift", "Box", "DropBox"]

[tool.poetry.scripts]
mft = "airavata_mft_cli.main:app"

[tool.poetry.dependencies]
python = "^3.10"
typer = {extras = ["all"], version = "^0.7.0"}
pick = {version= "2.2.0"}
grpcio= [{version="1.46.3", markers = "platform_machine != 'arm64'"},{version="1.47.0rc1", markers = "platform_machine == 'arm64'"}]
grpcio-tools = [{version="1.46.3", markers = "platform_machine != 'arm64'"},{version="1.47.0rc1", markers = "platform_machine == 'arm64'"}]
airavata_mft_sdk= {version="0.0.1-alpha27"}

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
