diff --git a/rattail/fablib/composer.py b/rattail/fablib/composer.py new file mode 100644 index 00000000..961bc67e --- /dev/null +++ b/rattail/fablib/composer.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8; -*- +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2017 Lance Edgar +# +# This file is part of Rattail. +# +# Rattail is free software: you can redistribute it and/or modify it under the +# terms of the GNU Affero General Public License as published by the Free +# Software Foundation, either version 3 of the License, or (at your option) +# any later version. +# +# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for +# more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Rattail. If not, see . +# +################################################################################ +""" +Fabric lib for Composer (PHP dependency manager) +""" + +from __future__ import unicode_literals, absolute_import + +from fabric.api import sudo +from fabric.contrib.files import exists + +from rattail.fablib import make_deploy + + +deploy = make_deploy(__file__) + + +def install_composer(user=None): + """ + Install `composer.phar` in current directory + """ + if not exists('composer.phar'): + deploy('composer/install-composer.sh', 'install-composer.sh') + sudo('./install-composer.sh') + sudo('rm install-composer.sh') + if user: + sudo('chown {}: composer.phar'.format(user)) diff --git a/rattail/fablib/deploy/composer/install-composer.sh b/rattail/fablib/deploy/composer/install-composer.sh new file mode 100755 index 00000000..6f01e38f --- /dev/null +++ b/rattail/fablib/deploy/composer/install-composer.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php +exit $RESULT