Overview

Namespaces

  • Deliverist
    • Builder
      • Commands

Classes

  • Deliverist\Builder\Builder
  • Deliverist\Builder\Commands\ApacheImports
  • Deliverist\Builder\Commands\BowerInstall
  • Deliverist\Builder\Commands\ComposerInstall
  • Deliverist\Builder\Commands\Copy
  • Deliverist\Builder\Commands\CreateDirectory
  • Deliverist\Builder\Commands\GoogleAnalytics
  • Deliverist\Builder\Commands\GoogleClosureCompiler
  • Deliverist\Builder\Commands\LessCompile
  • Deliverist\Builder\Commands\MinifyContent
  • Deliverist\Builder\Commands\PingUrl
  • Deliverist\Builder\Commands\Remove
  • Deliverist\Builder\Commands\Rename
  • Deliverist\Builder\Commands\ReplaceContent

Interfaces

  • Deliverist\Builder\ICommand

Exceptions

  • Deliverist\Builder\BuilderException
  • Deliverist\Builder\CommandException
  • Deliverist\Builder\Commands\RenameException
  • Deliverist\Builder\Exception
  • Deliverist\Builder\FileSystemException
  • Deliverist\Builder\InvalidArgumentException
  • Deliverist\Builder\InvalidStateException
  • Overview
  • Namespace
  • Class
 1:  2:  3:  4:  5:  6:  7:  8:  9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 
<?php

    namespace Deliverist\Builder\Commands;

    use Deliverist\Builder\Builder;
    use Deliverist\Builder\FileSystemException;
    use Deliverist\Builder\InvalidArgumentException;
    use Deliverist\Builder\ICommand;


    class GoogleClosureCompiler implements ICommand
    {
        /**
         * @param  Builder
         * @param  string|string[]
         * @param  string|NULL
         */
        public function run(Builder $builder, $files = NULL)
        {
            if (!isset($files)) {
                throw new InvalidArgumentException("Missing parameter 'files'.");
            }

            if (!is_array($files)) {
                $files = (array) $files;
            }

            foreach ($files as $file) {
                $path = $builder->getPath($file);

                if (!is_file($path)) {
                    throw new FileSystemException("File '$file' not found.");
                }

                $this->compressFile($path);
            }
        }


        private function compressFile($path)
        {
            $content = file_get_contents($path);
            $output = @file_get_contents('https://closure-compiler.appspot.com/compile', FALSE, stream_context_create(array(
                'http' => array(
                    'method' => 'POST',
                    'header' => 'Content-type: application/x-www-form-urlencoded',
                    'content' => 'output_info=compiled_code&js_code=' . urlencode($content),
                )
            )));

            if (!is_string($output)) {
                $error = error_get_last();
                throw new GoogleClosureCompilerException("Unable to minfy: {$error['message']}\n");
            }

            file_put_contents($path, $output);
        }
    }
deliverist/builder v1.0.0 API documentation API documentation generated by ApiGen