Skip to content
Snippets Groups Projects
Commit d04e2250 authored by jurgenhaas's avatar jurgenhaas
Browse files

#9 Better handling of backup files

parent c3028cf2
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -118,12 +118,10 @@ class Handler {
$twig_loader = new \Twig_Loader_Array([]);
$twig = new \Twig_Environment($twig_loader);
$options['webRoot'] = $webRoot . '/';
$orig_ignored = FALSE;
foreach ($this->getFiles($projectRoot, $webRoot, $settingsPath) as $template => $def) {
$file = $def['dest'] . '/' . $template;
if ($overwrite || !$fs->exists($file)) {
if ($fs->exists($file)) {
$fs->rename($file, $file . '.orig');
}
$twig_loader->setTemplate($template, file_get_contents($pluginRoot . '/templates/' . $template . '.twig'));
$rendered = $twig->render($template, $options);
if (!empty($def['add2yaml']) && isset($options[$template])) {
......@@ -131,6 +129,23 @@ class Handler {
$yaml = array_merge_recursive($yaml, $options[$template]);
$rendered = Yaml::dump($yaml, 9, 2);
}
if ($fs->exists($file)) {
if (md5_file($file) == md5($rendered)) {
continue;
}
$orig_file = $file . '.orig';
if ($fs->exists($orig_file)) {
$fs->remove($orig_file);
}
$fs->rename($file, $orig_file);
if (!$orig_ignored) {
$this->git('ignore *.orig');
$orig_ignored = TRUE;
}
}
else {
$this->git('ignore ' . $template);
}
file_put_contents($file, $rendered);
}
if (isset($def['link']) && ($def['link'] != $settingsPath)) {
......@@ -153,16 +168,6 @@ class Handler {
}
}
// Initialize local git working copy
try {
foreach ($this->getFiles($projectRoot, $webRoot, $settingsPath) as $template => $def) {
$this->git('ignore ' . $template);
}
}
catch (\Exception $ex) {
// We're ignoring this for now
}
$traefik = new Traefik($options['projectname']);
$traefik->update();
}
......@@ -204,65 +209,65 @@ class Handler {
$env = new Dotenv('docker4drupal', $this->io);
$env->put('COMPOSE_PROJECT_NAME', $projectname);
$extra = $this->composer->getPackage()->getExtra() + ['docker4drupal' => []];
$options = $extra['docker4drupal'] + [
'projectname' => $projectname,
'docker0' => [
'ip' => $this->getLocalIpv4('docker0'),
],
'live' => [
'root' => '',
'uri' => '',
'host' => '',
'user' => $env->receive('live_host_username', 'Remote username for host of the live site', getenv('USER')),
],
'drupal' => [
'version' => '8',
],
'php' => [
'version' => '7.0',
'xdebug' => 1,
],
'webserver' => [
'type' => 'nginx',
'version' => '1.13',
],
'varnish' => [
'enable' => 0,
],
'redis' => [
'version' => '4.0',
],
'adminer' => [
'version' => '4.3',
],
'solr' => [
'enable' => 0,
'version' => '6.6',
],
'node' => [
'enable' => 0,
'key' => '',
'path' => '',
],
'memcached' => [
'enable' => 0,
],
'rsyslog' => [
'enable' => 0,
],
'athenapdf' => [
'enable' => 0,
'key' => '',
],
'blackfire' => [
'enable' => 0,
'id' => '',
'token' => '',
],
'webgrind' => [
'enable' => 0,
],
];
$options = NestedArray::mergeDeep([
'projectname' => $projectname,
'docker0' => [
'ip' => $this->getLocalIpv4('docker0'),
],
'live' => [
'root' => '',
'uri' => '',
'host' => '',
'user' => $env->receive('live_host_username', 'Remote username for host of the live site', getenv('USER')),
],
'drupal' => [
'version' => '8',
],
'php' => [
'version' => '7.0',
'xdebug' => 1,
],
'webserver' => [
'type' => 'nginx',
'version' => '1.13',
],
'varnish' => [
'enable' => 0,
],
'redis' => [
'version' => '4.0',
],
'adminer' => [
'version' => '4.3',
],
'solr' => [
'enable' => 0,
'version' => '6.6',
],
'node' => [
'enable' => 0,
'key' => '',
'path' => '',
],
'memcached' => [
'enable' => 0,
],
'rsyslog' => [
'enable' => 0,
],
'athenapdf' => [
'enable' => 0,
'key' => '',
],
'blackfire' => [
'enable' => 0,
'id' => '',
'token' => '',
],
'webgrind' => [
'enable' => 0,
],
], $extra['docker4drupal']);
return $options;
}
......@@ -271,13 +276,9 @@ class Handler {
*
* @param $command
* Git command name, arguments and/or options.
* @throws \Exception
*/
protected function git($command) {
passthru(escapeshellcmd('git -c "user.email=d8-project@lakedrops.com" ' . $command), $exit_code);
if ($exit_code !== 0) {
throw new \Exception('Git returned a non-zero exit code');
}
passthru(escapeshellcmd('git -c "user.email=d8-project@lakedrops.com" ' . $command));
}
private function getLocalIpv4($interface = NULL) {
......
<?php
namespace LakeDrops\Docker4Drupal;
class NestedArray {
public static function mergeDeep() {
return self::mergeDeepArray(func_get_args());
}
public static function mergeDeepArray(array $arrays, $preserve_integer_keys = FALSE) {
$result = [];
foreach ($arrays as $array) {
foreach ($array as $key => $value) {
if (is_int($key) && !$preserve_integer_keys) {
$result[] = $value;
}
elseif (isset($result[$key]) && is_array($result[$key]) && is_array($value)) {
$result[$key] = self::mergeDeepArray([$result[$key], $value], $preserve_integer_keys);
}
else {
$result[$key] = $value;
}
}
}
return $result;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment