1{
2 lib,
3 python3,
4 fetchFromGitHub,
5 fetchPypi,
6 git,
7}:
8
9let
10 python = python3.override {
11 packageOverrides = self: super: {
12 cement = super.cement.overridePythonAttrs (old: rec {
13 pname = "cement";
14 version = "2.10.14";
15 src = fetchPypi {
16 inherit pname version;
17 hash = "sha256-NC4n21SmYW3RiS7QuzWXoifO4z3C2FVgQm3xf8qQcFg=";
18 };
19 build-system = old.build-system or [ ] ++ (with python.pkgs; [ setuptools ]);
20 doCheck = false;
21 });
22 };
23 };
24in
25
26python.pkgs.buildPythonApplication rec {
27 pname = "awsebcli";
28 version = "3.25";
29 pyproject = true;
30
31 src = fetchFromGitHub {
32 owner = "aws";
33 repo = "aws-elastic-beanstalk-cli";
34 tag = version;
35 hash = "sha256-RqUVG4aIZDAVuKcT41ODKkyEidmschcFaY24P1CjosU=";
36 };
37
38 pythonRelaxDeps = [
39 "botocore"
40 "colorama"
41 "pathspec"
42 "packaging"
43 "PyYAML"
44 "six"
45 "termcolor"
46 "urllib3"
47 ];
48
49 dependencies = with python.pkgs; [
50 packaging
51 blessed
52 botocore
53 cement
54 colorama
55 fabric
56 pathspec
57 pyyaml
58 requests
59 semantic-version
60 setuptools
61 tabulate
62 termcolor
63 websocket-client
64 ];
65
66 nativeCheckInputs = with python.pkgs; [
67 git
68 mock
69 pytest-socket
70 pytestCheckHook
71 ];
72
73 enabledTestPaths = [
74 "tests/unit"
75 ];
76
77 disabledTests = [
78 # Needs docker installed to run.
79 "test_local_run"
80 "test_local_run__with_arguments"
81
82 # Needs access to the user's ~/.ssh directory.
83 "test_generate_and_upload_keypair__exit_code_0"
84 "test_generate_and_upload_keypair__exit_code_1"
85 "test_generate_and_upload_keypair__exit_code_is_other_than_1_and_0"
86 "test_generate_and_upload_keypair__ssh_keygen_not_present"
87
88 # AssertionError: Expected 'echo' to be called once. Called 2 times
89 "test_multiple_modules__one_or_more_of_the_specified_modules_lacks_an_env_yaml"
90
91 # fails on hydra only on aarch64-linux
92 # ebcli.objects.exceptions.CredentialsError: Operation Denied. You appear to have no credentials
93 "test_aws_eb_profile_environment_variable_found__profile_exists_in_credentials_file"
94 ];
95
96 meta = {
97 description = "Command line interface for Elastic Beanstalk";
98 homepage = "https://aws.amazon.com/elasticbeanstalk/";
99 changelog = "https://github.com/aws/aws-elastic-beanstalk-cli/blob/${version}/CHANGES.rst";
100 license = lib.licenses.asl20;
101 maintainers = with lib.maintainers; [ kirillrdy ];
102 mainProgram = "eb";
103 };
104}