source: spip-zone/_plugins_/composer/trunk/formulaires/jouer_composer.php @ 93345

Last change on this file since 93345 was 93345, checked in by marcimat@…, 5 years ago

Mise à jour de la doc.
+ On ne cherche pas à tester la présence du fichier composer.json à chaque hit.
Par contre, on le crée si on est sur la page des plugins ou sur la page composer.

+ Quelques autorisations de plus (et correctement les charger !)

File size: 2.2 KB
Line 
1<?php
2
3function formulaires_jouer_composer_charger_dist() {
4        if (!autoriser('executer', 'composer')) {
5                return null;
6        }
7
8        $valeurs = array();
9        $valeurs['_composer_json'] = file_get_contents(_FILE_COMPOSER_JSON);
10        $valeurs['_composer_phar'] = file_exists(_DIR_COMPOSER . 'composer.phar');
11        $valeurs['message_output'] = "";
12
13        return $valeurs;
14}
15
16function formulaires_jouer_composer_verifier_dist() {
17        $erreurs = array();
18        return $erreurs;
19}
20
21function formulaires_jouer_composer_traiter_dist() {
22        $res = array(
23                'editable' => true
24        );
25
26        $output = array();
27        $err = "";
28
29        if (_request('obtenir')) {
30                list($output, $err) = composer_composer_obtenir();
31        }
32        elseif (_request('self_update')) {
33                list($output, $err) = composer_composer_self_update();
34        }
35        elseif (_request('update')) {
36                list($output, $err) = composer_composer_update();
37        }
38
39
40        if ($err) {
41                $res['message_erreur'] = "Erreur survenue : $err";
42        } else {
43                $res['message_ok'] = "Opération réussie";
44        }
45
46        if (count($output)) {
47                $res['message_output'] = implode("\n", $output);
48                set_request('message_output', $res['message_output']);
49        }
50
51        return $res;
52}
53
54/**
55 * Télécharge composer
56 *
57 * @return array Liste (sorties, erreur)
58**/
59function composer_composer_obtenir() {
60        sous_repertoire(_DIR_COMPOSER);
61        $root = realpath(_DIR_COMPOSER);
62        chdir($root);
63        $cmd = "curl -sS https://getcomposer.org/installer | php 2>&1";
64        exec($cmd, $output, $err);
65        if (!$err) {
66                exec("chmod 775 composer.phar", $output, $err);
67        }
68        chdir(_ROOT_CWD);
69        return array($output, $err);
70}
71
72/**
73 * Met à jour composer.phar
74 *
75 * @return array Liste (sorties, erreur)
76**/
77function composer_composer_self_update() {
78        return composer_composer_run('self-update');
79}
80
81/**
82 * Met à jour les libs composer
83 *
84 * @return array Liste (sorties, erreur)
85**/
86function composer_composer_update() {
87        return composer_composer_run('update');
88}
89
90/**
91 * Exécute la commande indiquée par composer.
92 *
93 * @return array Liste (sorties, erreur)
94**/
95function composer_composer_run($commande) {
96        $root = realpath(_DIR_COMPOSER);
97        chdir($root);
98        $home = "export COMPOSER_HOME=" . _ROOT_RACINE . "tmp";
99        $cmd = "$home && php composer.phar $commande 2>&1";
100        exec($cmd, $output, $err);
101        chdir(_ROOT_CWD);
102        return array($output, $err);
103}
Note: See TracBrowser for help on using the repository browser.