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

#!/usr/bin/env perl

use strict;

my ($module, $version, $mode) = @ARGV;
$module =~ s/-/::/g;
my $installed;

unless ($module && $version) {
	print "export PERL_CHECKED=cancel";
	exit;
}

eval "require $module;";
if ($@) {
	print "export PERL_CHECKED=install";
	exit;
}


my @parts = split /\./, $module->VERSION();
$installed->{version} = join(".", $parts[0], join("", @parts[1 .. $#parts]) || ());
(my $path=$module)    =~ s/::/\//g;
$installed->{path}    = $INC{$path.".pm"};

if ($installed->{version} >= $version || $mode eq 'pass') {
	unless ($ENV{DRY_RUN}||'' eq 'yes') {
		print STDERR "##############################################################################\n";
		print STDERR "# Found installed module: $module\n";
		print STDERR "# Version:  $installed->{version}\n";
		print STDERR "# Location: $installed->{path}\n";
		print STDERR "#\n";
		print STDERR "# Skipped version:  $version\n";
		print STDERR "##############################################################################\n";
		sleep 2;
	}
	print "export PERL_CHECKED=skip";
	exit;
}

print STDERR "##############################################################################\n";
print STDERR "# Found installed module: $module\n";
print STDERR "# Version:  $installed->{version}\n";
print STDERR "# Location: $installed->{path}\n";
print STDERR "#\n";
print STDERR "# Would you like continue to install version: $version ?\n";
print STDERR "##############################################################################\n";

my $a;
while (1) {
	print STDERR "[I]nstall, [S]kip, [C]ancel ? ";
	$a = lc(scalar(<STDIN>));
	chomp $a;
	last if $a eq 'i' || $a eq 's' || $a eq 'c';
}
print "export PERL_CHECKED=install" if $a eq 'i';
print "export PERL_CHECKED=skip"    if $a eq 's';
print "export PERL_CHECKED=cancel"  if $a eq 'c';

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

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

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

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

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