misc/convert_fn_join_to_inline_ref.php
<?php // find blueprints -type f -iname '*.template' -exec php vendor/aoepeople/stackformation/misc/convert_fn_join_to_inline_ref.php '{}' \; $file = $argv[1]; if (!is_file($file)) { echo "File not found"; exit(1);} $json = file_get_contents($file); $json = preg_replace_callback( '/{\s*"Fn::Join"\s*:\s*\[\s*"(.*)"\s*,\s*(\[.*\])\s*\]\s*}/sU', function ($matches) { $delimiter = $matches[1]; $pieces = json_decode($matches[2], true); $newPieces = []; foreach ($pieces as $piece) { if (is_array($piece) && isset($piece['Ref'])) { $newPieces[] = '{Ref:'.$piece['Ref'].'}'; } elseif (strpos($piece, "\n") !== false) { // don't touch lines with line breaks (like used in UserData) return $matches[0]; } else { $newPieces[] = $piece; } } return '"' . implode($delimiter, $newPieces) . '"'; }, $json); echo "Writing file $file\n";file_put_contents($file, $json);