Skip to content

Commit a1407d4

Browse files
committed
Phpactor installation procedure
Add a phpactor-update function in order to manage Phpactor's installation from this package. As an alternative, let the user configure `phactor-executable` but remove other ways of detecting phpactor.
1 parent 9ca0352 commit a1407d4

File tree

3 files changed

+33
-8
lines changed

3 files changed

+33
-8
lines changed

README.org

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,20 @@ This package is Emacs interface to [[http://phpactor.github.io/phpactor/][Phpact
33

44
*NOTICE*: This package is in development. Since some functions are running, this is released as an /alpha version/.
55

6+
*NOTICE*: Phpactor is also in development stage.
7+
68
#+BEGIN_HTML
79
<a href="http://melpa.org/#/phpactor"><img alt="MELPA: phpactor" src="http://melpa.org/packages/phpactor-badge.svg"></a>
810
<a href="http://stable.melpa.org/#/phpactor"><img alt="MELPA stable: phpactor" src="http://stable.melpa.org/packages/phpactor-badge.svg"></a>
911
#+END_HTML
1012
** Instalation
11-
Please be aware that Phpactor is also in development stage.
12-
A simple installation method is not yet provided, but you can build it using Composer.
13+
14+
After having installed this package, run `phpactor-update` (this will install a supported version of phpactor inside phpactor.el's installation folder).
15+
*NOTICE*: To ensure the appropriate version of Phpactor is installed, please run this command after every upgrade of phpactor.el
16+
17+
Alternatively, you can install Phpactor on your own and configure `phpactor-executable` but please be aware that any change in Phpactor's rpc protocol can introduce breakages.
18+
19+
1320
** Configuration
1421
See https://phpactor.github.io/phpactor/configuration.html
1522

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
"sebastian/diff": "@dev"
3434
},
3535
"config": {
36-
"sort-packages": true
36+
"optimize-autoloader": true,
37+
"classmap-authoritative": true,
38+
"sort-packages": true
3739
}
3840
}

phpactor.el

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
;; Created: 8 Apr 2018
88
;; Version: 0.1.0
99
;; Keywords: tools, php
10-
;; Package-Requires: ((emacs "24.3") (cl-lib "0.5") (f "0.17"))
10+
;; Package-Requires: ((emacs "24.3") (cl-lib "0.5") (f "0.17") (composer "0.1"))
1111
;; URL: https://github.com/emacs-php/phpactor.el
1212
;; License: GPL-3.0-or-later
1313

@@ -48,6 +48,7 @@
4848
(require 'json)
4949
(require 'php-project)
5050
(require 'ring)
51+
(require 'composer)
5152

5253
;; Variables
5354
;;;###autoload
@@ -86,10 +87,23 @@
8687
"Return Phpactor command or path to executable."
8788
(or (when phpactor-executable
8889
(php-project--eval-bootstrap-scripts phpactor-executable))
89-
(executable-find phpactor-command-name)
90-
(let ((vendor-executable (f-join (phpactor-get-working-dir) "vendor/bin/phpactor")))
90+
(let ((vendor-executable (f-join (phpactor-package-directory) "vendor/bin/phpactor")))
9191
(when (file-exists-p vendor-executable)
92-
vendor-executable))))
92+
vendor-executable))
93+
(error "Phpactor not found. Please run phpactor-update")))
94+
95+
(defun phpactor-update ()
96+
"Install or update phpactor inside phpactor.el's folder."
97+
(interactive)
98+
(let ((package-folder (phpactor-package-directory))
99+
(composer-executable (car (composer--find-executable))))
100+
(unless composer-executable (error ("composer not found.")))
101+
(setq default-directory package-folder)
102+
(call-process composer-executable nil (get-buffer-create phpactor-action--buffer-name) nil "install" "--no-dev")))
103+
104+
(defun phpactor-package-directory ()
105+
"Return the folder where phpactor.el is installed."
106+
(file-name-directory(locate-library "phpactor.el")))
93107

94108
(defun phpactor-get-working-dir ()
95109
"Return working directory of Phpactor."
@@ -464,7 +478,9 @@ function."
464478
(cl-defun phpactor-action-dispatch (&key action parameters version)
465479
"Execite action by `NAME' and `PARAMETERS'."
466480
(when (and version (not (equal phpactor--supported-rpc-version version)))
467-
(error "Phpactor uses rpc protocol %s whereas this package requires %s" version phpactor--supported-rpc-version))
481+
(if (phpactor-executable)
482+
(error "Phpactor uses rpc protocol %s but this package requires %s" version phpactor--supported-rpc-version)
483+
(error "Phpactor should be upgraded. Please run phpactor-update")))
468484
(phpactor--add-history 'phpactor-action-dispatch (list :action action :parameters parameters :version version))
469485
(let ((func (cdr-safe (assq (intern action) phpactor-action-table))))
470486
(if func

0 commit comments

Comments
 (0)