Еще одно решение для пуcтых папок в Mercurial

Продолжение темы поднятой в статьях Часть1 и часть2

Написал небольшой скрипт который сканирует рабочий проект и рядом в файлик складывает названия пустых папок, который при необходимости можно подправить руками. Если запустить скрипт с флагом create, то он создаст все эти папки.
#! /usr/bin/env php

<?php
/*
 * создание базы с папками #php make.php scan
 * создание папок по базе #php make.php create
 * 
 */
$current_dir = dirname(__FILE__).DIRECTORY_SEPARATOR;
$manager = new FolderManager($current_dir);
if($argv[1] == 'scan'){
	$manager->scan();
} elseif($argv[1] == 'create'){
	$manager->create();
}

class FolderManager{
	protected static $folder_list = array();
	protected static $current_dir;
	protected static $filename = 'empty_folders.dat';
	public function __construct($dir)
	{
		self::$current_dir = $dir;
	}
	public function scan()
	{
		$this->make(self::$current_dir);

		$database = '';
		if(count(self::$folder_list) == 0)
		{
			echo "empty folder not exist\n";exit;
		}
		foreach (self::$folder_list as $folder){
			$database .= $folder."\n";
		}
		file_put_contents(self::$filename,$database);
	}

	private function make($path)
	{
		$h = opendir($path);
		while (FALSE !== ($element = readdir($h)))
		{
			$path_in = $path.$element;
			if ($element == '.' or $element == '..' or !is_dir($path_in))
			{
				continue;
			}
			if(count(scandir($path_in)) == 2)//если папка пуста
			{
				echo 'Adding: '.$path_in."\n";
				self::$folder_list[] = str_replace(self::$current_dir,'',$path_in);
			}
			else
			{
				$this->make($path_in.DIRECTORY_SEPARATOR);
			}
		}
		closedir($h);
	}
	public function create()
	{
		$folder_list = file(self::$filename);
		if(count($folder_list) == 0)
		{
			echo "Database empty \n";exit;
		}
		foreach ($folder_list as $folder)
		{
			$folder = trim($folder);
			if(!file_exists($folder)) {
				if(mkdir($folder))	echo $folder."  - Folder created\n";
			} else {
				echo $folder."  - Folder exist\n";
			}
		}
	}
}

Сканирование:
#php make.php scan

Создание папок:
#php make.php create
  • 0
  • 24 декабря 2009, 12:27
  • admin

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.