vulguard 1.0.0__tar.gz
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.
- vulguard-1.0.0/CHANGELOG.md +22 -0
- vulguard-1.0.0/LICENSE +21 -0
- vulguard-1.0.0/PKG-INFO +202 -0
- vulguard-1.0.0/README.md +161 -0
- vulguard-1.0.0/pyproject.toml +44 -0
- vulguard-1.0.0/vulguard/__init__.py +22 -0
- vulguard-1.0.0/vulguard/cli.py +297 -0
- vulguard-1.0.0/vulguard/config.ini +8 -0
- vulguard-1.0.0/vulguard/config.py +92 -0
- vulguard-1.0.0/vulguard/db.py +130 -0
- vulguard-1.0.0/vulguard/inspector.py +107 -0
- vulguard-1.0.0/vulguard/logging.ini +35 -0
- vulguard-1.0.0/vulguard/prompts/system-prompt.md +40 -0
- vulguard-1.0.0/vulguard/report.py +192 -0
- vulguard-1.0.0/vulguard/retry.py +88 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.0.0 - 2026-06-14
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Initial release of vulguard.
|
|
8
|
+
- Lightweight security scanning for source code vulnerabilities.
|
|
9
|
+
- Highlights risky patterns and guides developers toward safer implementations.
|
|
10
|
+
- GitHub Actions **Tests** workflow for automated formatting check, linting, and test runs (with 80% coverage gate) on every push and pull request.
|
|
11
|
+
- Async retry mechanism with exponential back-off and full jitter (`vulguard/retry.py`).
|
|
12
|
+
- `--version` / `-V` CLI flag to display the installed package version.
|
|
13
|
+
- Concurrent file inspection using `asyncio.gather()` for improved throughput.
|
|
14
|
+
- `_inspect_and_persist()` helper decomposing per-file inspection and database persistence.
|
|
15
|
+
- `_inspect_all()` helper orchestrating concurrent per-file inspection tasks.
|
|
16
|
+
- `_run_inspection()` helper orchestrating file collection, inspection, and report writing.
|
|
17
|
+
- `_setup_db_session()` helper encapsulating database initialisation and session creation.
|
|
18
|
+
- `_write_reports()` helper encapsulating JSON and HTML report writing.
|
|
19
|
+
- Additional configuration keys in `config.ini` for model name, timeout, and retry back-off settings (`max-attempts`, `base-delay`, `max-delay`).
|
|
20
|
+
- Typed accessors in the `Config` class for model, timeout, and retry back-off configuration (`get_model`, `get_timeout`, `get_max_attempts`, `get_base_delay`, `get_max_delay`).
|
|
21
|
+
- Expanded test suite covering `retry.py` and additional cases for `cli.py` and `inspector.py`.
|
|
22
|
+
|
vulguard-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ron Webb
|
|
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.
|
vulguard-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vulguard
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A lightweight security tool that automatically scans source code for vulnerabilities, highlights risky patterns, and guides developers toward safer implementations to strengthen their applications' overall security posture.
|
|
5
|
+
License: MIT License
|
|
6
|
+
|
|
7
|
+
Copyright (c) 2026 Ron Webb
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
11
|
+
in the Software without restriction, including without limitation the rights
|
|
12
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
13
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
14
|
+
furnished to do so, subject to the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be included in all
|
|
17
|
+
copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
25
|
+
SOFTWARE.
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Author: Ron Webb
|
|
28
|
+
Author-email: ron@ronella.xyz
|
|
29
|
+
Requires-Python: >=3.14
|
|
30
|
+
Classifier: License :: Other/Proprietary License
|
|
31
|
+
Classifier: Programming Language :: Python :: 3
|
|
32
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
33
|
+
Requires-Dist: click (>=8.0.0,<9.0.0)
|
|
34
|
+
Requires-Dist: env-dir-bootstrap (>=1.0.0,<2.0.0)
|
|
35
|
+
Requires-Dist: github-copilot-sdk (>=1.0.1,<2.0.0)
|
|
36
|
+
Requires-Dist: logenrich (>=1.0.1,<2.0.0)
|
|
37
|
+
Requires-Dist: rich (>=15.0.0,<16.0.0)
|
|
38
|
+
Project-URL: Repository, https://github.com/rcw3bb/vulguard
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
41
|
+
# vulguard 1.0.0
|
|
42
|
+
|
|
43
|
+
[](LICENSE)
|
|
44
|
+
[](CHANGELOG.md)
|
|
45
|
+
|
|
46
|
+
> A lightweight CLI security tool that automatically scans source code for vulnerabilities, highlights risky patterns, and guides developers toward safer implementations to strengthen their applications' overall security posture.
|
|
47
|
+
|
|
48
|
+
## Prerequisites
|
|
49
|
+
|
|
50
|
+
- Python `>=3.14`
|
|
51
|
+
- An active [GitHub Copilot](https://github.com/features/copilot) subscription (used for AI-powered inspection)
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install vulguard
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Usage
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
vulguard [OPTIONS] COMMAND [ARGS]...
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### `inspect` — Scan files or directories
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
vulguard inspect [OPTIONS] PATHS...
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
| Option | Default | Description |
|
|
72
|
+
|---|---|---|
|
|
73
|
+
| `PATHS` | *(required)* | One or more files or directories to scan (recursive). |
|
|
74
|
+
| `--ext TEXT` | *(all files)* | Comma-separated extensions to inspect, e.g. `py,js,ts`. |
|
|
75
|
+
| `--output-dir PATH` | `<cwd>/reports` | Directory where reports are written. |
|
|
76
|
+
| `--report TEXT` | `vulguard-report` | Base filename for the report (no extension appended). |
|
|
77
|
+
| `--format [json\|html]` | `json` | Report format. Selecting `html` also produces a JSON file. |
|
|
78
|
+
| `--db-dir PATH` | `~/.vulguard` | Directory for the SQLite session database. |
|
|
79
|
+
|
|
80
|
+
#### Examples
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Scan all Python files in src/ and write a JSON report to ./reports
|
|
84
|
+
vulguard inspect src/ --ext py
|
|
85
|
+
|
|
86
|
+
# Scan multiple paths and produce an HTML report
|
|
87
|
+
vulguard inspect src/ tests/ --ext py,js --format html --output-dir reports
|
|
88
|
+
|
|
89
|
+
# Use a custom report name and database directory
|
|
90
|
+
vulguard inspect src/ --report my-scan --db-dir /tmp/vg-db
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Configuration
|
|
94
|
+
|
|
95
|
+
On first run, vulguard bootstraps a configuration directory and copies its default `config.ini` and `logging.ini` there. You can override the location with the `VULGUARD_CONFIG_DIR` environment variable:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Windows (PowerShell)
|
|
99
|
+
$env:VULGUARD_CONFIG_DIR = "C:\Users\you\.vulguard"
|
|
100
|
+
|
|
101
|
+
# macOS / Linux
|
|
102
|
+
export VULGUARD_CONFIG_DIR="$HOME/.vulguard"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `config.ini` settings
|
|
106
|
+
|
|
107
|
+
| Section | Key | Default | Description |
|
|
108
|
+
|---|---|---|---|
|
|
109
|
+
| `model` | `model` | `claude-sonnet-4.6` | GitHub Copilot model used for inspection. |
|
|
110
|
+
| `model` | `timeout` | `300` | Per-file inspection timeout in seconds. |
|
|
111
|
+
| `retry` | `max-attempts` | `5` | Maximum number of retry attempts on transient errors. |
|
|
112
|
+
| `retry` | `base-delay` | `0.5` | Initial back-off delay in seconds. |
|
|
113
|
+
| `retry` | `max-delay` | `10.0` | Maximum back-off delay in seconds. |
|
|
114
|
+
|
|
115
|
+
## Development
|
|
116
|
+
|
|
117
|
+
### Prerequisites
|
|
118
|
+
|
|
119
|
+
- Poetry `2.2+`
|
|
120
|
+
|
|
121
|
+
### Architecture
|
|
122
|
+
|
|
123
|
+
```mermaid
|
|
124
|
+
graph TD
|
|
125
|
+
CLI["cli.py\n(Click entry point)"]
|
|
126
|
+
Inspector["inspector.py\n(GitHub Copilot SDK)"]
|
|
127
|
+
DB["db.py\n(SQLite persistence)"]
|
|
128
|
+
Report["report.py\n(JSON / HTML output)"]
|
|
129
|
+
Config["config.py\n(config.ini reader)"]
|
|
130
|
+
Prompt["prompts/system-prompt.md\n(security prompt)"]
|
|
131
|
+
|
|
132
|
+
CLI -->|"collects files\norchestrates"| Inspector
|
|
133
|
+
CLI --> Config
|
|
134
|
+
Inspector --> Prompt
|
|
135
|
+
CLI -->|"persists results"| DB
|
|
136
|
+
CLI -->|"reads session"| DB
|
|
137
|
+
CLI -->|"builds & writes"| Report
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Setup
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
poetry install
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Format and Lint
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
poetry run black vulguard; poetry run pylint vulguard
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Pylint must score **10.00/10** before committing.
|
|
153
|
+
|
|
154
|
+
### Run Tests
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
poetry run pytest --cov=vulguard tests --cov-report html
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Maintain **≥80 %** coverage.
|
|
161
|
+
|
|
162
|
+
### Fixture-based integration smoke test
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
poetry run vulguard inspect tests/fixtures --ext py --format html
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Publishing to PyPI
|
|
169
|
+
|
|
170
|
+
### Prerequisites
|
|
171
|
+
|
|
172
|
+
- A [PyPI](https://pypi.org/) account with an API token.
|
|
173
|
+
|
|
174
|
+
### Configure the token
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
poetry config pypi-token.pypi <your-token>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Build and publish
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
poetry publish --build
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
This builds the source distribution and wheel, then uploads them to PyPI in one step.
|
|
187
|
+
|
|
188
|
+
> **Note:** PyPI releases are immutable. Once a version is published, it cannot be overwritten.
|
|
189
|
+
> To fix a mistake, yank the release via the PyPI web UI and publish a new version.
|
|
190
|
+
|
|
191
|
+
## [Changelog](CHANGELOG.md)
|
|
192
|
+
|
|
193
|
+
See [CHANGELOG.md](CHANGELOG.md) for the full release history.
|
|
194
|
+
|
|
195
|
+
## License
|
|
196
|
+
|
|
197
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
198
|
+
|
|
199
|
+
## Author
|
|
200
|
+
|
|
201
|
+
Ron Webb
|
|
202
|
+
|
vulguard-1.0.0/README.md
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# vulguard 1.0.0
|
|
2
|
+
|
|
3
|
+
[](LICENSE)
|
|
4
|
+
[](CHANGELOG.md)
|
|
5
|
+
|
|
6
|
+
> A lightweight CLI security tool that automatically scans source code for vulnerabilities, highlights risky patterns, and guides developers toward safer implementations to strengthen their applications' overall security posture.
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
- Python `>=3.14`
|
|
11
|
+
- An active [GitHub Copilot](https://github.com/features/copilot) subscription (used for AI-powered inspection)
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install vulguard
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
vulguard [OPTIONS] COMMAND [ARGS]...
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### `inspect` — Scan files or directories
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
vulguard inspect [OPTIONS] PATHS...
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
| Option | Default | Description |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `PATHS` | *(required)* | One or more files or directories to scan (recursive). |
|
|
34
|
+
| `--ext TEXT` | *(all files)* | Comma-separated extensions to inspect, e.g. `py,js,ts`. |
|
|
35
|
+
| `--output-dir PATH` | `<cwd>/reports` | Directory where reports are written. |
|
|
36
|
+
| `--report TEXT` | `vulguard-report` | Base filename for the report (no extension appended). |
|
|
37
|
+
| `--format [json\|html]` | `json` | Report format. Selecting `html` also produces a JSON file. |
|
|
38
|
+
| `--db-dir PATH` | `~/.vulguard` | Directory for the SQLite session database. |
|
|
39
|
+
|
|
40
|
+
#### Examples
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Scan all Python files in src/ and write a JSON report to ./reports
|
|
44
|
+
vulguard inspect src/ --ext py
|
|
45
|
+
|
|
46
|
+
# Scan multiple paths and produce an HTML report
|
|
47
|
+
vulguard inspect src/ tests/ --ext py,js --format html --output-dir reports
|
|
48
|
+
|
|
49
|
+
# Use a custom report name and database directory
|
|
50
|
+
vulguard inspect src/ --report my-scan --db-dir /tmp/vg-db
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Configuration
|
|
54
|
+
|
|
55
|
+
On first run, vulguard bootstraps a configuration directory and copies its default `config.ini` and `logging.ini` there. You can override the location with the `VULGUARD_CONFIG_DIR` environment variable:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Windows (PowerShell)
|
|
59
|
+
$env:VULGUARD_CONFIG_DIR = "C:\Users\you\.vulguard"
|
|
60
|
+
|
|
61
|
+
# macOS / Linux
|
|
62
|
+
export VULGUARD_CONFIG_DIR="$HOME/.vulguard"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### `config.ini` settings
|
|
66
|
+
|
|
67
|
+
| Section | Key | Default | Description |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| `model` | `model` | `claude-sonnet-4.6` | GitHub Copilot model used for inspection. |
|
|
70
|
+
| `model` | `timeout` | `300` | Per-file inspection timeout in seconds. |
|
|
71
|
+
| `retry` | `max-attempts` | `5` | Maximum number of retry attempts on transient errors. |
|
|
72
|
+
| `retry` | `base-delay` | `0.5` | Initial back-off delay in seconds. |
|
|
73
|
+
| `retry` | `max-delay` | `10.0` | Maximum back-off delay in seconds. |
|
|
74
|
+
|
|
75
|
+
## Development
|
|
76
|
+
|
|
77
|
+
### Prerequisites
|
|
78
|
+
|
|
79
|
+
- Poetry `2.2+`
|
|
80
|
+
|
|
81
|
+
### Architecture
|
|
82
|
+
|
|
83
|
+
```mermaid
|
|
84
|
+
graph TD
|
|
85
|
+
CLI["cli.py\n(Click entry point)"]
|
|
86
|
+
Inspector["inspector.py\n(GitHub Copilot SDK)"]
|
|
87
|
+
DB["db.py\n(SQLite persistence)"]
|
|
88
|
+
Report["report.py\n(JSON / HTML output)"]
|
|
89
|
+
Config["config.py\n(config.ini reader)"]
|
|
90
|
+
Prompt["prompts/system-prompt.md\n(security prompt)"]
|
|
91
|
+
|
|
92
|
+
CLI -->|"collects files\norchestrates"| Inspector
|
|
93
|
+
CLI --> Config
|
|
94
|
+
Inspector --> Prompt
|
|
95
|
+
CLI -->|"persists results"| DB
|
|
96
|
+
CLI -->|"reads session"| DB
|
|
97
|
+
CLI -->|"builds & writes"| Report
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Setup
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
poetry install
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Format and Lint
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
poetry run black vulguard; poetry run pylint vulguard
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Pylint must score **10.00/10** before committing.
|
|
113
|
+
|
|
114
|
+
### Run Tests
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
poetry run pytest --cov=vulguard tests --cov-report html
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Maintain **≥80 %** coverage.
|
|
121
|
+
|
|
122
|
+
### Fixture-based integration smoke test
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
poetry run vulguard inspect tests/fixtures --ext py --format html
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Publishing to PyPI
|
|
129
|
+
|
|
130
|
+
### Prerequisites
|
|
131
|
+
|
|
132
|
+
- A [PyPI](https://pypi.org/) account with an API token.
|
|
133
|
+
|
|
134
|
+
### Configure the token
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
poetry config pypi-token.pypi <your-token>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Build and publish
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
poetry publish --build
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
This builds the source distribution and wheel, then uploads them to PyPI in one step.
|
|
147
|
+
|
|
148
|
+
> **Note:** PyPI releases are immutable. Once a version is published, it cannot be overwritten.
|
|
149
|
+
> To fix a mistake, yank the release via the PyPI web UI and publish a new version.
|
|
150
|
+
|
|
151
|
+
## [Changelog](CHANGELOG.md)
|
|
152
|
+
|
|
153
|
+
See [CHANGELOG.md](CHANGELOG.md) for the full release history.
|
|
154
|
+
|
|
155
|
+
## License
|
|
156
|
+
|
|
157
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
158
|
+
|
|
159
|
+
## Author
|
|
160
|
+
|
|
161
|
+
Ron Webb
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "vulguard"
|
|
3
|
+
version = "1.0.0"
|
|
4
|
+
description = "A lightweight security tool that automatically scans source code for vulnerabilities, highlights risky patterns, and guides developers toward safer implementations to strengthen their applications' overall security posture."
|
|
5
|
+
authors = [
|
|
6
|
+
{name = "Ron Webb", email = "ron@ronella.xyz"}
|
|
7
|
+
]
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
license = {file = "LICENSE"}
|
|
10
|
+
requires-python = ">=3.14"
|
|
11
|
+
|
|
12
|
+
dependencies = [
|
|
13
|
+
"rich (>=15.0.0,<16.0.0)",
|
|
14
|
+
"click (>=8.0.0,<9.0.0)",
|
|
15
|
+
"logenrich (>=1.0.1,<2.0.0)",
|
|
16
|
+
"env-dir-bootstrap (>=1.0.0,<2.0.0)",
|
|
17
|
+
"github-copilot-sdk (>=1.0.1,<2.0.0)"
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[project.urls]
|
|
21
|
+
Repository = "https://github.com/rcw3bb/vulguard"
|
|
22
|
+
|
|
23
|
+
[dependency-groups]
|
|
24
|
+
dev = [
|
|
25
|
+
"black (>=26.5.1,<27.0.0)",
|
|
26
|
+
"pylint (>=4.0.5,<5.0.0)",
|
|
27
|
+
"pytest (>=9.0.3,<10.0.0)",
|
|
28
|
+
"pytest-cov (>=7.1.0,<8.0.0)",
|
|
29
|
+
"pytest-asyncio (>=1.4.0,<2.0.0)"
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[tool.poetry]
|
|
33
|
+
packages = [{include = "vulguard"}]
|
|
34
|
+
include = ["vulguard/logging.ini", "vulguard/config.ini", "vulguard/prompts/system-prompt.md", "CHANGELOG.md"]
|
|
35
|
+
|
|
36
|
+
[tool.poetry.scripts]
|
|
37
|
+
vulguard = "vulguard.cli:main"
|
|
38
|
+
|
|
39
|
+
[build-system]
|
|
40
|
+
requires = ["poetry-core"]
|
|
41
|
+
build-backend = "poetry.core.masonry.api"
|
|
42
|
+
|
|
43
|
+
[tool.pytest.ini_options]
|
|
44
|
+
asyncio_mode = "auto"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""
|
|
2
|
+
vulguard - A lightweight security tool that automatically scans source code
|
|
3
|
+
for vulnerabilities, highlights risky patterns, and guides developers toward
|
|
4
|
+
safer implementations to strengthen their applications' overall security posture.
|
|
5
|
+
|
|
6
|
+
:author: Ron Webb
|
|
7
|
+
:since: 1.0.0
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from env_dir_bootstrap import EnvDirBootstrap
|
|
11
|
+
|
|
12
|
+
__version__ = "1.0.0"
|
|
13
|
+
|
|
14
|
+
_bootstrapper = EnvDirBootstrap(
|
|
15
|
+
env_var="VULGUARD_CONFIG_DIR",
|
|
16
|
+
resources=["logging.ini", "config.ini"],
|
|
17
|
+
package="vulguard",
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
_bootstrapper.setup()
|
|
21
|
+
|
|
22
|
+
CONF_DIR = str(_bootstrapper.get_dir())
|