ecosyste-ms-cli 1.3.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. ecosyste_ms_cli-1.3.2.dist-info/METADATA +133 -0
  2. ecosyste_ms_cli-1.3.2.dist-info/RECORD +84 -0
  3. ecosyste_ms_cli-1.3.2.dist-info/WHEEL +5 -0
  4. ecosyste_ms_cli-1.3.2.dist-info/entry_points.txt +2 -0
  5. ecosyste_ms_cli-1.3.2.dist-info/licenses/LICENSE +21 -0
  6. ecosyste_ms_cli-1.3.2.dist-info/top_level.txt +1 -0
  7. ecosystems_cli/__init__.py +3 -0
  8. ecosystems_cli/__main__.py +4 -0
  9. ecosystems_cli/apis/__init__.py +0 -0
  10. ecosystems_cli/apis/advisories.openapi.yaml +347 -0
  11. ecosystems_cli/apis/archives.openapi.yaml +193 -0
  12. ecosystems_cli/apis/commits.openapi.yaml +391 -0
  13. ecosystems_cli/apis/dependabot.openapi.yaml +887 -0
  14. ecosystems_cli/apis/diff.openapi.yaml +90 -0
  15. ecosystems_cli/apis/docker.openapi.yaml +534 -0
  16. ecosystems_cli/apis/issues.openapi.yaml +839 -0
  17. ecosystems_cli/apis/licenses.openapi.yaml +80 -0
  18. ecosystems_cli/apis/opencollective.openapi.yaml +247 -0
  19. ecosystems_cli/apis/packages.openapi.yaml +2522 -0
  20. ecosystems_cli/apis/parser.openapi.yaml +97 -0
  21. ecosystems_cli/apis/registries.yaml +155 -0
  22. ecosystems_cli/apis/repos.openapi.yaml +1521 -0
  23. ecosystems_cli/apis/resolve.openapi.yaml +130 -0
  24. ecosystems_cli/apis/sbom.openapi.yaml +79 -0
  25. ecosystems_cli/apis/sponsors.openapi.yaml +283 -0
  26. ecosystems_cli/apis/summary.openapi.yaml +239 -0
  27. ecosystems_cli/apis/timeline.openapi.yaml +91 -0
  28. ecosystems_cli/cli.py +213 -0
  29. ecosystems_cli/commands/__init__.py +1 -0
  30. ecosystems_cli/commands/advisories.py +109 -0
  31. ecosystems_cli/commands/archives.py +5 -0
  32. ecosystems_cli/commands/commits.py +5 -0
  33. ecosystems_cli/commands/decorators.py +101 -0
  34. ecosystems_cli/commands/dependabot.py +5 -0
  35. ecosystems_cli/commands/diff.py +144 -0
  36. ecosystems_cli/commands/docker.py +5 -0
  37. ecosystems_cli/commands/execution.py +99 -0
  38. ecosystems_cli/commands/generator.py +127 -0
  39. ecosystems_cli/commands/handlers/__init__.py +45 -0
  40. ecosystems_cli/commands/handlers/advisories.py +73 -0
  41. ecosystems_cli/commands/handlers/archives.py +40 -0
  42. ecosystems_cli/commands/handlers/base.py +38 -0
  43. ecosystems_cli/commands/handlers/commits.py +76 -0
  44. ecosystems_cli/commands/handlers/default.py +40 -0
  45. ecosystems_cli/commands/handlers/dependabot.py +205 -0
  46. ecosystems_cli/commands/handlers/diff.py +72 -0
  47. ecosystems_cli/commands/handlers/docker.py +142 -0
  48. ecosystems_cli/commands/handlers/factory.py +60 -0
  49. ecosystems_cli/commands/handlers/issues.py +87 -0
  50. ecosystems_cli/commands/handlers/licenses.py +52 -0
  51. ecosystems_cli/commands/handlers/opencollective.py +86 -0
  52. ecosystems_cli/commands/handlers/packages.py +103 -0
  53. ecosystems_cli/commands/handlers/parser.py +57 -0
  54. ecosystems_cli/commands/handlers/repos.py +97 -0
  55. ecosystems_cli/commands/handlers/resolve.py +68 -0
  56. ecosystems_cli/commands/handlers/sbom.py +52 -0
  57. ecosystems_cli/commands/handlers/sponsors.py +52 -0
  58. ecosystems_cli/commands/handlers/summary.py +81 -0
  59. ecosystems_cli/commands/handlers/timeline.py +45 -0
  60. ecosystems_cli/commands/issues.py +5 -0
  61. ecosystems_cli/commands/licenses.py +135 -0
  62. ecosystems_cli/commands/mcp.py +54 -0
  63. ecosystems_cli/commands/opencollective.py +5 -0
  64. ecosystems_cli/commands/packages.py +151 -0
  65. ecosystems_cli/commands/parser.py +135 -0
  66. ecosystems_cli/commands/repos.py +5 -0
  67. ecosystems_cli/commands/resolve.py +160 -0
  68. ecosystems_cli/commands/sbom.py +135 -0
  69. ecosystems_cli/commands/sponsors.py +5 -0
  70. ecosystems_cli/commands/summary.py +5 -0
  71. ecosystems_cli/commands/timeline.py +5 -0
  72. ecosystems_cli/constants.py +92 -0
  73. ecosystems_cli/exceptions.py +149 -0
  74. ecosystems_cli/helpers/click_params.py +49 -0
  75. ecosystems_cli/helpers/flatten_dict.py +15 -0
  76. ecosystems_cli/helpers/format_value.py +30 -0
  77. ecosystems_cli/helpers/get_domain.py +68 -0
  78. ecosystems_cli/helpers/load_api_spec.py +31 -0
  79. ecosystems_cli/helpers/print_error.py +15 -0
  80. ecosystems_cli/helpers/print_operations.py +73 -0
  81. ecosystems_cli/helpers/print_output.py +183 -0
  82. ecosystems_cli/helpers/purl_parser.py +121 -0
  83. ecosystems_cli/mcp_server.py +267 -0
  84. ecosystems_cli/openapi_client.py +461 -0
@@ -0,0 +1,133 @@
1
+ Metadata-Version: 2.4
2
+ Name: ecosyste_ms_cli
3
+ Version: 1.3.2
4
+ Summary: CLI for ecosyste.ms API
5
+ Author-email: Sebastian Schürmann <sebs@2xs.org>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/ecosyste-ms/ecosyste_ms_cli
8
+ Project-URL: Repository, https://github.com/ecosyste-ms/ecosyste_ms_cli
9
+ Keywords: ecosystems,package-manager,dependencies,security,cli
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Software Development
20
+ Classifier: Topic :: Utilities
21
+ Requires-Python: >=3.9
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Requires-Dist: click~=8.3.1
25
+ Requires-Dist: requests~=2.32.5
26
+ Requires-Dist: pyyaml~=6.0.3
27
+ Requires-Dist: rich~=14.3.3
28
+ Requires-Dist: mcp~=1.26.0
29
+ Requires-Dist: openapi-core~=0.23.0
30
+ Requires-Dist: packageurl-python~=0.17.6
31
+ Requires-Dist: importlib-resources; python_version < "3.9"
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest~=9.0.2; extra == "dev"
34
+ Requires-Dist: pytest-asyncio~=1.3.0; extra == "dev"
35
+ Requires-Dist: black~=26.3.1; extra == "dev"
36
+ Requires-Dist: isort~=8.0.1; extra == "dev"
37
+ Requires-Dist: flake8~=7.3.0; extra == "dev"
38
+ Requires-Dist: bandit~=1.9.4; extra == "dev"
39
+ Requires-Dist: complexipy~=5.2.0; extra == "dev"
40
+ Requires-Dist: tomli~=2.3.0; python_version < "3.11" and extra == "dev"
41
+ Dynamic: license-file
42
+
43
+ # Ecosystems CLI
44
+
45
+ > The cli is still in a development phase. Some aspects of documentation or dev-x are lacking and some aspects of this software might have bugs.
46
+
47
+ [![build-test-lint](https://github.com/ecosyste-ms/ecosyste_ms_cli/actions/workflows/build-test-lint.yml/badge.svg)](https://github.com/ecosyste-ms/ecosyste_ms_cli/actions/workflows/build-test-lint.yml)
48
+ [![Latest Release](https://img.shields.io/github/v/release/ecosyste-ms/ecosyste_ms_cli)](https://github.com/ecosyste-ms/ecosyste_ms_cli/releases/latest)
49
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
50
+
51
+ A command-line interface for interacting with ecosyste.ms APIs.
52
+
53
+ ## Installation
54
+
55
+ Requirements:
56
+ - Python >= 3.9
57
+
58
+ ```bash
59
+ # Clone the repository
60
+ git clone git@github.com:ecosyste-ms/ecosyste_ms_cli.git
61
+ cd ecosyste_ms_cli
62
+
63
+ # Set up virtual environment and install dependencies
64
+ make setup
65
+ ```
66
+
67
+ ## Usage
68
+
69
+ Each command includes helpful examples in its help text. Use `--help` with any command to see usage examples.
70
+
71
+ ```bash
72
+ # Show available commands
73
+ ecosystems --help
74
+ ```
75
+
76
+ ### Global Options
77
+
78
+ - `--timeout`: Set the timeout in seconds for all HTTP requests (default: 20 seconds)
79
+ - `--format`: Set the output format (default: table). Available formats: table, json, tsv, jsonl
80
+
81
+
82
+ ## Output Formats
83
+
84
+ The CLI supports multiple output formats:
85
+
86
+ ```bash
87
+ # Example: Set a 30-second timeout for all requests
88
+ ecosystems --timeout 30 repos topics
89
+
90
+ # Example: Get output in JSON format
91
+ ecosystems --format json repos topics
92
+
93
+ # Example: Get output in TSV format (tab-separated values)
94
+ ecosystems --format tsv repos topics
95
+
96
+ # Example: Get output in JSONL format (JSON Lines)
97
+ ecosystems --format jsonl repos topics
98
+ ```
99
+
100
+ ## Available Commands
101
+
102
+ The CLI provides access to various [ecosyste.ms APIs](https://ecosyste.ms/api). Each command group corresponds to an API endpoint:
103
+
104
+ - **`advisories`** - Security advisories and vulnerability data
105
+ - **`archives`** - Package archive analysis
106
+ - **`commits`** - Repository commit data
107
+ - **`dependabot`** - Dependabot integration data
108
+ - **`diff`** - File and archive comparison
109
+ - **`docker`** - Docker image metadata
110
+ - **`issues`** - Repository issues and pull requests
111
+ - **`licenses`** - License detection and analysis
112
+ - **`opencollective`** - Open Collective funding data
113
+ - **`packages`** - Package registry information
114
+ - **`parser`** - Dependency file parsing
115
+ - **`repos`** - Repository data and metadata
116
+ - **`resolve`** - Dependency resolution
117
+ - **`sbom`** - Software Bill of Materials generation
118
+ - **`sponsors`** - GitHub Sponsors data
119
+ - **`summary`** - Aggregated summaries
120
+ - **`timeline`** - Event timeline data
121
+
122
+ Use `--help` with any command for detailed usage and examples.
123
+
124
+ ## Examples
125
+
126
+ * ecosystems packages package npmjs.org react --format json | jq '.name'
127
+
128
+
129
+ ## Documentation
130
+
131
+ - [Development Guide](docs/DEVELOPMENT.md) - Information about development, testing, and release processes
132
+ - [MCP Server](docs/MCP.md) - **[Experimental]** Model Context Protocol server for AI assistants
133
+ - [License](LICENSE) - MIT License details
@@ -0,0 +1,84 @@
1
+ ecosyste_ms_cli-1.3.2.dist-info/licenses/LICENSE,sha256=5ogoagwqYLkuCEV6iBk861YCHBivAbh4WoMAmKHBLxY,1077
2
+ ecosystems_cli/__init__.py,sha256=YjBd_BJaPxsJIESF2XVzF_9piAQy8Knnks1cT9t-78E,88
3
+ ecosystems_cli/__main__.py,sha256=Py4GUO6KRiXQ6dZ1QHGR7yAlvsy99fTMnFPwtnMb38E,91
4
+ ecosystems_cli/cli.py,sha256=eYqKtKuJbNS_UeJnl575Sm1R4jJCsthGyca4Fzpbsqc,7384
5
+ ecosystems_cli/constants.py,sha256=vj1FgYL7TEBq3eB76O14inBzB7uWK_P3Z1ERpTjPmIA,3288
6
+ ecosystems_cli/exceptions.py,sha256=uvcH8BxtGJ8MfHF2Y5GHNjkPC1tyLdO_ah-S96sGXss,4228
7
+ ecosystems_cli/mcp_server.py,sha256=Yi74Iptx03ksXnk9Ma6QEXRuXs9U61zKajwnrr8NT_A,10801
8
+ ecosystems_cli/openapi_client.py,sha256=0bH4TAsvAuDITto4W2MQwlbRVeFuy3hF6Cteg5fKyAQ,16318
9
+ ecosystems_cli/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ ecosystems_cli/apis/advisories.openapi.yaml,sha256=7RUX7hvFS6-cwWMKOVME_AHqwpxjJLFyDaAUEVUrJwA,8841
11
+ ecosystems_cli/apis/archives.openapi.yaml,sha256=e0KZLaAmS_OiDsRJtWGxl5uw6ulF5eNh2j5WjdxIxLc,5448
12
+ ecosystems_cli/apis/commits.openapi.yaml,sha256=0LyYVT5I7zQaxojXgNmzfWpKBeDlN4VfsDJks9CUzeA,9601
13
+ ecosystems_cli/apis/dependabot.openapi.yaml,sha256=MFLshbnRHUCWNFpaLlyKqA5AgpEKbL77DRnYwK1M134,23049
14
+ ecosystems_cli/apis/diff.openapi.yaml,sha256=BC5teVOh4LeUJp9v2jOLYmBZQtWBJcBeoLTTj9Wr0QQ,2081
15
+ ecosystems_cli/apis/docker.openapi.yaml,sha256=8QBjDEmcYy8O6iNOibdn02eDsSPo59SN-5rytUJ2pPA,13054
16
+ ecosystems_cli/apis/issues.openapi.yaml,sha256=H378feXRtZlFCS8agiP1I9qME_IINvJAjmeijZH-vMk,21413
17
+ ecosystems_cli/apis/licenses.openapi.yaml,sha256=Mte2GZdNGI4yf6hVqrqsFWzUh8eDteyTnpLkgQC2WlI,1841
18
+ ecosystems_cli/apis/opencollective.openapi.yaml,sha256=RwEj_mHQnoePTSR9cL6fmNv-C6kL3p2omJYGMC2zmfw,5771
19
+ ecosystems_cli/apis/packages.openapi.yaml,sha256=iFt3kbwpT3fkvq4bC2NX8NS_t4qDtCNLAFWdiLi2k_g,63765
20
+ ecosystems_cli/apis/parser.openapi.yaml,sha256=PvVPkzySMI-NTb7bG0VQdqZKrkHmfr-M1iQqHp1crLQ,2285
21
+ ecosystems_cli/apis/registries.yaml,sha256=cayUQ8-iMkQ1QNp2wRnHUJV6l2L3vQHvIGhJT_meTQo,3784
22
+ ecosystems_cli/apis/repos.openapi.yaml,sha256=GlN4Kt96hIrSjMqgX2i89QZ6fUm3gGXQ98DqF8fzV8E,37956
23
+ ecosystems_cli/apis/resolve.openapi.yaml,sha256=vKKiM6SuS0tOkHNKeByunp3L7gqwT99AuAEaeBMQUgY,3104
24
+ ecosystems_cli/apis/sbom.openapi.yaml,sha256=dtgtFnLPS-HWM4izkUPuopS1VwnvvQ8woW29VbKHbmM,1800
25
+ ecosystems_cli/apis/sponsors.openapi.yaml,sha256=Kup0a9aQRwZRzTmD_8oLSTJPFfuC71mTMyRpu4J6_tU,7931
26
+ ecosystems_cli/apis/summary.openapi.yaml,sha256=ppQf0LDAdpPgHUWvGMrBH9dvZeuX61Cu26aaCg0l4Fg,5512
27
+ ecosystems_cli/apis/timeline.openapi.yaml,sha256=YuDJXMRhFpFX7Tm4F0dm_Z9xcw2ZmyrR6RSO9uJMuac,2182
28
+ ecosystems_cli/commands/__init__.py,sha256=7PP7iUSTDMTjBjS6CgJ7eICAjKJIx8CPATAqfztDitM,43
29
+ ecosystems_cli/commands/advisories.py,sha256=SVDscI7LSNcOxpcK53bLO7O7UBaK1vKEVr56l6YIlAw,4306
30
+ ecosystems_cli/commands/archives.py,sha256=hfbKoeuKbQCT3tWfL3onogHl7pUbs2bc1Vhw1lhs4Cg,165
31
+ ecosystems_cli/commands/commits.py,sha256=p0oLkJNdezjWnuHKNvFnu0PqOIQUSFMyRg55hfwW4hk,162
32
+ ecosystems_cli/commands/decorators.py,sha256=xhya_ZyuNEDBFBPNryB01cc5FyuNcZMqiQ-Sc4DAhtI,3129
33
+ ecosystems_cli/commands/dependabot.py,sha256=_NtGB13tzMcG-PffyqbMHQUcwDHVYHajSowwcspYdoA,171
34
+ ecosystems_cli/commands/diff.py,sha256=zXhaXg27GISTjmBAdqipB987W3-7Bb43F95MXlugNCI,5414
35
+ ecosystems_cli/commands/docker.py,sha256=Lj5-hhPAsWwgGKVa_BD02vT321guaSy2gcqyf-PFJNo,159
36
+ ecosystems_cli/commands/execution.py,sha256=tgnajXaEuph-bHnCjo1tv9zZ-Z_QNrJghn1F-ztDwyI,3748
37
+ ecosystems_cli/commands/generator.py,sha256=N0F7E73ijGNl2uKzsdEKV34V-5bHmOnunenJshlsvoA,5149
38
+ ecosystems_cli/commands/issues.py,sha256=d1r5zObqPtzjTVJoZjXPwbciAtm7L7sxDxQK-ET-nII,159
39
+ ecosystems_cli/commands/licenses.py,sha256=F0Flxk5rb7ZUa7kmIipeCdpNN6YeqGPbtvD1C8H2HHE,5278
40
+ ecosystems_cli/commands/mcp.py,sha256=UAQdEzvHO5db_LnzEt81CHuzQU3sIJ_tiagnxGsDDh0,1852
41
+ ecosystems_cli/commands/opencollective.py,sha256=2bip6C9Ocvu__q15cI28d7uTKS8IhV8Ns6qmnOH6iz8,183
42
+ ecosystems_cli/commands/packages.py,sha256=_q3YSltCu4ao2Bsc_8Bh2N7Pv0PCPbsy4kzUz1Vl8sE,5823
43
+ ecosystems_cli/commands/parser.py,sha256=oP2nrZBpK1_PFhEbFRo0svB0oydXmm0kvg3kCCJHmvk,5252
44
+ ecosystems_cli/commands/repos.py,sha256=1l6kazji7FPv8fIkkxh1RH0EHa-ETgzesTWtmgEOK1c,156
45
+ ecosystems_cli/commands/resolve.py,sha256=F_qRkL638R5jiBi7mK0JiRtnug-UXxfcfkTNyBLEfao,5956
46
+ ecosystems_cli/commands/sbom.py,sha256=FzuqXpCYEfCIrm4wDWt6SClLPV71fVPca8ZPp5GV16Q,5226
47
+ ecosystems_cli/commands/sponsors.py,sha256=qCg22hxQN1dhBquEFNgUUtSn-bwLeHqcZ-aVu55QxIE,165
48
+ ecosystems_cli/commands/summary.py,sha256=m3RnBt9k62C-63sfw7SsKtyh1icsY2DxZbQeahZ7XNM,162
49
+ ecosystems_cli/commands/timeline.py,sha256=iKxKs7qdvG4DYyvMJJJDL7j2HufXV6sowl4Mc6yMsOI,165
50
+ ecosystems_cli/commands/handlers/__init__.py,sha256=z2sAlxp-luU3F2OtU_N6t9GnpHJB6z0FowkvopzSqBo,1590
51
+ ecosystems_cli/commands/handlers/advisories.py,sha256=ObDSRHD_JsbfqrwHmQQI-R-9goCKWZl0_As7Fwbjv9g,2862
52
+ ecosystems_cli/commands/handlers/archives.py,sha256=UpaQlJ2mhY666eGTO5ys_l6IFP6GfFRans_7p36Nbws,1363
53
+ ecosystems_cli/commands/handlers/base.py,sha256=ej26pvmlQMlz2GT_f8JqHjxm18-IVg2y5GI9RsETPw0,1206
54
+ ecosystems_cli/commands/handlers/commits.py,sha256=45VAll0YXpjDMTNLrV9HICfLuM1np-IWIPcoRWLsk6s,2779
55
+ ecosystems_cli/commands/handlers/default.py,sha256=xpGOtNsS8DqcH6oRhIOWBJXZkzwBu1a23NvSiiApGlY,1443
56
+ ecosystems_cli/commands/handlers/dependabot.py,sha256=X6VfSC1b9u-2HUXuG2hgel-WVftQjVokBENPeLu3vvI,8065
57
+ ecosystems_cli/commands/handlers/diff.py,sha256=FsF0QaSDm6tEHebq6wEf69Aka8hywQHbUICZ_X00fWE,2373
58
+ ecosystems_cli/commands/handlers/docker.py,sha256=7axx4u-F-y00L-WLxwqUe73qFrcmZJqxKbzRPdRCLJw,5710
59
+ ecosystems_cli/commands/handlers/factory.py,sha256=g8vxkEOomG_y2cSw_rMYWxh_yrQGdZuOZ1RZJcjl_Hg,2215
60
+ ecosystems_cli/commands/handlers/issues.py,sha256=5SilFCq7PtvQ8iK6857kjesmANZHAcGkjpMuVxGEw-Q,3399
61
+ ecosystems_cli/commands/handlers/licenses.py,sha256=V_EcOvgIEgRDD-YSf4XKTn_oJ_cCe7IMHHPyVPdMc_k,1667
62
+ ecosystems_cli/commands/handlers/opencollective.py,sha256=s3s-q0Gu9taxiXg_al3N-9IxE3MaRRJOTlPe5Q5A-qw,3188
63
+ ecosystems_cli/commands/handlers/packages.py,sha256=fWFMZUotnUgcR0kt_bUjvG9JpGVbaGS3zroP9US_14o,4676
64
+ ecosystems_cli/commands/handlers/parser.py,sha256=SILjJVLIEEL68If3LuTviEi5O1tOBFmafg_-EsmB0aI,1885
65
+ ecosystems_cli/commands/handlers/repos.py,sha256=8b549T0vi4jkPP7nuqEoj3_X2dSv8i4CSDsisT09fYk,4327
66
+ ecosystems_cli/commands/handlers/resolve.py,sha256=-2Y7diDgYTapLidR6SyqL4j-vNJXB3PawrO7x9G_bps,2281
67
+ ecosystems_cli/commands/handlers/sbom.py,sha256=oQaWqcYMrCr4EOrEd1cbiQ012yBpMRy2hkDW0vWN7aM,1651
68
+ ecosystems_cli/commands/handlers/sponsors.py,sha256=LcRAltHxRmcxwyE1Ow0MBh0uwfz--qtjsQvjuyESa2M,1720
69
+ ecosystems_cli/commands/handlers/summary.py,sha256=Z0Q927qIUKZ50QygOHZAYKgOnZWVTCeDaRTpcPb3-0U,2949
70
+ ecosystems_cli/commands/handlers/timeline.py,sha256=I3D4k7iHrmzjLbGqYuNHnd_UKnpAZYhE6pEFnHdB108,1668
71
+ ecosystems_cli/helpers/click_params.py,sha256=GtWz6ynZnMKPDjzi-vto4d3nn-Nm-mDRwl0ZVdEy7Kg,1565
72
+ ecosystems_cli/helpers/flatten_dict.py,sha256=bXCTm8_IqRJ66dBp-URJQB8cnrOmEuac3KSLF0zpJyg,565
73
+ ecosystems_cli/helpers/format_value.py,sha256=ZLluYL_c4xYiwPTzElQ1xr7mQmpgRjkVUkDiWtNsecE,1053
74
+ ecosystems_cli/helpers/get_domain.py,sha256=0LFmqBkHuciQh4lds4yprjyhOjmi0WY5PZjG2X70hxQ,2120
75
+ ecosystems_cli/helpers/load_api_spec.py,sha256=3wzdEiFuWsfGai10uEqb31rCAZP-Gv3qozT7U3UV5nM,1178
76
+ ecosystems_cli/helpers/print_error.py,sha256=-wtrH1iUGq0cmLh1bqfNZroEA3hjr7L96KoWtVhRrJ4,476
77
+ ecosystems_cli/helpers/print_operations.py,sha256=MFgM1KFMz2Jr-IMD5mo5AKEpBpK9F--iEfCOlcv93Y0,2561
78
+ ecosystems_cli/helpers/print_output.py,sha256=FNSw8XSZ3WZj_cLxsmmPBCVPZ0z-dFkhquCoKGyVipw,6675
79
+ ecosystems_cli/helpers/purl_parser.py,sha256=1P9KPWvXbryJTwZR8LH5KARSTdTZaXAZER1zaRDhaP0,4244
80
+ ecosyste_ms_cli-1.3.2.dist-info/METADATA,sha256=AKTjv5opcF2j8R1WgbPDfX_eqHbz4clghlEIWfj40ws,4756
81
+ ecosyste_ms_cli-1.3.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
82
+ ecosyste_ms_cli-1.3.2.dist-info/entry_points.txt,sha256=DaalemcSflsffpe-ZAUGhP7t7y4t6V1b7qh_tmFDTkw,55
83
+ ecosyste_ms_cli-1.3.2.dist-info/top_level.txt,sha256=hDyXgOtTvKXSFnU8CSpQRBlOudo3Kb2siOKU_lNL_zY,15
84
+ ecosyste_ms_cli-1.3.2.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ ecosystems = ecosystems_cli.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Sebastian Schürmann
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ ecosystems_cli
@@ -0,0 +1,3 @@
1
+ """Ecosystems CLI tool for interacting with ecosyste.ms APIs."""
2
+
3
+ __version__ = "1.3.2"
@@ -0,0 +1,4 @@
1
+ from ecosystems_cli.cli import main
2
+
3
+ if __name__ == "__main__":
4
+ main() # type: ignore
File without changes
@@ -0,0 +1,347 @@
1
+ ---
2
+ openapi: 3.0.1
3
+ info:
4
+ title: 'Ecosyste.ms: Advisories'
5
+ description: An open API service providing security vulnerability metadata for many
6
+ open source software ecosystems.
7
+ contact:
8
+ name: Ecosyste.ms
9
+ email: support@ecosyste.ms
10
+ url: https://ecosyste.ms
11
+ version: 1.0.0
12
+ license:
13
+ name: CC-BY-SA-4.0
14
+ url: https://creativecommons.org/licenses/by-sa/4.0/
15
+ externalDocs:
16
+ description: GitHub Repository
17
+ url: https://github.com/ecosyste-ms/advisories
18
+ servers:
19
+ - url: https://advisories.ecosyste.ms/api/v1
20
+ paths:
21
+ "/advisories":
22
+ get:
23
+ summary: list advisories
24
+ operationId: getAdvisories
25
+ tags:
26
+ - advisories
27
+ parameters:
28
+ - name: ecosystem
29
+ in: query
30
+ description: Ecosystem to filter by
31
+ required: false
32
+ schema:
33
+ type: string
34
+ - name: package_name
35
+ in: query
36
+ description: Package to filter by
37
+ required: false
38
+ schema:
39
+ type: string
40
+ - name: severity
41
+ in: query
42
+ description: Severity to filter by
43
+ required: false
44
+ schema:
45
+ type: string
46
+ - name: repository_url
47
+ in: query
48
+ description: Repository URL to filter by
49
+ required: false
50
+ schema:
51
+ type: string
52
+ - name: source
53
+ in: query
54
+ description: Source to filter by (e.g. github, erlef)
55
+ required: false
56
+ schema:
57
+ type: string
58
+ - name: page
59
+ in: query
60
+ description: pagination page number
61
+ required: false
62
+ schema:
63
+ type: integer
64
+ - name: per_page
65
+ in: query
66
+ description: Number of records to return
67
+ required: false
68
+ schema:
69
+ type: integer
70
+ - name: created_after
71
+ in: query
72
+ description: filter by created_at after given time
73
+ required: false
74
+ schema:
75
+ type: string
76
+ format: date-time
77
+ - name: updated_after
78
+ in: query
79
+ description: filter by updated_at after given time
80
+ required: false
81
+ schema:
82
+ type: string
83
+ format: date-time
84
+ - name: sort
85
+ in: query
86
+ description: field to order results by
87
+ required: false
88
+ schema:
89
+ type: string
90
+ - name: order
91
+ in: query
92
+ description: direction to order results by
93
+ required: false
94
+ schema:
95
+ type: string
96
+ responses:
97
+ 200:
98
+ description: OK
99
+ content:
100
+ application/json:
101
+ schema:
102
+ type: array
103
+ items:
104
+ "$ref": "#/components/schemas/Advisory"
105
+ "/advisories/packages":
106
+ get:
107
+ summary: list packages that have advisories
108
+ operationId: getAdvisoriesPackages
109
+ tags:
110
+ - advisories
111
+ responses:
112
+ 200:
113
+ description: OK
114
+ content:
115
+ application/json:
116
+ schema:
117
+ type: array
118
+ items:
119
+ "$ref": "#/components/schemas/Package"
120
+ "/advisories/lookup":
121
+ get:
122
+ summary: lookup advisories by Package URL (PURL)
123
+ operationId: lookupAdvisoriesByPurl
124
+ description: Lookup security advisories for a package using Package URL (PURL)
125
+ specification. Supports multiple ecosystems including npm, pypi, rubygems,
126
+ maven, nuget, go, and cargo.
127
+ tags:
128
+ - advisories
129
+ parameters:
130
+ - name: purl
131
+ in: query
132
+ description: 'Package URL (PURL) to lookup advisories for. Format: pkg:type/namespace/name@version'
133
+ required: true
134
+ schema:
135
+ type: string
136
+ example: pkg:npm/lodash@4.17.20
137
+ responses:
138
+ 200:
139
+ description: List of advisories for the specified package
140
+ content:
141
+ application/json:
142
+ schema:
143
+ type: array
144
+ items:
145
+ "$ref": "#/components/schemas/Advisory"
146
+ 400:
147
+ description: Bad Request - Invalid or missing PURL parameter
148
+ content:
149
+ application/json:
150
+ schema:
151
+ type: object
152
+ properties:
153
+ error:
154
+ type: string
155
+ example: PURL parameter is required
156
+ "/advisories/{advisoryUUID}":
157
+ get:
158
+ summary: get a advisories by uuid
159
+ operationId: getAdvisory
160
+ tags:
161
+ - advisories
162
+ parameters:
163
+ - in: path
164
+ name: advisoryUUID
165
+ schema:
166
+ type: string
167
+ required: true
168
+ description: uuid of the advisory
169
+ responses:
170
+ 200:
171
+ description: OK
172
+ content:
173
+ application/json:
174
+ schema:
175
+ "$ref": "#/components/schemas/Advisory"
176
+ "/sources":
177
+ get:
178
+ summary: list advisory sources
179
+ operationId: getSources
180
+ tags:
181
+ - sources
182
+ responses:
183
+ 200:
184
+ description: OK
185
+ content:
186
+ application/json:
187
+ schema:
188
+ type: array
189
+ items:
190
+ "$ref": "#/components/schemas/Source"
191
+ "/sources/{sourceKind}":
192
+ get:
193
+ summary: get a source by kind
194
+ operationId: getSource
195
+ tags:
196
+ - sources
197
+ parameters:
198
+ - in: path
199
+ name: sourceKind
200
+ schema:
201
+ type: string
202
+ required: true
203
+ description: kind of the source (e.g. github, erlef)
204
+ responses:
205
+ 200:
206
+ description: OK
207
+ content:
208
+ application/json:
209
+ schema:
210
+ "$ref": "#/components/schemas/Source"
211
+ components:
212
+ schemas:
213
+ Advisory:
214
+ type: object
215
+ properties:
216
+ uuid:
217
+ type: string
218
+ url:
219
+ type: string
220
+ title:
221
+ type: string
222
+ description:
223
+ type: string
224
+ origin:
225
+ type: string
226
+ severity:
227
+ type: string
228
+ published_at:
229
+ type: string
230
+ withdrawn_at:
231
+ type: string
232
+ classification:
233
+ type: string
234
+ cvss_score:
235
+ type: number
236
+ cvss_vector:
237
+ type: string
238
+ references:
239
+ type: array
240
+ items:
241
+ type: string
242
+ source_kind:
243
+ type: string
244
+ identifiers:
245
+ type: array
246
+ items:
247
+ type: string
248
+ repository_url:
249
+ type: string
250
+ blast_radius:
251
+ type: number
252
+ packages:
253
+ type: array
254
+ items:
255
+ "$ref": "#/components/schemas/PackageWithDetails"
256
+ created_at:
257
+ type: string
258
+ updated_at:
259
+ type: string
260
+ epss_percentage:
261
+ type: number
262
+ epss_percentile:
263
+ type: number
264
+ api_url:
265
+ type: string
266
+ description: API URL for this advisory
267
+ html_url:
268
+ type: string
269
+ description: HTML URL for this advisory
270
+ related_advisories:
271
+ type: array
272
+ description: Advisories from other sources for the same vulnerability (matched
273
+ by CVE)
274
+ items:
275
+ "$ref": "#/components/schemas/RelatedAdvisory"
276
+ RelatedAdvisory:
277
+ type: object
278
+ properties:
279
+ uuid:
280
+ type: string
281
+ source_kind:
282
+ type: string
283
+ url:
284
+ type: string
285
+ Source:
286
+ type: object
287
+ properties:
288
+ id:
289
+ type: integer
290
+ name:
291
+ type: string
292
+ kind:
293
+ type: string
294
+ url:
295
+ type: string
296
+ advisories_count:
297
+ type: integer
298
+ created_at:
299
+ type: string
300
+ updated_at:
301
+ type: string
302
+ Package:
303
+ type: object
304
+ properties:
305
+ ecosystem:
306
+ type: string
307
+ package_name:
308
+ type: string
309
+ PackageWithDetails:
310
+ type: object
311
+ properties:
312
+ ecosystem:
313
+ type: string
314
+ package_name:
315
+ type: string
316
+ purl:
317
+ type: string
318
+ description: Package URL (PURL) for this package
319
+ example: pkg:npm/lodash
320
+ versions:
321
+ type: array
322
+ items:
323
+ type: object
324
+ properties:
325
+ vulnerable_version_range:
326
+ type: string
327
+ first_patched_version:
328
+ type: string
329
+ statistics:
330
+ type: object
331
+ properties:
332
+ dependent_packages_count:
333
+ type: integer
334
+ dependent_repos_count:
335
+ type: integer
336
+ downloads:
337
+ type: integer
338
+ downloads_period:
339
+ type: string
340
+ affected_versions:
341
+ type: array
342
+ items:
343
+ type: string
344
+ unaffected_versions:
345
+ type: array
346
+ items:
347
+ type: string