Revision 760 (by ahitrov, 2019/01/22 15:11:09) shebang

#!/usr/bin/env perl

##############################################################################
# $HeadURL: svn://cvs1.rambler.ru/cndinst/trunk/skel/GNUmakefile $
# $Id: GNUmakefile 47 2006-06-08 08:45:46Z lonerr $
###############################################################################

use strict;
use warnings "all";

use FindBin;
BEGIN { require "$FindBin::RealBin/../lib/Modules.pm" }

use locale;
use PidFile;
use Data::Dumper;
use Contenido::Globals;
use Contenido::Init;
use Contenido::File;
use Contenido::File::Scheme::FILE;
use Contenido::File::Scheme::HTTP;

# begin
Contenido::Init->init();
PidFile::start($state->{run_dir}, verbose => 1);
my $keeper = Contenido::Keeper->new($state);

my %files;

foreach my $class (map { @{$state->{"available_".$_}} } qw(documents links sections)) {
    if (my $sub = $class->can("extra_properties")) {
        my @extras = grep { lc($_->{"type"}) eq "image" or lc($_->{"type"}) eq "images" } $sub->();
        my @objects = $keeper->get_documents( class => $class, no_limit => 1 );

        foreach my $object (@objects) {
            foreach my $extra (@extras) {
                my $image = $object->get_image($extra->{"attr"});
                if ($image) {
                    if ($extra->{"type"} eq "images") {
                        foreach (values %$image) {
                            next unless ref $_;
                            if ($_->{"filename"}) {
                                $files{$_->{"filename"}}++;
                            }
                            if ($_->{"mini"}{"filename"}) {
                                $files{$_->{"mini"}{"filename"}}++;
                            }
                        }
                    } else {
                        if ($image->{"filename"}) {
                            $files{$image->{"filename"}}++;
                        }
                       if ($image->{"mini"}{"filename"}) {
                           $files{$image->{"mini"}{"filename"}}++;
                       }
                   }
                }
            }
        }
    }
}

foreach my $dir (@{$state->{"files_dir"}}) {
    no strict "refs";
    my $files = &{"Contenido::File::Scheme::".uc(Contenido::File::scheme($dir))."::listing"}($dir);

    foreach my $file (keys %$files) {
        unless (exists $files{$file}) {
            &{"Contenido::File::Scheme::".uc(Contenido::File::scheme($dir))."::remove"}($dir."/".$file);
        }
    }
}

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.