Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add better detached mode support for Windows #297

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ php:
- "5.5"
- "5.6"
- "7.0"
- "7.1"
- "nightly"

env:
Expand Down
23 changes: 12 additions & 11 deletions src/system/modules/!composer/languages/de/composer_client.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@
$GLOBALS['TL_LANG']['composer_client']['composerUpdateNecessary'] = 'Dies ist eine inkompatible Version der Composer Bibliothek. Es ist erforderlich, die Composer Bibliothek zu aktualisieren, ansonsten wird der Composer Client nicht wie erwartet funktionieren. ';
$GLOBALS['TL_LANG']['composer_client']['composerUpdateRequired'] = 'Die Composer Version ist älter als 30 Tage, bitte aktualisieren Sie Composer.';
$GLOBALS['TL_LANG']['composer_client']['composerUpdated'] = 'Composer wurde aktualisiert!';
$GLOBALS['TL_LANG']['composer_client']['composer_install_headline'] = 'Composer Installation';
$GLOBALS['TL_LANG']['composer_client']['composer_missing'] = 'Die Composer Bibliothek ist nicht komplett installiert. <br><strong>Composer installieren</strong> klicken, um Composer und alle Abhängigkeiten zu installieren.';
$GLOBALS['TL_LANG']['composer_client']['composer_install_headline'] = 'Composer-Installation';
$GLOBALS['TL_LANG']['composer_client']['composer_missing'] = 'Die Composer-Bibliothek ist nicht komplett installiert. <br><strong>Composer installieren</strong> klicken, um Composer und alle Abhängigkeiten zu installieren.';
$GLOBALS['TL_LANG']['composer_client']['configValid'] = 'Die Konfiguration ist gültig.';
$GLOBALS['TL_LANG']['composer_client']['confirmRemove'] = 'Möchten Sie das Paket %s wirklich löschen?';
$GLOBALS['TL_LANG']['composer_client']['confirmRemovePackages'] = 'Sind Sie sicher, dass Sie die folgenden Pakete entfernen wollen?
%s';
$GLOBALS['TL_LANG']['composer_client']['could_not_disable_apc'] = 'APC konnte nicht deaktiviert werden.<br>
APC und Composer produzieren zusammen immer wieder Fehler, bitte <a href="http://php.net/apc" target="_blank">APC</a> deaktivieren.';
$GLOBALS['TL_LANG']['composer_client']['curl_missing'] = 'cURL ist notwendig um Pakete herunterzuladen.<br>Bitte das PHP Modul <a href="http://php.net/curl" target="_blank">curl</a> installieren oder aktivieren. ';
$GLOBALS['TL_LANG']['composer_client']['curl_missing'] = 'cURL ist notwendig um Pakete herunterzuladen.<br>Bitte das PHP-Modul <a href="http://php.net/curl" target="_blank">curl</a> installieren oder aktivieren. ';
$GLOBALS['TL_LANG']['composer_client']['databaseUpdated'] = 'Datenbank aktualisiert. Es wurden %d Anfragen ausgeführt.';
$GLOBALS['TL_LANG']['composer_client']['databaseUptodate'] = 'Die Datenbank ist aktuell.';
$GLOBALS['TL_LANG']['composer_client']['dependency_graph_headline'] = 'Abhängigkeitsgraph';
$GLOBALS['TL_LANG']['composer_client']['dependency_of'] = 'Abhängigkeit von %s';
$GLOBALS['TL_LANG']['composer_client']['dependency_recursion'] = '(zirkulierende Abhängigkeit)';
$GLOBALS['TL_LANG']['composer_client']['detached'] = 'Paket Update';
$GLOBALS['TL_LANG']['composer_client']['detached'] = 'Paket-Update';
$GLOBALS['TL_LANG']['composer_client']['discard_changes_no'] = 'lokale Änderungen behalten (Update anhalten)';
$GLOBALS['TL_LANG']['composer_client']['discard_changes_stash'] = 'Update durchführen & lokale Änderung übernehmen';
$GLOBALS['TL_LANG']['composer_client']['discard_changes_yes'] = 'lokale Änderungen verwerfen';
Expand Down Expand Up @@ -90,8 +90,8 @@
</li>
</ul>';
$GLOBALS['TL_LANG']['composer_client']['migrate_intro'] = '
<p>Lieber Nutzer, dies ist die neue Contao Paketverwaltung, basierend auf dem PHP Abhängigkeitsverwalter <a href="http://getcomposer.org/" target="_blank">Composer</a>.</p>
<p>Dies ist eine öffentliche Beta-Phase. Wir brauchen deine Hilfe diese Verwaltung zu testen und uns Feedback zu geben damit Composer schon bald die neue Contao Erweiterungsverwaltung werden kann.</p>';
<p>Lieber Nutzer, dies ist die neue Contao-Paketverwaltung, basierend auf dem PHP-Abhängigkeitsverwalter <a href="http://getcomposer.org/" target="_blank">Composer</a>.</p>
<p>Dies ist eine öffentliche Beta-Phase. Wir brauchen deine Hilfe diese Verwaltung zu testen damit sie bald die Standard-Erweiterungsverwaltung von Contao wird.</p>';
$GLOBALS['TL_LANG']['composer_client']['migrate_mode']['0'] = 'Migrationsmodus';
$GLOBALS['TL_LANG']['composer_client']['migrate_mode']['1'] = 'Wir haben gesehen das Du %d Erweiterungen aus der alten Erweiterungsverwaltung nutzt. Nun wollen wir wissen, was wir mit diesen tun sollen.';
$GLOBALS['TL_LANG']['composer_client']['migrate_none']['0'] = 'Nichts tun (only for experts!)';
Expand Down Expand Up @@ -150,7 +150,7 @@
$GLOBALS['TL_LANG']['composer_client']['package_support_wiki'] = 'Wiki';
$GLOBALS['TL_LANG']['composer_client']['package_type'] = 'Typ';
$GLOBALS['TL_LANG']['composer_client']['package_version'] = 'Version';
$GLOBALS['TL_LANG']['composer_client']['php_version'] = 'PHP Version <strong>PHP %1$s</strong> oder neuer wird vorrausgesetzt. Deine Installation läuft mit PHP Version <strong>%2$s</strong>.<br>Bitte aktualisiere deine PHP Version.';
$GLOBALS['TL_LANG']['composer_client']['php_version'] = 'PHP-Version <strong>PHP %1$s</strong> oder neuer wird vorrausgesetzt. Deine Installation läuft mit PHP-Version <strong>%2$s</strong>.<br>Bitte aktualisiere deine PHP-Version.';
$GLOBALS['TL_LANG']['composer_client']['pinPackage'] = 'Auf Version verankern';
$GLOBALS['TL_LANG']['composer_client']['pluginNotFound'] = 'Contao Composer Plugin wurde nicht gefunden!';
$GLOBALS['TL_LANG']['composer_client']['removeCandidate'] = 'Paket %s wurde gelöscht. Bitte aktualisieren Sie die Pakete um die Änderung zu übernehmen.';
Expand Down Expand Up @@ -189,15 +189,16 @@
$GLOBALS['TL_LANG']['composer_client']['vcs_requirements'] = '
<ul class="preconditions">
<li class="{if gitAvailable==true}pass{else}fail{endif}">
git ist {if gitAvailable==true}verfügbar{else}nicht verfügbar, die meisten Pakete können nicht installiert werden!{endif}
git ist {if gitAvailable==true}verfügbar{else}nicht verfügbar, die meisten Pakete können nicht installiert werden!{endif}
</li>
<li class="{if hgAvailable==true}pass{else}fail{endif}">
mercurial ist {if hgAvailable==true}verfügbar{else}nicht verfügbar, manche Pakete können nicht installiert werden!{endif}
mercurial ist {if hgAvailable==true}verfügbar{else}nicht verfügbar, viele Pakete können wahrscheinlich nicht installiert werden!{endif}
</li>
<li class="{if svnAvailable==true}pass{else}fail{endif}">
svn ist {if svnAvailable==true}verfügbar{else}nicht verfügbar, manche Pakete können nicht installiert werden!{endif}
svn ist {if svnAvailable==true}verfügbar{else}nicht verfügbar, viele Pakete können wahrscheinlich nicht installiert werden!{endif}
</li>
</ul>';
</ul>
';
$GLOBALS['TL_LANG']['composer_client']['version_bugfix'] = 'Bugfix Release %s (%s)';
$GLOBALS['TL_LANG']['composer_client']['version_exact'] = 'exakte Version %s';
$GLOBALS['TL_LANG']['composer_client']['version_feature'] = 'Feature Release %s (%s)';
Expand Down
14 changes: 8 additions & 6 deletions src/system/modules/!composer/languages/de/tl_settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
*
* @license http://www.gnu.org/licenses/lgpl-3.0.html LGPL
*
* last-updated: 2014-05-23T03:00:44+02:00
* last-updated: 2016-11-18T02:00:13+01:00
*/

$GLOBALS['TL_LANG']['tl_settings']['composerAutoUpdateLibrary']['0'] = 'Composer Bibliothek automatisch aktualisieren';
$GLOBALS['TL_LANG']['tl_settings']['composerAutoUpdateLibrary']['1'] = 'Die Composer Bibliothek (auch bekannt als <code>composer.phar</code>) wird automatisch nach 30 Tagen aktualisiert.';
$GLOBALS['TL_LANG']['tl_settings']['composerAutoUpdateLibrary']['0'] = 'Composer-Bibliothek automatisch aktualisieren';
$GLOBALS['TL_LANG']['tl_settings']['composerAutoUpdateLibrary']['1'] = 'Die Composer-Bibliothek (auch bekannt als <code>composer.phar</code>) wird automatisch nach 30 Tagen aktualisiert.';
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionMode']['0'] = 'Ausführungsmodus';
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionMode']['1'] = 'Wählen Sie den Ausführungsmodus der Composer Binärdatei aus.';
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionMode']['1'] = 'Wählen Sie den Ausführungsmodus der Composer-Binärdatei aus.';
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionModes']['detached']['0'] = 'als eigenständiger Prozess';
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionModes']['detached']['1'] = 'Composer wird als eigenständiger Unterprozess unabhängig im Hintergrund ausgeführt. Dies ist leider auf einigen Systemen nicht erlaubt bzw. nicht möglich. (Bitte fragen Sie Ihren Provider, ob Ihr Webspace das Ausführen von Hintergrundprozessen erlaubt.) Diese Methode hat nahezu keine Einschränkungen.';
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionModes']['inline']['0'] = 'während der aktuellen http-Anfrage';
Expand All @@ -23,13 +23,15 @@
$GLOBALS['TL_LANG']['tl_settings']['composerExecutionModes']['process']['1'] = 'Composer wird als Unterprozessaufruf als externes Programm ausgeführt. Dieser Modus ist in der Regel schneller, aber nur auf Systemen lauffähig, die proc_open() unterstützen. Er wird zusätzlich von den PHP-Laufzeitlimitierungen begrenzt.';
$GLOBALS['TL_LANG']['tl_settings']['composerPhpPath']['0'] = 'PHP-Pfad/Befehl';
$GLOBALS['TL_LANG']['tl_settings']['composerPhpPath']['1'] = 'Der Pfad oder Befehl zum PHP-Binary.';
$GLOBALS['TL_LANG']['tl_settings']['composerRemoveRepositoryTables']['0'] = 'Extension Repository Tabellen löschen';
$GLOBALS['TL_LANG']['tl_settings']['composerProfiling']['0'] = 'Profiling aktivieren';
$GLOBALS['TL_LANG']['tl_settings']['composerProfiling']['1'] = 'Zeige Informationen zu Zeitablauf und Speicherverbrauch.';
$GLOBALS['TL_LANG']['tl_settings']['composerRemoveRepositoryTables']['0'] = 'Extension Repository-Tabellen löschen';
$GLOBALS['TL_LANG']['tl_settings']['composerRemoveRepositoryTables']['1'] = 'Bei Aktivierung werden die alten ER2-Tabellen im Composer Datenbank-Update-Tool bei der nächsten Aktualisierung zum Löschen angeboten.';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosity']['0'] = 'Ausführlichkeit der Protokollierung';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosity']['1'] = 'Die Konsole hat 5 Stufen der Ausführlichkeit. Wenn Sie keine Probleme bei der Benutzung der Paketverwaltung haben, sollten Sie diese Einstellung bei der Standard-Stufe belassen.';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_DEBUG']['0'] = 'Debug-Ausgabe';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_DEBUG']['1'] = 'Diese Stufe wird alle Meldungen anzeigen. Diese Meldungen sind für den Standard-Benutzer uninteressant.';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_NORMAL']['0'] = 'Standard Ausführlichkeit';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_NORMAL']['0'] = 'Standard-Ausführlichkeit';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_NORMAL']['1'] = 'Die Standard-Stufe der Ausführlichkeit - diese sollten Sie benutzen, wenn Sie keine Probleme mit der Paketverwaltung haben.';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_QUIET']['0'] = 'Halt die Klappe! :-)';
$GLOBALS['TL_LANG']['tl_settings']['composerVerbosityLevels']['VERBOSITY_QUIET']['1'] = 'Es erfolgt keine Ausgabe.';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
* @copyright ContaoCommunityAlliance 2013
* @author Christian Schiffler <[email protected]>
* @author Tristan Lins <[email protected]>
* @author Yanick Witschi <[email protected]>
* @author Fritz Michael Gschwantner <[email protected]>
* @package Composer
* @license LGPLv3
* @filesource
Expand Down Expand Up @@ -164,6 +166,19 @@ private function buildCmd($packages, $dryRun)
$cmd .= ' --dry-run';
}

switch ($this->composer->getConfig()->get('preferred-install')) {
case 'source':
$cmd .= ' --prefer-source';
break;
case 'dist':
$cmd .= ' --prefer-dist';
break;
case 'auto':
default:
// noop
break;
}

if ($packages) {
$cmd .= ' --with-dependencies ' . implode(' ', array_map('escapeshellarg', $packages));
}
Expand Down Expand Up @@ -240,7 +255,21 @@ protected function runDetached($packages, $dryRun)
escapeshellarg(TL_ROOT . '/' . DetachedController::OUT_FILE_PATHNAME)
);

$processId = shell_exec($cmd);
if (substr(php_uname(), 0, 7) == "Windows") {
$proc = proc_open(
$cmd,
array(
array('pipe', 'r'),
array('pipe', 'w'),
array('pipe', 'w')
),
$pipes
);
$procStatus = proc_get_status($proc);
$processId = $procStatus['pid'];
} else {
$processId = shell_exec($cmd);
}

$pidFile = new \File(DetachedController::PID_FILE_PATHNAME);
$pidFile->write(trim($processId));
Expand Down Expand Up @@ -270,6 +299,8 @@ private function determineRuntimeMode()
$functions = array('shell_exec');
if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
$functions[] = 'posix_kill';
} else {
$functions[] = 'proc_open';
}
}

Expand Down
5 changes: 2 additions & 3 deletions src/system/modules/!composer/src/Runtime.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class Runtime
"type": "project",
"license": "proprietary",
"require": {
"contao-community-alliance/composer-client": "~0.12"
"contao-community-alliance/composer-client": "~0.14"
},
"prefer-stable": true,
"minimum-stability": "dev",
Expand All @@ -83,8 +83,7 @@ class Runtime
"repositories": [
{
"type": "composer",
"url": "https?://legacy-packages-via.contao-community-alliance.org",
"allow_ssl_downgrade": false
"url": "https://legacy-packages-via.contao-community-alliance.org"
},
{
"type": "artifact",
Expand Down