## START: Set by rpmautospec
## (rpmautospec version 0.3.5)
## RPMAUTOSPEC: autorelease, autochangelog
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
    release_number = 1;
    base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
    print(release_number + base_release_number - 1);
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
## END: Set by rpmautospec

%global pkgname aws-cli

Name:               awscli2
Version:            2.11.27
Release:            %autorelease

Summary:            Universal Command Line Environment for AWS, version 2
# all files are licensed under Apache-2.0, except:
# - awscli/topictags.py is MIT
# - awscli/botocore/vendored/six.py is MIT
License:            Apache-2.0 AND MIT
URL:                https://github.com/aws/aws-cli/tree/v2

Source0:            https://github.com/aws/aws-cli/archive/%{version}/%{pkgname}-%{version}.tar.gz

# ruamel-yaml 0.17.22 changed whitespace formatting, breaking some TestUpdateKubeconfig tests
# add a workaround for that until upstream comes with a proper fix
Patch0:             ruamel-yaml-0.17.22.patch

BuildArch:          noarch

BuildRequires:      python%{python3_pkgversion}-devel
BuildRequires:      python-unversioned-command
BuildRequires:      procps-ng

Recommends:         groff

Provides:           bundled(python3dist(botocore)) = 2.0.0
Provides:           bundled(python3dist(s3transfer)) = 0.5.1

Provides:           awscli = %{version}-%{release}
Obsoletes:          awscli < 2

# provide an upgrade path from awscli-2 (Amazon Linux)
Provides:           awscli-2 = %{version}-%{release}
Obsoletes:          awscli-2 < %{version}-%{release}

# python-awscrt does not build on s390x
ExcludeArch:        s390x


%description
This package provides version 2 of the unified command line
interface to Amazon Web Services.


%prep
%autosetup -p1 -n %{pkgname}-%{version}

# fix permissions
find awscli/examples/ -type f -name '*.rst' -executable -exec chmod -x '{}' +

# remove version caps on dependencies
sed -i 's/,<=\?[^"]*"/"/' pyproject.toml

# use unittest.mock
find -type f -name '*.py' -exec sed \
    -e 's/^\( *\)import mock$/\1from unittest import mock/' \
    -e 's/^\( *\)from mock import mock/\1from unittest import mock/' \
    -e 's/^\( *\)from mock import/\1from unittest.mock import/' \
    -i '{}' +

# Fedora does not run coverage tests.
# mock is deprecated in Fedora. We use unittest.mock.
# pip-tools is not used directly by the unit tests.
sed \
    -e 's|==.*||' \
    -e '/coverage/d' \
    -e '/mock/d' \
    -e '/pip-tools/d' \
    -e '/pytest-cov/d' \
    requirements-test.txt > _requirements-test.txt


%generate_buildrequires
%pyproject_buildrequires _requirements-test.txt


%build
%pyproject_wheel


%install
%pyproject_install
%pyproject_save_files awscli

# remove unnecessary scripts
rm -vf %{buildroot}%{_bindir}/{aws_bash_completer,aws_zsh_completer.sh,aws.cmd}

# install shell completion
install -Dpm0644 bin/aws_bash_completer \
  %{buildroot}%{bash_completions_dir}/aws
install -Dpm0644 bin/aws_zsh_completer.sh \
  %{buildroot}%{zsh_completions_dir}/_awscli


%check
# it appears that some tests modify the environment and remove PYTHONPATH
# so it's not passed to botocore cmd-runner, inject it here
sed -i '/self.driver.start(env=env)/i \ \ \ \ \ \ \ \ env["PYTHONPATH"] = "%{buildroot}%{python3_sitelib}"' \
    tests/utils/botocore/__init__.py

export TESTS_REMOVE_REPO_ROOT_FROM_PATH=1 TZ=UTC
%pytest --verbose --numprocesses=auto --dist=loadfile tests/unit tests/functional


%files -f %{pyproject_files}
%license LICENSE.txt
%doc README.rst
%{_bindir}/aws
%{_bindir}/aws_completer
%{bash_completions_dir}/aws
%{zsh_completions_dir}/_awscli


%changelog
* Fri Jun 09 2023 Packit <hello@packit.dev> - 2.11.27-1
- [packit] 2.11.27 upstream release

* Thu Jun 08 2023 Packit <hello@packit.dev> - 2.11.26-1
- [packit] 2.11.26 upstream release

* Mon Jun 05 2023 Packit <hello@packit.dev> - 2.11.25-1
- [packit] 2.11.25 upstream release

* Thu Jun 01 2023 Packit <hello@packit.dev> - 2.11.24-1
- [packit] 2.11.24 upstream release

* Sat May 27 2023 Packit <hello@packit.dev> - 2.11.23-1
- [packit] 2.11.23 upstream release

* Fri May 26 2023 Packit <hello@packit.dev> - 2.11.22-1
- [packit] 2.11.22 upstream release

* Sat May 20 2023 Packit <hello@packit.dev> - 2.11.21-1
- [packit] 2.11.21 upstream release

* Sat May 13 2023 Packit <hello@packit.dev> - 2.11.20-1
- [packit] 2.11.20 upstream release

* Thu May 11 2023 Packit <hello@packit.dev> - 2.11.19-1
- [packit] 2.11.19 upstream release

* Wed May 10 2023 Nikola Forró <nforro@redhat.com> - 2.11.18-1
- Update to 2.11.18 and add missing Provides

* Mon May 08 2023 Maxwell G <maxwell@gtmx.me> - 2.11.17-4
- fix typo in comment

* Fri May 05 2023 Nikola Forró <nforro@redhat.com> - 2.11.17-1
- Initial package