dbce6f9fa3
feat: add Ubuntu support via provider-based architecture ( #112 )
...
* feat: add Ubuntu support via provider-based architecture
Implement multi-system support using a provider pattern that enables
phpenv to work with both Homebrew (macOS/Linux) and APT (Ubuntu/Debian
with Ondřej Surý PPA).
- Add provider infrastructure with auto-detection and PHPENV_PROVIDER override
- Refactor existing Homebrew code into __phpenv_provider_homebrew_* functions
- Implement APT provider with PPA setup, shim-based version switching
- Update doctor, versions, and help commands to be provider-aware
- Use XDG-compliant shim directory (~/.local/share/phpenv/shims)
* fix: address PR #112 code review feedback
- Fix semver parsing for complex constraints like ">=8.1 <9.0"
- Add input validation for APT commands to prevent injection
- Use atomic symlink creation to prevent race conditions
- Fix extension uninstall to mirror install package mappings
- Replace unsafe glob with explicit binary list in cleanup
- Remove redundant PATH filtering logic
- Validate PHPENV_PROVIDER against supported providers
- Use exact matching for Homebrew tap names
- Use Fish's string escape for regex escaping
* fix: validate dpkg output before passing to sudo apt-get
Validates package names follow Debian naming rules before using them
in the sudo apt-get remove command. This prevents potential command
injection if dpkg output contains unexpected characters.
Addresses remaining Copilot feedback from PR #112 .
2026-01-24 21:04:52 +02:00
renovate[bot]
00db5127c8
chore(deps): update actions/checkout action (v6.0.1 → v6.0.2) ( #111 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-24 12:01:51 +02:00
renovate[bot]
08678674b7
chore(deps): update ivuorinen/actions action (v2026.01.13 → v2026.01.21) ( #110 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 01:44:25 +00:00
renovate[bot]
24af9a908e
chore(deps): update pre-commit hook adrienverge/yamllint (v1.37.1 → v1.38.0) ( #109 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 08:45:32 +00:00
renovate[bot]
92d03f9d3d
chore(deps): update ivuorinen/actions action (v2026.01.09 → v2026.01.13) ( #108 )
2026-01-15 10:43:57 +02:00
renovate[bot]
06f93435db
chore(deps): update github/codeql-action action (v4.31.9 → v4.31.10) ( #107 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-14 04:48:41 +00:00
renovate[bot]
4009236e20
chore(deps): update ivuorinen/actions action (v2026.01.01 → v2026.01.09) ( #106 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-11 05:45:05 +00:00
renovate[bot]
d540c25f2f
chore(deps)!: update ivuorinen/actions (v2025.11.28 → v2026.01.01) ( #105 )
2026-01-02 09:43:40 +02:00
renovate[bot]
2a092d5a67
chore(deps): update pre-commit hook rhysd/actionlint (v1.7.9 → v1.7.10) ( #104 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-01 09:34:27 +00:00
renovate[bot]
48c010d97c
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.496 → 3.2.497) ( #103 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-01 09:33:30 +00:00
renovate[bot]
242b4b5c54
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.495 → 3.2.496) ( #102 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 21:30:02 +00:00
renovate[bot]
9eaa457925
chore(deps): update github/codeql-action action (v4.31.8 → v4.31.9) ( #101 )
2025-12-18 09:38:43 +02:00
renovate[bot]
566e7b9533
chore(deps): update github/codeql-action action (v4.31.7 → v4.31.8) ( #100 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-14 13:03:07 +00:00
renovate[bot]
4c2dbadffe
chore(deps): update pre-commit hook igorshubovych/markdownlint-cli (v0.46.0 → v0.47.0) ( #99 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 00:46:24 +00:00
renovate[bot]
ebd9cdf127
chore(deps): update github/codeql-action action (v4.31.6 → v4.31.7) ( #98 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-07 05:35:49 +00:00
renovate[bot]
463b3acec4
chore(deps): update actions/checkout action (v6.0.0 → v6.0.1) ( #97 )
2025-12-04 11:31:39 +02:00
renovate[bot]
e571c724a8
chore(deps): update github/codeql-action action (v4.31.5 → v4.31.6) ( #96 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-03 08:06:48 +02:00
renovate[bot]
16dd4802bf
chore(deps): update pre-commit hook editorconfig-checker/editorconfig-checker.python (3.5.0 → 3.6.0) ( #95 )
2025-12-01 23:45:12 +02:00
renovate[bot]
6fb20f194b
chore(deps)!: update actions/checkout (v4 → v6) ( #93 )
2025-11-29 09:59:48 +02:00
renovate[bot]
9de7444ee8
chore(deps)!: update ivuorinen/actions (v25.11.26 → v2025.11.28) ( #94 )
2025-11-29 09:59:19 +02:00
renovate[bot]
0f27fc84ce
chore(deps): update ivuorinen/actions action (v25.11.25 → v25.11.26) ( #90 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-28 16:58:02 +02:00
35634af17e
chore: linting updates, fixes ( #85 )
...
* chore: linting fixes
* chore(deps): update github workflows
* fix(ci): pr-lint permissions
* fix(ci): add missing UID
* fix(ci): pr-lint permissions
* fix(ci): cr tweak
2025-11-28 16:49:12 +02:00
renovate[bot]
a8a78c98e7
chore(deps): update pre-commit hook gitleaks/gitleaks (v8.29.1 → v8.30.0) ( #89 )
2025-11-28 01:08:07 +02:00
renovate[bot]
438b4519f4
chore(deps)!: update renovatebot/pre-commit-hooks (41.173.1 → 42.21.3) ( #71 )
2025-11-26 10:08:27 +02:00
renovate[bot]
6ceb9b21cb
chore(deps)!: update actions/checkout (v5.0.1 → v6.0.0) ( #79 )
2025-11-26 10:06:23 +02:00
renovate[bot]
89140d68e7
chore(deps): update pre-commit hook editorconfig-checker/editorconfig-checker.python (3.4.1 → 3.5.0) ( #86 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 07:29:33 +00:00
renovate[bot]
9d1edf7615
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.494 → 3.2.495) ( #87 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 07:29:15 +00:00
renovate[bot]
93136c6e19
chore(deps): update pre-commit hook rhysd/actionlint (v1.7.8 → v1.7.9) ( #84 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 07:29:02 +00:00
renovate[bot]
36326c59de
chore(deps): update ivuorinen/actions action (25.11.19 → v25.11.25) ( #83 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 07:28:54 +00:00
renovate[bot]
84ddfd00fc
chore(deps): update github/codeql-action action (v4.31.4 → v4.31.5) ( #88 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-26 07:28:48 +00:00
32454c42c4
fix(ci): change CodeQL language from 'javascript' to 'actions'
2025-11-26 09:26:30 +02:00
renovate[bot]
ec946a82f7
chore(deps): update pre-commit hook igorshubovych/markdownlint-cli (v0.45.0 → v0.46.0) ( #81 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-22 07:25:14 +00:00
renovate[bot]
43b8f56e08
chore(deps): update pre-commit hook gitleaks/gitleaks (v8.29.0 → v8.29.1) ( #80 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-22 07:25:08 +00:00
Atef Ramadan
d1e435caaa
fix: add Linuxbrew Cellar path detection and fix variable checking syntax ( #82 )
...
add detecting cellar when using linux homebrew
2025-11-22 09:23:21 +02:00
renovate[bot]
7703de7dc0
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.492 → 3.2.494) ( #76 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 01:35:50 +00:00
renovate[bot]
d1e1f31702
chore(deps): update github/codeql-action action (v4.31.2 → v4.31.4) ( #77 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 01:35:45 +00:00
renovate[bot]
78faa3056d
chore(deps): update actions/checkout action (v5.0.0 → v5.0.1) ( #78 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-20 01:35:41 +00:00
renovate[bot]
8611182657
chore(deps): update ivuorinen/actions action (25.11.4 → 25.11.19) ( #74 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-19 21:33:19 +00:00
renovate[bot]
600da67451
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (41.159.4 → 41.173.1) ( #73 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-12 04:08:03 +00:00
renovate[bot]
e57af906d6
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.490 → 3.2.492) ( #75 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-11 23:30:02 +00:00
renovate[bot]
52ab2113ce
chore(deps): update pre-commit hook gitleaks/gitleaks (v8.28.0 → v8.29.0) ( #72 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 14:06:06 +00:00
renovate[bot]
f94fa14c29
chore(deps): update ivuorinen/actions action (25.11.2 → 25.11.4) ( #69 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 05:16:07 +00:00
renovate[bot]
3962517bc9
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.489 → 3.2.490) ( #70 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-06 07:14:00 +02:00
renovate[bot]
77a1570987
chore(deps): update github/codeql-action action (v4.31.0 → v4.31.2) ( #68 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 23:33:26 +00:00
renovate[bot]
11823a22f5
chore(deps): update pre-commit hook editorconfig-checker/editorconfig-checker.python (3.4.0 → 3.4.1) ( #67 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 23:32:48 +00:00
renovate[bot]
02365eddab
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.488 → 3.2.489) ( #66 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 23:32:38 +00:00
renovate[bot]
742eec5da4
chore(deps): update ivuorinen/actions action (25.10.25 → 25.11.2) ( #65 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-02 22:48:32 +00:00
renovate[bot]
0976206d87
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.487 → 3.2.488) ( #64 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-29 01:51:10 +00:00
renovate[bot]
efd80fc990
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.485 → 3.2.487) ( #60 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 06:37:02 +00:00
renovate[bot]
0356024f52
chore(deps): update github/codeql-action action (v4.30.9 → v4.31.0) ( #61 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 06:36:32 +00:00