protected function save(array $files)
    {
        echo Line::begin('Saving generated files ...', Line::GREEN)->end();

        foreach ($files as $file) {
            $file->save();
        }

        echo Line::begin()->nl();
        echo Line::begin('Copying generated files ...', Line::GREEN)->nl();

        $fileList = $this->buildFileList($this->getTempPath(), $this->basePath);
        $this->copyFiles($fileList);

        echo Line::begin('Removing temporary files ...', Line::GREEN)->nl();

        $this->removeDirectory($this->getTempPath());
    }