projectstarter-cli 0.1.0__tar.gz → 0.1.2__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.
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/LICENSE +2 -2
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/PKG-INFO +29 -28
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/README.md +27 -27
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/cli.py +3 -3
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/generator.py +65 -23
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/PKG-INFO +29 -28
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/pyproject.toml +2 -1
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/__init__.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/doctor.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/registry.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter/utils.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/SOURCES.txt +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/dependency_links.txt +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/entry_points.txt +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/top_level.txt +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/setup.cfg +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_cli.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_generator.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_registry.py +0 -0
- {projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2026 Mohamed Ali
|
|
3
|
+
Copyright (c) 2026 Mohamed Ali Ismail Jami
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
18
18
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
19
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
20
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectstarter-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects
|
|
5
5
|
Author-email: Mohamed Ali Ismail Jami <mohamedali32947@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -13,15 +13,16 @@ Classifier: Environment :: Console
|
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
17
|
Classifier: Topic :: Software Development :: Build Tools
|
|
17
18
|
Requires-Python: >=3.9
|
|
18
19
|
Description-Content-Type: text/markdown
|
|
19
20
|
License-File: LICENSE
|
|
20
21
|
Dynamic: license-file
|
|
21
22
|
|
|
22
|
-
#
|
|
23
|
+
# projectstarter-cli 🚀
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
projectstarter-cli is a Python CLI tool created by **Mohamed Ali Ismail Jami** for quickly creating ready-to-use project structures.
|
|
25
26
|
|
|
26
27
|
It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
|
|
27
28
|
|
|
@@ -39,7 +40,7 @@ It helps developers avoid manually creating folders, files, virtual environments
|
|
|
39
40
|
- 📝 Automatically generate a README for generated projects
|
|
40
41
|
- 📋 List supported project types
|
|
41
42
|
- ℹ️ Show information about each project type
|
|
42
|
-
- 🩺 Check the
|
|
43
|
+
- 🩺 Check the projectstarter-cli installation with `doctor`
|
|
43
44
|
- 🧪 Includes automated tests
|
|
44
45
|
|
|
45
46
|
---
|
|
@@ -59,10 +60,10 @@ It helps developers avoid manually creating folders, files, virtual environments
|
|
|
59
60
|
|
|
60
61
|
# 📦 Installation
|
|
61
62
|
|
|
62
|
-
Install
|
|
63
|
+
Install projectstarter-cli from PyPI:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
|
-
pip install projectstarter
|
|
66
|
+
pip install projectstarter-cli
|
|
66
67
|
```
|
|
67
68
|
|
|
68
69
|
Check that it is installed:
|
|
@@ -89,7 +90,7 @@ Run:
|
|
|
89
90
|
projectstarter create
|
|
90
91
|
```
|
|
91
92
|
|
|
92
|
-
|
|
93
|
+
projectstarter-cli will show the available project types:
|
|
93
94
|
|
|
94
95
|
```text
|
|
95
96
|
Choose a project type:
|
|
@@ -109,7 +110,7 @@ Enter your choice: 2
|
|
|
109
110
|
Enter project name: myproject
|
|
110
111
|
```
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
projectstarter-cli will create the project automatically.
|
|
113
114
|
|
|
114
115
|
---
|
|
115
116
|
|
|
@@ -156,7 +157,7 @@ Create a Django project:
|
|
|
156
157
|
projectstarter create django myproject
|
|
157
158
|
```
|
|
158
159
|
|
|
159
|
-
|
|
160
|
+
projectstarter-cli automatically:
|
|
160
161
|
|
|
161
162
|
1. Creates the project directory.
|
|
162
163
|
2. Creates `.venv`.
|
|
@@ -222,7 +223,7 @@ Create a Flask project:
|
|
|
222
223
|
projectstarter create flask myproject
|
|
223
224
|
```
|
|
224
225
|
|
|
225
|
-
|
|
226
|
+
projectstarter-cli automatically:
|
|
226
227
|
|
|
227
228
|
1. Creates the project directory.
|
|
228
229
|
2. Creates `.venv`.
|
|
@@ -288,7 +289,7 @@ Create a FastAPI project:
|
|
|
288
289
|
projectstarter create fastapi myproject
|
|
289
290
|
```
|
|
290
291
|
|
|
291
|
-
|
|
292
|
+
projectstarter-cli automatically:
|
|
292
293
|
|
|
293
294
|
1. Creates the project directory.
|
|
294
295
|
2. Creates `.venv`.
|
|
@@ -406,7 +407,7 @@ projectstarter info fastapi
|
|
|
406
407
|
|
|
407
408
|
# 🩺 Doctor
|
|
408
409
|
|
|
409
|
-
|
|
410
|
+
projectstarter-cli includes a built-in diagnostic command:
|
|
410
411
|
|
|
411
412
|
```bash
|
|
412
413
|
projectstarter doctor
|
|
@@ -422,7 +423,7 @@ It checks:
|
|
|
422
423
|
Example:
|
|
423
424
|
|
|
424
425
|
```text
|
|
425
|
-
|
|
426
|
+
projectstarter-cli Doctor
|
|
426
427
|
──────────────────────────────
|
|
427
428
|
✓ Python
|
|
428
429
|
Version: 3.x.x
|
|
@@ -440,9 +441,9 @@ Everything looks good! ✓
|
|
|
440
441
|
|
|
441
442
|
---
|
|
442
443
|
|
|
443
|
-
# 🧪 Testing
|
|
444
|
+
# 🧪 Testing projectstarter-cli
|
|
444
445
|
|
|
445
|
-
|
|
446
|
+
projectstarter-cli uses `pytest` for automated testing.
|
|
446
447
|
|
|
447
448
|
Install pytest for development:
|
|
448
449
|
|
|
@@ -471,9 +472,9 @@ The test suite covers:
|
|
|
471
472
|
|
|
472
473
|
---
|
|
473
474
|
|
|
474
|
-
# 🏗️
|
|
475
|
+
# 🏗️ projectstarter-cli Development Structure
|
|
475
476
|
|
|
476
|
-
The
|
|
477
|
+
The projectstarter-cli source code is organized as follows:
|
|
477
478
|
|
|
478
479
|
```text
|
|
479
480
|
projectstarter/
|
|
@@ -545,7 +546,7 @@ Contains the automated test suite.
|
|
|
545
546
|
|
|
546
547
|
# ➕ Adding a New Generator
|
|
547
548
|
|
|
548
|
-
|
|
549
|
+
projectstarter-cli is designed so that new project types can be added to the generator system.
|
|
549
550
|
|
|
550
551
|
A new generator generally needs:
|
|
551
552
|
|
|
@@ -562,7 +563,7 @@ This keeps the CLI organized and makes the tool easier to extend.
|
|
|
562
563
|
|
|
563
564
|
# 🔐 Project Name Rules
|
|
564
565
|
|
|
565
|
-
|
|
566
|
+
projectstarter-cli validates project names before creating projects.
|
|
566
567
|
|
|
567
568
|
Valid examples:
|
|
568
569
|
|
|
@@ -586,9 +587,9 @@ Project names must use letters, numbers, and underscores and must not start with
|
|
|
586
587
|
|
|
587
588
|
# 👨💻 Author
|
|
588
589
|
|
|
589
|
-
**Mohamed Ali**
|
|
590
|
+
**Mohamed Ali Ismail Jami**
|
|
590
591
|
|
|
591
|
-
|
|
592
|
+
projectstarter-cli was created and is maintained by Mohamed Ali Ismail Jami.
|
|
592
593
|
|
|
593
594
|
## 📞 Contact
|
|
594
595
|
|
|
@@ -598,9 +599,9 @@ For questions, suggestions, bug reports, or contributions, contact the project m
|
|
|
598
599
|
- Project Repository: https://github.com/hamada-cool/projectstarter
|
|
599
600
|
- Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
|
|
600
601
|
- Email: `mohamedali32947@gmail.com`
|
|
601
|
-
- Phone / WhatsApp: `+918341391506`
|
|
602
|
+
- Phone / WhatsApp: `+918341391506` and `+249919532947`
|
|
602
603
|
|
|
603
|
-
You can also open a GitHub Issue if you find a bug or have an idea for improving
|
|
604
|
+
You can also open a GitHub Issue if you find a bug or have an idea for improving projectstarter-cli.
|
|
604
605
|
|
|
605
606
|
---
|
|
606
607
|
|
|
@@ -626,7 +627,7 @@ python -m pytest
|
|
|
626
627
|
|
|
627
628
|
# 📄 License
|
|
628
629
|
|
|
629
|
-
|
|
630
|
+
projectstarter-cli is licensed under the **MIT License**.
|
|
630
631
|
|
|
631
632
|
See the `LICENSE` file for the complete license text.
|
|
632
633
|
|
|
@@ -634,7 +635,7 @@ See the `LICENSE` file for the complete license text.
|
|
|
634
635
|
|
|
635
636
|
# 🎯 Project Status
|
|
636
637
|
|
|
637
|
-
|
|
638
|
+
projectstarter-cli currently supports:
|
|
638
639
|
|
|
639
640
|
- Python
|
|
640
641
|
- Django
|
|
@@ -647,7 +648,7 @@ The project is under active development, and more generators and features may be
|
|
|
647
648
|
|
|
648
649
|
## ⭐ Support the Project
|
|
649
650
|
|
|
650
|
-
If you find
|
|
651
|
+
If you find projectstarter-cli useful, you can support the project by:
|
|
651
652
|
|
|
652
653
|
- ⭐ Starring the GitHub repository
|
|
653
654
|
- 🐛 Reporting bugs
|
|
@@ -657,6 +658,6 @@ If you find ProjectStarter useful, you can support the project by:
|
|
|
657
658
|
|
|
658
659
|
---
|
|
659
660
|
|
|
660
|
-
**
|
|
661
|
+
**projectstarter-cli — Start your next Python project faster. 🚀**
|
|
661
662
|
|
|
662
|
-
Created by **Mohamed Ali**.
|
|
663
|
+
Created by **Mohamed Ali Ismail Jami**.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# projectstarter-cli 🚀
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
projectstarter-cli is a Python CLI tool created by **Mohamed Ali Ismail Jami** for quickly creating ready-to-use project structures.
|
|
4
4
|
|
|
5
5
|
It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ It helps developers avoid manually creating folders, files, virtual environments
|
|
|
18
18
|
- 📝 Automatically generate a README for generated projects
|
|
19
19
|
- 📋 List supported project types
|
|
20
20
|
- ℹ️ Show information about each project type
|
|
21
|
-
- 🩺 Check the
|
|
21
|
+
- 🩺 Check the projectstarter-cli installation with `doctor`
|
|
22
22
|
- 🧪 Includes automated tests
|
|
23
23
|
|
|
24
24
|
---
|
|
@@ -38,10 +38,10 @@ It helps developers avoid manually creating folders, files, virtual environments
|
|
|
38
38
|
|
|
39
39
|
# 📦 Installation
|
|
40
40
|
|
|
41
|
-
Install
|
|
41
|
+
Install projectstarter-cli from PyPI:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
pip install projectstarter
|
|
44
|
+
pip install projectstarter-cli
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Check that it is installed:
|
|
@@ -68,7 +68,7 @@ Run:
|
|
|
68
68
|
projectstarter create
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
projectstarter-cli will show the available project types:
|
|
72
72
|
|
|
73
73
|
```text
|
|
74
74
|
Choose a project type:
|
|
@@ -88,7 +88,7 @@ Enter your choice: 2
|
|
|
88
88
|
Enter project name: myproject
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
projectstarter-cli will create the project automatically.
|
|
92
92
|
|
|
93
93
|
---
|
|
94
94
|
|
|
@@ -135,7 +135,7 @@ Create a Django project:
|
|
|
135
135
|
projectstarter create django myproject
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
projectstarter-cli automatically:
|
|
139
139
|
|
|
140
140
|
1. Creates the project directory.
|
|
141
141
|
2. Creates `.venv`.
|
|
@@ -201,7 +201,7 @@ Create a Flask project:
|
|
|
201
201
|
projectstarter create flask myproject
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
|
|
204
|
+
projectstarter-cli automatically:
|
|
205
205
|
|
|
206
206
|
1. Creates the project directory.
|
|
207
207
|
2. Creates `.venv`.
|
|
@@ -267,7 +267,7 @@ Create a FastAPI project:
|
|
|
267
267
|
projectstarter create fastapi myproject
|
|
268
268
|
```
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
projectstarter-cli automatically:
|
|
271
271
|
|
|
272
272
|
1. Creates the project directory.
|
|
273
273
|
2. Creates `.venv`.
|
|
@@ -385,7 +385,7 @@ projectstarter info fastapi
|
|
|
385
385
|
|
|
386
386
|
# 🩺 Doctor
|
|
387
387
|
|
|
388
|
-
|
|
388
|
+
projectstarter-cli includes a built-in diagnostic command:
|
|
389
389
|
|
|
390
390
|
```bash
|
|
391
391
|
projectstarter doctor
|
|
@@ -401,7 +401,7 @@ It checks:
|
|
|
401
401
|
Example:
|
|
402
402
|
|
|
403
403
|
```text
|
|
404
|
-
|
|
404
|
+
projectstarter-cli Doctor
|
|
405
405
|
──────────────────────────────
|
|
406
406
|
✓ Python
|
|
407
407
|
Version: 3.x.x
|
|
@@ -419,9 +419,9 @@ Everything looks good! ✓
|
|
|
419
419
|
|
|
420
420
|
---
|
|
421
421
|
|
|
422
|
-
# 🧪 Testing
|
|
422
|
+
# 🧪 Testing projectstarter-cli
|
|
423
423
|
|
|
424
|
-
|
|
424
|
+
projectstarter-cli uses `pytest` for automated testing.
|
|
425
425
|
|
|
426
426
|
Install pytest for development:
|
|
427
427
|
|
|
@@ -450,9 +450,9 @@ The test suite covers:
|
|
|
450
450
|
|
|
451
451
|
---
|
|
452
452
|
|
|
453
|
-
# 🏗️
|
|
453
|
+
# 🏗️ projectstarter-cli Development Structure
|
|
454
454
|
|
|
455
|
-
The
|
|
455
|
+
The projectstarter-cli source code is organized as follows:
|
|
456
456
|
|
|
457
457
|
```text
|
|
458
458
|
projectstarter/
|
|
@@ -524,7 +524,7 @@ Contains the automated test suite.
|
|
|
524
524
|
|
|
525
525
|
# ➕ Adding a New Generator
|
|
526
526
|
|
|
527
|
-
|
|
527
|
+
projectstarter-cli is designed so that new project types can be added to the generator system.
|
|
528
528
|
|
|
529
529
|
A new generator generally needs:
|
|
530
530
|
|
|
@@ -541,7 +541,7 @@ This keeps the CLI organized and makes the tool easier to extend.
|
|
|
541
541
|
|
|
542
542
|
# 🔐 Project Name Rules
|
|
543
543
|
|
|
544
|
-
|
|
544
|
+
projectstarter-cli validates project names before creating projects.
|
|
545
545
|
|
|
546
546
|
Valid examples:
|
|
547
547
|
|
|
@@ -565,9 +565,9 @@ Project names must use letters, numbers, and underscores and must not start with
|
|
|
565
565
|
|
|
566
566
|
# 👨💻 Author
|
|
567
567
|
|
|
568
|
-
**Mohamed Ali**
|
|
568
|
+
**Mohamed Ali Ismail Jami**
|
|
569
569
|
|
|
570
|
-
|
|
570
|
+
projectstarter-cli was created and is maintained by Mohamed Ali Ismail Jami.
|
|
571
571
|
|
|
572
572
|
## 📞 Contact
|
|
573
573
|
|
|
@@ -577,9 +577,9 @@ For questions, suggestions, bug reports, or contributions, contact the project m
|
|
|
577
577
|
- Project Repository: https://github.com/hamada-cool/projectstarter
|
|
578
578
|
- Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
|
|
579
579
|
- Email: `mohamedali32947@gmail.com`
|
|
580
|
-
- Phone / WhatsApp: `+918341391506`
|
|
580
|
+
- Phone / WhatsApp: `+918341391506` and `+249919532947`
|
|
581
581
|
|
|
582
|
-
You can also open a GitHub Issue if you find a bug or have an idea for improving
|
|
582
|
+
You can also open a GitHub Issue if you find a bug or have an idea for improving projectstarter-cli.
|
|
583
583
|
|
|
584
584
|
---
|
|
585
585
|
|
|
@@ -605,7 +605,7 @@ python -m pytest
|
|
|
605
605
|
|
|
606
606
|
# 📄 License
|
|
607
607
|
|
|
608
|
-
|
|
608
|
+
projectstarter-cli is licensed under the **MIT License**.
|
|
609
609
|
|
|
610
610
|
See the `LICENSE` file for the complete license text.
|
|
611
611
|
|
|
@@ -613,7 +613,7 @@ See the `LICENSE` file for the complete license text.
|
|
|
613
613
|
|
|
614
614
|
# 🎯 Project Status
|
|
615
615
|
|
|
616
|
-
|
|
616
|
+
projectstarter-cli currently supports:
|
|
617
617
|
|
|
618
618
|
- Python
|
|
619
619
|
- Django
|
|
@@ -626,7 +626,7 @@ The project is under active development, and more generators and features may be
|
|
|
626
626
|
|
|
627
627
|
## ⭐ Support the Project
|
|
628
628
|
|
|
629
|
-
If you find
|
|
629
|
+
If you find projectstarter-cli useful, you can support the project by:
|
|
630
630
|
|
|
631
631
|
- ⭐ Starring the GitHub repository
|
|
632
632
|
- 🐛 Reporting bugs
|
|
@@ -636,6 +636,6 @@ If you find ProjectStarter useful, you can support the project by:
|
|
|
636
636
|
|
|
637
637
|
---
|
|
638
638
|
|
|
639
|
-
**
|
|
639
|
+
**projectstarter-cli — Start your next Python project faster. 🚀**
|
|
640
640
|
|
|
641
|
-
Created by **Mohamed Ali**.
|
|
641
|
+
Created by **Mohamed Ali Ismail Jami**.
|
|
@@ -6,13 +6,13 @@ from .doctor import run_doctor
|
|
|
6
6
|
|
|
7
7
|
def main():
|
|
8
8
|
parser = argparse.ArgumentParser(
|
|
9
|
-
description="ProjectStarter - Create projects quickly"
|
|
9
|
+
description="ProjectStarter-cli - Create projects quickly"
|
|
10
10
|
)
|
|
11
11
|
|
|
12
12
|
parser.add_argument(
|
|
13
13
|
"--version",
|
|
14
14
|
action="version",
|
|
15
|
-
version="ProjectStarter 0.1.
|
|
15
|
+
version="ProjectStarter-cli 0.1.1"
|
|
16
16
|
)
|
|
17
17
|
|
|
18
18
|
subparsers = parser.add_subparsers(
|
|
@@ -53,7 +53,7 @@ def main():
|
|
|
53
53
|
# doctor command
|
|
54
54
|
subparsers.add_parser(
|
|
55
55
|
"doctor",
|
|
56
|
-
help="Check ProjectStarter installation"
|
|
56
|
+
help="Check ProjectStarter-cli installation"
|
|
57
57
|
)
|
|
58
58
|
|
|
59
59
|
info_parser.add_argument(
|
|
@@ -3,9 +3,14 @@ import subprocess
|
|
|
3
3
|
import sys
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
# ==============================
|
|
7
|
+
# Utility Functions
|
|
8
|
+
# ==============================
|
|
9
|
+
|
|
6
10
|
def run_command(command, cwd=None):
|
|
7
|
-
"""Run a command."""
|
|
8
|
-
|
|
11
|
+
"""Run a shell command safely."""
|
|
12
|
+
|
|
13
|
+
return subprocess.run(
|
|
9
14
|
command,
|
|
10
15
|
cwd=cwd,
|
|
11
16
|
check=True
|
|
@@ -13,8 +18,9 @@ def run_command(command, cwd=None):
|
|
|
13
18
|
|
|
14
19
|
|
|
15
20
|
def create_virtual_environment(project_path):
|
|
16
|
-
"""Create a virtual environment."""
|
|
21
|
+
"""Create a cross-platform virtual environment."""
|
|
17
22
|
|
|
23
|
+
project_path = Path(project_path).resolve()
|
|
18
24
|
venv_path = project_path / ".venv"
|
|
19
25
|
|
|
20
26
|
print("Creating virtual environment...")
|
|
@@ -25,13 +31,23 @@ def create_virtual_environment(project_path):
|
|
|
25
31
|
)
|
|
26
32
|
|
|
27
33
|
if sys.platform == "win32":
|
|
28
|
-
|
|
34
|
+
python_exe = venv_path / "Scripts" / "python.exe"
|
|
35
|
+
else:
|
|
36
|
+
python_exe = venv_path / "bin" / "python"
|
|
37
|
+
|
|
38
|
+
# Return an absolute path to avoid cwd-related issues.
|
|
39
|
+
python_exe = python_exe.resolve()
|
|
29
40
|
|
|
30
|
-
|
|
41
|
+
if not python_exe.exists():
|
|
42
|
+
raise FileNotFoundError(
|
|
43
|
+
f"Virtual environment Python not found: {python_exe}"
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
return python_exe
|
|
31
47
|
|
|
32
48
|
|
|
33
49
|
def upgrade_pip(python_exe):
|
|
34
|
-
"""Upgrade pip."""
|
|
50
|
+
"""Upgrade pip inside the virtual environment."""
|
|
35
51
|
|
|
36
52
|
print("Upgrading pip...")
|
|
37
53
|
|
|
@@ -48,7 +64,7 @@ def upgrade_pip(python_exe):
|
|
|
48
64
|
|
|
49
65
|
|
|
50
66
|
def install_package(python_exe, package):
|
|
51
|
-
"""Install a package."""
|
|
67
|
+
"""Install a package inside the virtual environment."""
|
|
52
68
|
|
|
53
69
|
print(f"Installing {package}...")
|
|
54
70
|
|
|
@@ -64,7 +80,9 @@ def install_package(python_exe, package):
|
|
|
64
80
|
|
|
65
81
|
|
|
66
82
|
def save_requirements(python_exe, project_path):
|
|
67
|
-
"""
|
|
83
|
+
"""Generate requirements.txt using pip freeze."""
|
|
84
|
+
|
|
85
|
+
project_path = Path(project_path).resolve()
|
|
68
86
|
|
|
69
87
|
result = subprocess.run(
|
|
70
88
|
[
|
|
@@ -85,7 +103,7 @@ def save_requirements(python_exe, project_path):
|
|
|
85
103
|
|
|
86
104
|
|
|
87
105
|
def create_gitignore(project_path, django=False):
|
|
88
|
-
"""Create .gitignore."""
|
|
106
|
+
"""Create a .gitignore file."""
|
|
89
107
|
|
|
90
108
|
content = """__pycache__/
|
|
91
109
|
*.py[cod]
|
|
@@ -108,6 +126,26 @@ venv/
|
|
|
108
126
|
)
|
|
109
127
|
|
|
110
128
|
|
|
129
|
+
def activation_instructions():
|
|
130
|
+
"""Return cross-platform virtual environment instructions."""
|
|
131
|
+
|
|
132
|
+
return """## Activate virtual environment
|
|
133
|
+
|
|
134
|
+
Windows:
|
|
135
|
+
|
|
136
|
+
.venv\\Scripts\\activate
|
|
137
|
+
|
|
138
|
+
Linux / macOS:
|
|
139
|
+
|
|
140
|
+
source .venv/bin/activate
|
|
141
|
+
|
|
142
|
+
"""
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
# ==============================
|
|
146
|
+
# Python Project Generator
|
|
147
|
+
# ==============================
|
|
148
|
+
|
|
111
149
|
def create_python_project(project_name):
|
|
112
150
|
"""Create a basic Python project."""
|
|
113
151
|
|
|
@@ -160,11 +198,8 @@ if __name__ == "__main__":
|
|
|
160
198
|
f"# {project_name}\n\n"
|
|
161
199
|
"A Python project created with ProjectStarter.\n\n"
|
|
162
200
|
"## Run\n\n"
|
|
163
|
-
"Activate the virtual environment on Windows:\n\n"
|
|
164
|
-
".venv\\Scripts\\activate\n\n"
|
|
165
201
|
"Run the application:\n\n"
|
|
166
|
-
"python src/"
|
|
167
|
-
f"{project_name}/main.py\n"
|
|
202
|
+
f"python src/{project_name}/main.py\n"
|
|
168
203
|
)
|
|
169
204
|
|
|
170
205
|
(project_path / "README.md").write_text(
|
|
@@ -177,6 +212,10 @@ if __name__ == "__main__":
|
|
|
177
212
|
)
|
|
178
213
|
|
|
179
214
|
|
|
215
|
+
# ==============================
|
|
216
|
+
# Django Project Generator
|
|
217
|
+
# ==============================
|
|
218
|
+
|
|
180
219
|
def create_django_project(project_name):
|
|
181
220
|
"""Create a Django project."""
|
|
182
221
|
|
|
@@ -213,7 +252,7 @@ def create_django_project(project_name):
|
|
|
213
252
|
"config",
|
|
214
253
|
"."
|
|
215
254
|
],
|
|
216
|
-
cwd=project_path
|
|
255
|
+
cwd=project_path.resolve()
|
|
217
256
|
)
|
|
218
257
|
|
|
219
258
|
save_requirements(
|
|
@@ -229,9 +268,7 @@ def create_django_project(project_name):
|
|
|
229
268
|
readme = (
|
|
230
269
|
f"# {project_name}\n\n"
|
|
231
270
|
"A Django project created with ProjectStarter.\n\n"
|
|
232
|
-
"
|
|
233
|
-
"Windows:\n\n"
|
|
234
|
-
".venv\\Scripts\\activate\n\n"
|
|
271
|
+
f"{activation_instructions()}"
|
|
235
272
|
"## Run the project\n\n"
|
|
236
273
|
"python manage.py runserver\n\n"
|
|
237
274
|
"## Project URL\n\n"
|
|
@@ -249,6 +286,10 @@ def create_django_project(project_name):
|
|
|
249
286
|
)
|
|
250
287
|
|
|
251
288
|
|
|
289
|
+
# ==============================
|
|
290
|
+
# Flask Project Generator
|
|
291
|
+
# ==============================
|
|
292
|
+
|
|
252
293
|
def create_flask_project(project_name):
|
|
253
294
|
"""Create a Flask project."""
|
|
254
295
|
|
|
@@ -322,9 +363,7 @@ if __name__ == "__main__":
|
|
|
322
363
|
readme = (
|
|
323
364
|
f"# {project_name}\n\n"
|
|
324
365
|
"A Flask project created with ProjectStarter.\n\n"
|
|
325
|
-
"
|
|
326
|
-
"Windows:\n\n"
|
|
327
|
-
".venv\\Scripts\\activate\n\n"
|
|
366
|
+
f"{activation_instructions()}"
|
|
328
367
|
"## Run the project\n\n"
|
|
329
368
|
"python run.py\n\n"
|
|
330
369
|
"## Project URL\n\n"
|
|
@@ -341,6 +380,11 @@ if __name__ == "__main__":
|
|
|
341
380
|
"created successfully!"
|
|
342
381
|
)
|
|
343
382
|
|
|
383
|
+
|
|
384
|
+
# ==============================
|
|
385
|
+
# FastAPI Project Generator
|
|
386
|
+
# ==============================
|
|
387
|
+
|
|
344
388
|
def create_fastapi_project(project_name):
|
|
345
389
|
"""Create a FastAPI project."""
|
|
346
390
|
|
|
@@ -405,9 +449,7 @@ def home():
|
|
|
405
449
|
readme = (
|
|
406
450
|
f"# {project_name}\n\n"
|
|
407
451
|
"A FastAPI project created with ProjectStarter.\n\n"
|
|
408
|
-
"
|
|
409
|
-
"Windows:\n\n"
|
|
410
|
-
".venv\\Scripts\\activate\n\n"
|
|
452
|
+
f"{activation_instructions()}"
|
|
411
453
|
"## Run\n\n"
|
|
412
454
|
"uvicorn app.main:app --reload\n\n"
|
|
413
455
|
"## API\n\n"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectstarter-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects
|
|
5
5
|
Author-email: Mohamed Ali Ismail Jami <mohamedali32947@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -13,15 +13,16 @@ Classifier: Environment :: Console
|
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
17
|
Classifier: Topic :: Software Development :: Build Tools
|
|
17
18
|
Requires-Python: >=3.9
|
|
18
19
|
Description-Content-Type: text/markdown
|
|
19
20
|
License-File: LICENSE
|
|
20
21
|
Dynamic: license-file
|
|
21
22
|
|
|
22
|
-
#
|
|
23
|
+
# projectstarter-cli 🚀
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
projectstarter-cli is a Python CLI tool created by **Mohamed Ali Ismail Jami** for quickly creating ready-to-use project structures.
|
|
25
26
|
|
|
26
27
|
It helps developers avoid manually creating folders, files, virtual environments, installing framework dependencies, and preparing basic project documentation.
|
|
27
28
|
|
|
@@ -39,7 +40,7 @@ It helps developers avoid manually creating folders, files, virtual environments
|
|
|
39
40
|
- 📝 Automatically generate a README for generated projects
|
|
40
41
|
- 📋 List supported project types
|
|
41
42
|
- ℹ️ Show information about each project type
|
|
42
|
-
- 🩺 Check the
|
|
43
|
+
- 🩺 Check the projectstarter-cli installation with `doctor`
|
|
43
44
|
- 🧪 Includes automated tests
|
|
44
45
|
|
|
45
46
|
---
|
|
@@ -59,10 +60,10 @@ It helps developers avoid manually creating folders, files, virtual environments
|
|
|
59
60
|
|
|
60
61
|
# 📦 Installation
|
|
61
62
|
|
|
62
|
-
Install
|
|
63
|
+
Install projectstarter-cli from PyPI:
|
|
63
64
|
|
|
64
65
|
```bash
|
|
65
|
-
pip install projectstarter
|
|
66
|
+
pip install projectstarter-cli
|
|
66
67
|
```
|
|
67
68
|
|
|
68
69
|
Check that it is installed:
|
|
@@ -89,7 +90,7 @@ Run:
|
|
|
89
90
|
projectstarter create
|
|
90
91
|
```
|
|
91
92
|
|
|
92
|
-
|
|
93
|
+
projectstarter-cli will show the available project types:
|
|
93
94
|
|
|
94
95
|
```text
|
|
95
96
|
Choose a project type:
|
|
@@ -109,7 +110,7 @@ Enter your choice: 2
|
|
|
109
110
|
Enter project name: myproject
|
|
110
111
|
```
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
projectstarter-cli will create the project automatically.
|
|
113
114
|
|
|
114
115
|
---
|
|
115
116
|
|
|
@@ -156,7 +157,7 @@ Create a Django project:
|
|
|
156
157
|
projectstarter create django myproject
|
|
157
158
|
```
|
|
158
159
|
|
|
159
|
-
|
|
160
|
+
projectstarter-cli automatically:
|
|
160
161
|
|
|
161
162
|
1. Creates the project directory.
|
|
162
163
|
2. Creates `.venv`.
|
|
@@ -222,7 +223,7 @@ Create a Flask project:
|
|
|
222
223
|
projectstarter create flask myproject
|
|
223
224
|
```
|
|
224
225
|
|
|
225
|
-
|
|
226
|
+
projectstarter-cli automatically:
|
|
226
227
|
|
|
227
228
|
1. Creates the project directory.
|
|
228
229
|
2. Creates `.venv`.
|
|
@@ -288,7 +289,7 @@ Create a FastAPI project:
|
|
|
288
289
|
projectstarter create fastapi myproject
|
|
289
290
|
```
|
|
290
291
|
|
|
291
|
-
|
|
292
|
+
projectstarter-cli automatically:
|
|
292
293
|
|
|
293
294
|
1. Creates the project directory.
|
|
294
295
|
2. Creates `.venv`.
|
|
@@ -406,7 +407,7 @@ projectstarter info fastapi
|
|
|
406
407
|
|
|
407
408
|
# 🩺 Doctor
|
|
408
409
|
|
|
409
|
-
|
|
410
|
+
projectstarter-cli includes a built-in diagnostic command:
|
|
410
411
|
|
|
411
412
|
```bash
|
|
412
413
|
projectstarter doctor
|
|
@@ -422,7 +423,7 @@ It checks:
|
|
|
422
423
|
Example:
|
|
423
424
|
|
|
424
425
|
```text
|
|
425
|
-
|
|
426
|
+
projectstarter-cli Doctor
|
|
426
427
|
──────────────────────────────
|
|
427
428
|
✓ Python
|
|
428
429
|
Version: 3.x.x
|
|
@@ -440,9 +441,9 @@ Everything looks good! ✓
|
|
|
440
441
|
|
|
441
442
|
---
|
|
442
443
|
|
|
443
|
-
# 🧪 Testing
|
|
444
|
+
# 🧪 Testing projectstarter-cli
|
|
444
445
|
|
|
445
|
-
|
|
446
|
+
projectstarter-cli uses `pytest` for automated testing.
|
|
446
447
|
|
|
447
448
|
Install pytest for development:
|
|
448
449
|
|
|
@@ -471,9 +472,9 @@ The test suite covers:
|
|
|
471
472
|
|
|
472
473
|
---
|
|
473
474
|
|
|
474
|
-
# 🏗️
|
|
475
|
+
# 🏗️ projectstarter-cli Development Structure
|
|
475
476
|
|
|
476
|
-
The
|
|
477
|
+
The projectstarter-cli source code is organized as follows:
|
|
477
478
|
|
|
478
479
|
```text
|
|
479
480
|
projectstarter/
|
|
@@ -545,7 +546,7 @@ Contains the automated test suite.
|
|
|
545
546
|
|
|
546
547
|
# ➕ Adding a New Generator
|
|
547
548
|
|
|
548
|
-
|
|
549
|
+
projectstarter-cli is designed so that new project types can be added to the generator system.
|
|
549
550
|
|
|
550
551
|
A new generator generally needs:
|
|
551
552
|
|
|
@@ -562,7 +563,7 @@ This keeps the CLI organized and makes the tool easier to extend.
|
|
|
562
563
|
|
|
563
564
|
# 🔐 Project Name Rules
|
|
564
565
|
|
|
565
|
-
|
|
566
|
+
projectstarter-cli validates project names before creating projects.
|
|
566
567
|
|
|
567
568
|
Valid examples:
|
|
568
569
|
|
|
@@ -586,9 +587,9 @@ Project names must use letters, numbers, and underscores and must not start with
|
|
|
586
587
|
|
|
587
588
|
# 👨💻 Author
|
|
588
589
|
|
|
589
|
-
**Mohamed Ali**
|
|
590
|
+
**Mohamed Ali Ismail Jami**
|
|
590
591
|
|
|
591
|
-
|
|
592
|
+
projectstarter-cli was created and is maintained by Mohamed Ali Ismail Jami.
|
|
592
593
|
|
|
593
594
|
## 📞 Contact
|
|
594
595
|
|
|
@@ -598,9 +599,9 @@ For questions, suggestions, bug reports, or contributions, contact the project m
|
|
|
598
599
|
- Project Repository: https://github.com/hamada-cool/projectstarter
|
|
599
600
|
- Bug Reports / Issues: https://github.com/hamada-cool/projectstarter/issues
|
|
600
601
|
- Email: `mohamedali32947@gmail.com`
|
|
601
|
-
- Phone / WhatsApp: `+918341391506`
|
|
602
|
+
- Phone / WhatsApp: `+918341391506` and `+249919532947`
|
|
602
603
|
|
|
603
|
-
You can also open a GitHub Issue if you find a bug or have an idea for improving
|
|
604
|
+
You can also open a GitHub Issue if you find a bug or have an idea for improving projectstarter-cli.
|
|
604
605
|
|
|
605
606
|
---
|
|
606
607
|
|
|
@@ -626,7 +627,7 @@ python -m pytest
|
|
|
626
627
|
|
|
627
628
|
# 📄 License
|
|
628
629
|
|
|
629
|
-
|
|
630
|
+
projectstarter-cli is licensed under the **MIT License**.
|
|
630
631
|
|
|
631
632
|
See the `LICENSE` file for the complete license text.
|
|
632
633
|
|
|
@@ -634,7 +635,7 @@ See the `LICENSE` file for the complete license text.
|
|
|
634
635
|
|
|
635
636
|
# 🎯 Project Status
|
|
636
637
|
|
|
637
|
-
|
|
638
|
+
projectstarter-cli currently supports:
|
|
638
639
|
|
|
639
640
|
- Python
|
|
640
641
|
- Django
|
|
@@ -647,7 +648,7 @@ The project is under active development, and more generators and features may be
|
|
|
647
648
|
|
|
648
649
|
## ⭐ Support the Project
|
|
649
650
|
|
|
650
|
-
If you find
|
|
651
|
+
If you find projectstarter-cli useful, you can support the project by:
|
|
651
652
|
|
|
652
653
|
- ⭐ Starring the GitHub repository
|
|
653
654
|
- 🐛 Reporting bugs
|
|
@@ -657,6 +658,6 @@ If you find ProjectStarter useful, you can support the project by:
|
|
|
657
658
|
|
|
658
659
|
---
|
|
659
660
|
|
|
660
|
-
**
|
|
661
|
+
**projectstarter-cli — Start your next Python project faster. 🚀**
|
|
661
662
|
|
|
662
|
-
Created by **Mohamed Ali**.
|
|
663
|
+
Created by **Mohamed Ali Ismail Jami**.
|
|
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
|
|
|
5
5
|
|
|
6
6
|
[project]
|
|
7
7
|
name = "projectstarter-cli"
|
|
8
|
-
version = "0.1.
|
|
8
|
+
version = "0.1.2"
|
|
9
9
|
description = "A Python CLI tool for quickly generating Python, Django, Flask, and FastAPI projects"
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.9"
|
|
@@ -33,6 +33,7 @@ classifiers = [
|
|
|
33
33
|
"Intended Audience :: Developers",
|
|
34
34
|
"Programming Language :: Python :: 3",
|
|
35
35
|
"Programming Language :: Python :: 3 :: Only",
|
|
36
|
+
"Programming Language :: Python :: 3.13",
|
|
36
37
|
"Topic :: Software Development :: Build Tools",
|
|
37
38
|
]
|
|
38
39
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{projectstarter_cli-0.1.0 → projectstarter_cli-0.1.2}/projectstarter_cli.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|