Skip to content

Commit 8267294

Browse files
authored
Merge branch 'main' into main
2 parents 093e8d2 + 7066039 commit 8267294

65 files changed

Lines changed: 2254 additions & 627 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
build/
8+
develop-eggs/
9+
dist/
10+
downloads/
11+
eggs/
12+
.eggs/
13+
lib/
14+
lib64/
15+
parts/
16+
sdist/
17+
var/
18+
wheels/
19+
pip-wheel-metadata/
20+
share/python-wheels/
21+
*.egg-info/
22+
.installed.cfg
23+
*.egg
24+
MANIFEST
25+
26+
# Virtual Environment
27+
venv/
28+
ENV/
29+
env/
30+
.venv
31+
32+
# IDE
33+
.vscode/
34+
.idea/
35+
*.swp
36+
*.swo
37+
*~
38+
39+
# OS
40+
.DS_Store
41+
Thumbs.db
42+
43+
# Local testing
44+
.pytest_cache/
45+
.coverage
46+
htmlcov/

README.md

Lines changed: 94 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
---
2+
3+
<h2 align="center">🎯 Open Source Programmes ⭐</h2>
4+
<p align="center">
5+
<b>This project is now OFFICIALLY accepted for:</b>
6+
</p>
7+
8+
<div align="center">
9+
10+
![GSSoC Banner](assets/gssoc.png)
11+
12+
</div>
13+
14+
115
# archpkg-helper
216

317
A cross-distro command-line utility that helps you search for packages and generate install commands for native package managers (pacman, AUR, apt, dnf, flatpak, snap). It aims to make discovering and installing software on Linux simpler, regardless of your distribution.
@@ -21,8 +35,10 @@ archpkg-helper is designed to work across Linux distributions. While originally
2135

2236
## Features
2337

38+
- **Purpose-based App Suggestions**: Get app recommendations based on what you want to do (e.g., "video editing", "office work", "programming")
39+
- **Intelligent Query Matching**: Natural language processing to understand user intent (e.g., "apps to edit videos" → video editing)
2440
- Search for packages and generate install commands for:
25-
- pacman (Arch), AUR, apt (Debian/Ubuntu), dnf (Fedora), flatpak, snap
41+
- pacman (Arch), AUR, apt (Debian/Ubuntu), dnf (Fedora), zypper (openSUSE), flatpak, snap
2642
- Cross-distro support (not limited to Arch)
2743
- Clear, readable output and errors
2844
- One-command setup via `install.sh`
@@ -72,6 +88,11 @@ On Arch and many other distros, system Python may be “externally managed” (P
7288
sudo dnf install pipx
7389
pipx ensurepath
7490
```
91+
- openSUSE:
92+
```sh
93+
sudo zypper install python3-pipx
94+
pipx ensurepath
95+
```
7596

7697
2) Install archpkg-helper with pipx
7798
- Directly from GitHub:
@@ -136,7 +157,30 @@ This starts a web server at `http://localhost:5000` where you can:
136157

137158
Here are some common commands for using the archpkg tool:
138159

139-
#### 1. Search for a Package
160+
#### 1. Purpose-based App Suggestions (NEW!)
161+
162+
Get app recommendations based on what you want to do:
163+
164+
```sh
165+
# Get video editing apps
166+
archpkg suggest "video editing"
167+
168+
# Get office applications
169+
archpkg suggest "office"
170+
171+
# Get programming tools
172+
archpkg suggest "coding"
173+
174+
# Natural language queries work too!
175+
archpkg suggest "apps to edit videos"
176+
archpkg suggest "programming tools"
177+
archpkg suggest "photo editing"
178+
179+
# List all available purposes
180+
archpkg suggest --list
181+
```
182+
183+
#### 2. Search for a Package
140184

141185
Search for a package across all supported package managers:
142186

@@ -148,6 +192,7 @@ archpkg search firefox
148192
This command will search for the `firefox` package across multiple package managers (e.g., pacman, AUR, apt).
149193

150194
#### 2. Install Multiple Packages (Batch Installation)
195+
#### 3. Install a Package
151196

152197
Install multiple packages at once with automatic validation and progress tracking:
153198

@@ -163,7 +208,7 @@ This command will:
163208

164209
Batch installation validates all packages first, then proceeds with installation. If any package fails validation, the entire batch is cancelled.
165210

166-
#### 3. Install a Package from AUR (Arch User Repository)
211+
#### 4. Install a Package from AUR (Arch User Repository)
167212

168213
To install from the AUR specifically:
169214

@@ -174,7 +219,7 @@ archpkg install vscode --source aur
174219

175220
This installs `vscode` from the AUR.
176221

177-
#### 4. Install a Package from Pacman
222+
#### 5. Install a Package from Pacman
178223

179224
To install a package directly using pacman (e.g., on Arch Linux):
180225

@@ -184,6 +229,7 @@ archpkg install firefox --source pacman
184229

185230

186231
#### 5. Install from GitHub
232+
#### 6. Remove a Package
187233

188234
Install software directly from GitHub repositories:
189235

@@ -245,6 +291,7 @@ You can specify the package manager source using the `--source` flag. Supported
245291
- aur (AUR)
246292
- apt (Debian/Ubuntu)
247293
- dnf (Fedora)
294+
- zypper (openSUSE)
248295
- flatpak (Flatpak)
249296
- snap (Snap)
250297

@@ -422,6 +469,7 @@ The tool is structured as a **modular Python CLI** with:
422469
- `aur` (Arch User Repository)
423470
- `apt` (Debian/Ubuntu)
424471
- `dnf` (Fedora)
472+
- `zypper` (openSUSE)
425473
- `flatpak`
426474
- `snap`
427475

@@ -476,6 +524,11 @@ Top-level layout of this repository:
476524
archpkg-helper/
477525
├── .github/ # issue templates and pull request template
478526
├── archpkg/ # Core Python package code (CLI and logic)
527+
│ ├── suggest.py # Purpose-based app suggestions module
528+
│ ├── cli.py # Main CLI interface
529+
│ └── ... # Other modules
530+
├── data/ # Data files for suggestions
531+
│ └── purpose_mapping.yaml # Purpose-to-apps mapping (community-driven)
479532
├── install.sh # One-command installer script (uses pipx)
480533
├── pyproject.toml # Build/metadata configuration
481534
├── setup.py # Packaging configuration (entry points, deps)
@@ -504,14 +557,39 @@ Contributions are welcome! Please:
504557
5. Open a Pull Request
505558

506559
Report bugs or request features via the [issue tracker](https://github.com/AdmGenSameer/archpkg-helper/issues).
560+
561+
### Contributing to Purpose Mappings
562+
563+
The purpose-based suggestions are powered by a community-driven mapping file at `data/purpose_mapping.yaml`. You can help improve the suggestions by:
564+
565+
1. **Adding new purposes**: Add new categories of applications (e.g., "security", "education", "gaming")
566+
2. **Adding more apps**: Suggest additional applications for existing purposes
567+
3. **Improving descriptions**: Add better descriptions for applications
568+
4. **Adding synonyms**: Help improve the natural language processing by adding more phrase mappings
569+
570+
To contribute:
571+
1. Edit `data/purpose_mapping.yaml` to add your suggestions
572+
2. Test your changes with `python -m archpkg.cli suggest "your-purpose"`
573+
3. Submit a Pull Request with your improvements
574+
575+
Example contribution:
576+
```yaml
577+
# Add to data/purpose_mapping.yaml
578+
security:
579+
- firejail
580+
- tor
581+
- keepassxc
582+
- veracrypt
583+
- wireshark
584+
```
507585
---
508586
509587
## 🛣️ Roadmap
510588
511589
Here’s what’s planned for future releases of **archpkg-helper**:
512590
513-
- 🔧 **Add support for `zypper` (openSUSE)**
514-
Extend backend adapters to cover openSUSE users.
591+
- **Add support for `zypper` (openSUSE)** - COMPLETED
592+
Extended backend adapters to cover openSUSE users.
515593

516594
- ⚡ **Caching layer for faster searches**
517595
Improve performance by reducing repeated lookups across package managers.
@@ -523,7 +601,16 @@ Here’s what’s planned for future releases of **archpkg-helper**:
523601
Build a graphical user interface on top of the CLI for desktop users who prefer point-and-click.
524602

525603
---
604+
<h2 align="center">💬 Join Our Community on Discord</h2>
605+
606+
607+
<p align="center">
608+
<a href="https://discord.gg/bN7ycNdCR">
609+
<img src="assets/joinDiscordIcon.png" alt="Admin Discord" width="500"/>
610+
</a>
611+
</p>
612+
526613

527614
## License
528615

529-
This project is licensed under the [Apache License 2.0](./LICENSE).
616+
This project is licensed under the [Apache License 2.0](./LICENSE).
-8.97 KB
Binary file not shown.
-480 Bytes
Binary file not shown.
-982 Bytes
Binary file not shown.
-816 Bytes
Binary file not shown.
-1.07 KB
Binary file not shown.
-1.15 KB
Binary file not shown.
-1.28 KB
Binary file not shown.
-1.07 KB
Binary file not shown.

0 commit comments

Comments
 (0)