BEGIN {
use
vars
qw($VERSION @ISA @EXPORT @EXPORT_OK)
;
$VERSION
= 0.314;
@ISA
=
qw(Exporter)
;
@EXPORT
=
qw(
$NOK
run_Edtk_dev
IdUniqueSur7
lastLong
lastCourt
delSp
)
;
@EXPORT_OK
=
qw(
check_EDTK_DIR wait_Enter
tree_Directory_Completion
clean_full_dir file_list
prep_Edtk_Data
)
}
our
$NOK
=-1;
sub
check_EDTK_DIR () {
while
((
my
$cle
,
my
$valeur
) =
each
(
%ENV
)){
if
(
$cle
=~/EDTK\_DIR/) {
env_Var_Completion(
$valeur
);
tree_Directory_Completion(
$valeur
);
}
}
1;
}
sub
tree_Directory_Completion ($){
my
$tree
=
shift
;
my
@listDir
=
split
(/[\/\\]/,
$tree
);
$tree
=
""
;
if
(-e
"$listDir[0]/$listDir[1]"
) {
for
(
my
$i
=0 ;
$i
le
$#listDir
;
$i
++) {
$tree
.=
$listDir
[
$i
].
"/"
;
if
(-e
$tree
){
}
elsif
(-d
$tree
){
}
else
{
warn
"-> mkdir, create $tree\n"
;
eval
{
mkdir
$tree
;
} ;
die
"ERR. mkdir $tree $@"
if
$@;
}
}
}
1;
}
sub
run_Edtk_dev() {
import
oEdtk::tuiEdtk;
my
$iniEdtk
=ini_Edtk_Conf;
conf_To_Env(
$iniEdtk
,
'DEFAULT'
);
conf_To_Env(
$iniEdtk
,
'ENVDESC'
);
if
(
$ENV
{EDTK_DIR_BASE} eq
""
) {
not_Configured();
exit
$NOK
;
}
&check_EDTK_DIR
;
start_Screen();
my
$styleApp
=
$ENV
{EDTK_DIR_SCRIPT}.
"/"
.
$ENV
{EDTK_PRGNAME};
env_Var_Completion(
$styleApp
);
env_Var_Completion(
$ENV
{EDTK_DIR_APPTMP});
warn
"INFO : "
.nowTime().
" -START- \n"
;
my
$doclean
= 1;
if
(-e
"$styleApp."
.
$ENV
{EDTK_EXT_COMSET}) {
import
oEdtk::libC7;
my
$work_file
=
$ENV
{EDTK_FDATWORK}.
"."
.
$ENV
{EDTK_EXT_WORK};
env_Var_Completion(
$work_file
);
&conf_To_Env
(
$iniEdtk
,
'COMSET'
);
my
$ctrl
=
&prep_Edtk_Data
(
$ENV
{EDTK_FDATAIN}.
"."
.
$ENV
{EDTK_EXT_DATA});
warn
"INFO : "
.nowTime().
" -END Perl- \n"
;
if
(
$ctrl
eq
$NOK
) {
warn
"ERROR : return $? in prep_Edtk_Data\n"
;
&wait_Enter
();
exit
$NOK
;
}
else
{
}
if
(c7_Control_Bal(
$work_file
) eq
$NOK
) {
warn
"ERROR : return $? in c7_Control_Bal\n"
;
&wait_Enter
();
exit
$NOK
;
}
else
{
}
if
(
defined
$ENV
{EDTK_TESTDATE}) { oe_set_sys_date(
$ENV
{EDTK_TESTDATE}) };
$ENV
{EDTK_DOC_OUTPUT}=
"$ENV{EDTK_FDATAOUT}.$ENV{EDTK_EXT_PDF}"
;
$ENV
{EDTK_EXT_DEFAULT}=
$ENV
{EDTK_EXT_PDF};
if
(c7EdtkComp(
"PDF"
) eq
$NOK
) {
warn
"ERROR : return $? in c7EdtkComp\n"
;
&wait_Enter
();
exit
$NOK
;
}
else
{
warn
"INFO : Compo seem good\n"
;
}
if
(c7EdtkEmit(
"PDF"
) eq
$NOK
) {
warn
"ERROR : return $? in c7EdtkEmit\n"
;
&wait_Enter
();
exit
$NOK
;
}
else
{
warn
"INFO : Emit seem good\n"
;
}
}
else
{
$doclean
= 0;
$ENV
{EDTK_DOC_OUTPUT}=
"$ENV{EDTK_FDATAOUT}.$ENV{EDTK_EXT_WORK}"
;
$ENV
{EDTK_EXT_DEFAULT}=
$ENV
{EDTK_EXT_WORK};
chdir
(
$ENV
{EDTK_DIR_APPTMP})
or
die
"Cannot change current directory: $!\n"
;
my
$ctrl
=
&prep_Edtk_Data
(
$ENV
{EDTK_FDATAIN}.
"."
.
$ENV
{EDTK_EXT_DATA});
warn
"INFO : "
.nowTime().
" -END Extract- \n"
;
if
(
$ctrl
eq
$NOK
) {
warn
"ERROR : return $? in prep_Edtk_Data\n"
;
&wait_Enter
();
exit
$NOK
;
}
else
{
}
}
warn
"INFO : "
.nowTime().
" -END- \n"
;
if
(
$doclean
) {
warn
"INFO : clean temp\n"
;
clean_full_dir(
$ENV
{EDTK_DIR_APPTMP});
}
stop_Screen();
1;
}
sub
prep_Edtk_Data ($;$$) {
my
$command
=
"$ENV{EDTK_DIR_APP}/$ENV{EDTK_PRGNAME}/$ENV{EDTK_PRGNAME}.$ENV{EDTK_EXT_PERL}"
;
my
$arg1
=
shift
;
my
$arg2
=
shift
||
""
;
my
$option
=
shift
||
""
;
env_Var_Completion(
$arg2
);
warn
"$command $arg1 $arg2\n"
;
env_Var_Completion(
$command
);
env_Var_Completion(
$arg1
);
env_Var_Completion(
$option
);
eval
{
system
(
$command
,
$arg1
,
$option
);
};
if
($?){
warn
" ERROR -> $@"
;
warn
" ERROR $command $arg1 $arg2 return $? "
;
return
$NOK
;
}
1;
}
sub
wait_Enter() {
print
"\nPause, taper <enter> pour continuer...\n"
;
until
(<STDIN>) {
}
1;
}
sub
delSp(\$){
my
$rChaine
=
shift
;
return
${
$rChaine
} =~s/\s//go;
}
sub
IdUniqueSur6 () {
my
$rId
=
shift
;
my
%hListeId
;
my
$cpt
=0;
${
$rId
} =
sprintf
(
"%-6.6s"
,${
$rId
});
${
$rId
} =~s/\s/x/g;
while
(
exists
(
$hListeId
{${
$rId
}})) {
${
$rId
} =
sprintf
(
"%-4.4s%0.2d"
,${
$rId
},
$cpt
++);
}
$hListeId
{${
$rId
}} =1;
1;
}
{
my
$appelIUS7
=0;
sub
IdUniqueSur7 () {
my
(
$refId
,
$rInit
)=
@_
;
if
(
$rInit
) {
$appelIUS7
=${
$rInit
}}
else
{
$appelIUS7
++};
${
$refId
}=
sprintf
(
"%-7.7s"
,${
$refId
});
${
$refId
}=~s/\s/x/g;
if
(
exists
(
$hListeId
{${
$refId
}})){
${
$refId
}=
sprintf
(
"%-4.4s%0.3d"
,${
$refId
},
$appelIUS7
);
my
$cpt
=97;
while
(
exists
(
$hListeId
{${
$refId
}})) {
${
$refId
}=
sprintf
(
"%-3.3s%0.3d%1.1s"
,${
$refId
},
$appelIUS7
,
chr
(
$cpt
++));
die
&logger
(
$NOK
,
"impossible de creer une clef unique"
)
if
(
$cpt
>= 123);
}
}
$hListeId
{${
$refId
}}=1;
return
1;
}
}
sub
lastLong($) {
my
$chaine
=
shift
;
$chaine
=~s/-/ /g;
$chaine
=~s/_/ /g;
trimSP(
$chaine
);
my
@mots
=
split
(
" "
,
$chaine
);
my
(
$mot
,
$motLong
);
my
$taille
=0;
while
(
$mot
=
shift
(
@mots
)){
if
(
length
(
$mot
)>=
$taille
) {
$taille
=
length
(
$mot
);
$motLong
=
$mot
;
}
}
return
$motLong
;
}
sub
lastCourt ($) {
my
$chaine
=
shift
;
$chaine
=~s/-/ /g;
$chaine
=~s/_/ /g;
trimSP(
$chaine
);
my
@mots
=
split
(
" "
,
$chaine
);
my
(
$mot
,
$motCourt
);
my
$taille
=1000;
while
(
$mot
=
shift
(
@mots
)){
if
(
length
(
$mot
)<=
$taille
) {
$taille
=
length
(
$mot
);
$motCourt
=
$mot
;
}
}
return
$motCourt
;
}
sub
clean_full_dir ($;$){
my
(
$membre
,
$option
,
$key
,
@listRep
);
$membre
=
shift
;
$option
=
shift
;
$option
||=
""
;
my
$suppr_motif
;
$suppr_motif
=
".*"
;
$membre
.=
"/"
;
$membre
=~s/\\+/\//g;
$membre
=~s/\/+/\//g;
unshift
(
@listRep
,
$membre
);
$key
=
pop
@listRep
;
ITEMS:
for
(;
$key
;){
eval
{
opendir
(DIR,
$key
);
};
if
($?){
warn
" WARNING opendir(DIR, $key) return $?\n"
;
next
ITEMS ;
}
$membre
=
readdir
(DIR);
for
(;
$membre
;){
if
(
$membre
ne
"."
&&
$membre
ne
".."
){
if
(-d
$key
.
$membre
){
push
(
@listRep
,
"$key$membre/"
);
}
else
{
my
$file
=
$key
.
$membre
;
if
(
$file
=~m{
$suppr_motif
}){
if
(
$option
ne
"--dry-run"
) {
warn
"suppresion de $file\n"
if
(
$option
eq
"--verbose"
);
unlink
(
$file
);
}
else
{
warn
"--dry-run : $file\n"
;
}
}
}
}
$membre
=
readdir
(DIR);
}
closedir
DIR;
$key
=
pop
@listRep
;
}
1;
}
sub
file_list ($$;$){
my
(
$key
,
@listRep
,
@listFile
);
my
$membre
=
shift
;
my
$motif
=
shift
;
my
$opt
=
shift
;
$opt
||=
""
;
$membre
.=
"/"
;
$membre
=~s/\\+/\//g;
$membre
=~s/\/+/\//g;
unshift
(
@listRep
,
$membre
);
$key
=
pop
@listRep
;
ITEMS:
for
(;
$key
;){
eval
{
opendir
(DIR,
$key
);
};
if
($?){
warn
" WARNING opendir(DIR, $key) return $?\n"
;
next
ITEMS ;
}
$membre
=
readdir
(DIR);
for
(;
$membre
;){
if
(
$membre
ne
"."
&&
$membre
ne
".."
){
if
(-d
$key
.
$membre
){
push
(
@listRep
,
"$key$membre/"
);
}
else
{
my
$file
=
$key
.
$membre
;
if
(
$file
=~m{
$motif
}){
push
(
@listFile
,
$file
);
}
}
}
$membre
=
readdir
(DIR);
}
closedir
DIR;
$key
=
pop
@listRep
;
}
return
@listFile
;
}
END {
}
1;