Skip to content

Instantly share code, notes, and snippets.

@earnhardt3rd
Created June 19, 2023 14:03
Show Gist options
  • Select an option

  • Save earnhardt3rd/533c86eb0ff295e9439cff2bf6d7541e to your computer and use it in GitHub Desktop.

Select an option

Save earnhardt3rd/533c86eb0ff295e9439cff2bf6d7541e to your computer and use it in GitHub Desktop.
require 'getopts.pl';
Getopts('m:d:t');
my $MODE = uc($opt_m) || "";
my $DEBUG = $opt_d || 0;
if (defined $opt_t) { my %TEST = &_RFC();}
1;
sub _RFC {
my $PACKAGE = shift || "";
my $rfcTitle = " ***************************************\n PDM_RFC PACKAGE DIRECTORY SELECTION\n ***************************************";
my $pakDir="";
my $pakFile="";
my $repFile="";
if ($PACKAGE eq "") {
my $rfcStart = "***************************************\n PDM_RFC ~ Refresh/Create Request For Change\n ***************************************";
my $rfcType = &Ask($rfcStart,"Select Exisitng","Create New");
if (uc($rfcType) =~ /NEW/) {
$PACKAGE = &_PACKAGE_NAME();
} else {
$PACKAGE = &_SELECT_PACKAGE($rfcTitle,"NEXT_RELEASE","TRUE");
}
}
if (uc($PACKAGE) eq "NEW") {
print " GET NEW PACKAGE NAME!\n";
$PACKAGE = &_PACKAGE_NAME();
}
if (-d $PACKAGE) {
$PACKAGE=&File($PACKAGE);
$pakDir = &Parent($PACKAGE) . $SLASH . $PACKAGE;
$pakFile = $pakDir . $SLASH . $PACKAGE . "_rfc${FET}";
} else {
print " VERIFY PACKAGE SYNTAX:$PACKAGE!\n" if $DEBUG > 1;
my $CPM = &_CHECK_MASK($PACKAGE,$PACKAGE_MASK);
$pakDir = $PAK . $SLASH . $PACKAGE;
if (uc($CPM) !~ /VALID/) {
&displayMessageInBox(" MASK CHECK FAILED!\n $CPM\n");
if (! -d $pakDir) {
$PACKAGE = &_SELECT_PACKAGE($rfcTitle,"NEXT_RELEASE","TRUE");
$pakDir = $PAK . $SLASH . $PACKAGE;
}
} else {
print " MASK CHECK PASSED!\n" if $DEBUG > 1;
print " $CPM\n" if $DEBUG > 1;
}
$pakFile = $pakDir . $SLASH . $PACKAGE . "_rfc${FET}";
}
if (! -d $pakDir) {
&buildPath($pakDir);
}
my $pakCO="";
my $modDir = $pakDir . $SLASH . "03_MODS";
if (-d $modDir) {
my $modFile = $modDir . $SLASH . $PACKAGE . "_mods${FET}";
if (! -f $modFile) {
print " WARNING! Could not locate modFile in modDir\n";
print " modDir :$modDir\n";
print " modFile:$modFile\n";
print " trying old format\n";
$modFile = $modDir . $SLASH . $PACKAGE . "${FET}";
}
if (-f $modFile) {
my $rans = &Ask(" Do you want to REFRESH _RELEASE folder?","Yes","No","Exit");
if ($rans eq "Exit") {&_EXIT_CLEAN();}
if ($rans eq "Yes") {
print " Collecting latest modifications for $modFile\n";
&_GET("$modFile,_${HOST}-${DT}-${TM}");
&_GET("$modFile,_RELEASE");
}
} else {
print " Old format FAILDED!\n";
}
} else {
print " ** No 03_MODS Folder found! **\n" if $DEBUG > 1;
}
print " pakPACK:$PACKAGE\n" if $DEBUG > 99;
print " pakDIR :$pakDir\n" if $DEBUG > 99;
print " pakFile:$pakFile\n" if $DEBUG > 99;
my $pakSCOPEFile = $pakDir . $SLASH . "_scope";
my $pakTODOFile = $pakDir . $SLASH . "_todo";
my $pakCHGFile = $pakDir . $SLASH . "_chg";
&_RFC_REVIEW($PACKAGE,"Scope",$pakSCOPEFile,"TRUE");
&_RFC_REVIEW($PACKAGE,"ChangeOrder",$pakCHGFile,"TRUE");
chdir($pakDir);
my $packageHeader = &_PACKAGE_HEADER($PACKAGE);
if (-f $pakFile) {&replaceFile($pakFile);}
open (PFH,"> $pakFile");
print PFH "${packageHeader}\n";
if (-f $pakSCOPEFile) {
print PFH "\n";
print PFH "::------------ PACKAGE SCOPE ----------------\n";
open (SFH,"< $pakSCOPEFile");
while (<SFH>) {
my $line = $_;
chomp($line);
print PFH ":: $line\n";
}
close(SFH);
}
if (-f $pakTODOFile) {
print PFH "\n";
print PFH "::------------ PACKAGE TO DO ----------------\n";
open (SFH,"< $pakTODOFile");
while (<SFH>) {
my $line = $_;
chomp($line);
print PFH ":: $line\n";
}
close(SFH);
}
if (-f $pakCHGFile) {
print PFH "\n";
print PFH "::----------- CHANGE ORDER(S) ---------------\n";
open (CFH,"< $pakCHGFile");
while (<CFH>) {
my $line = $_;
chomp($line);
print PFH ":: $line\n";
}
close(CFH);
}
undef %FILES;
proc_dirs($pakDir);
my %RFC;
foreach my $file(sort keys %FILES) {
print " F:$file == $FILES{$file}\n";
if ($file =~ /replaced/) {
next;
}
if ($file =~ /_rfc\${FET}/) {
next;
}
my @FOLDERS = split('_-_',$FILES{$file});
for (my $f=0;$f<=scalar(@FOLDERS)-1 ;$f++) {
if (! exists($RFC{$FOLDERS[$f]})) {$RFC{$FOLDERS[$f]}="";}
if ($RFC{$FOLDERS[$f]} eq "") {
$RFC{$FOLDERS[$f]} = $file;
} else {
$RFC{$FOLDERS[$f]} = $RFC{$FOLDERS[$f]} . "-_-" . $file;
}
}
}
foreach my $key(sort keys %RFC) {
my $PDIR = uc($key);
$PDIR =~ s/.*PACKAGE\\//g;
print " P: $PDIR\n" if $DEBUG > 0;
my @FTREE = split('_-_',&_PATH_STRING($PDIR));
my $ftCount = scalar(@FTREE);
if ($ftCount eq "1") {
print " $FTREE[0]\n";
} else {
my $pad;
for (my $p=1;$p<=$ftCount ;$p++) {
$pad.=".";
}
print " ${pad}$FTREE[-1]\n";
}
}
foreach my $key(sort keys %RFC) {
chdir($key);
my $PDIR = uc($key);
$PDIR =~ s/.*PACKAGE\\//g;
print " P: $PDIR\n" if $DEBUG > 0;
my @FTREE = split('_-_',&_PATH_STRING($PDIR));
my $ftFlag=0;
for (my $ft=0;$ft<=scalar(@FTREE)-1 ;$ft++) {
print " $ft $FTREE[$ft]\n" if $DEBUG > 0;
if ($FTREE[$ft] =~ /^_/) {
$ftFlag++;
}
}
if ($ftFlag > 0) {
print "SKIPPING DETAILS!\n" if $DEBUG > 0;
next;
}
print " P: $PDIR\n";
if ($PDIR ne $PACKAGE) {
print PFH "${PDIR}\n";
#print PFH "---------\n";
}
my @LIST = split('-_-',$RFC{$key});
for (my $i=0;$i<=scalar(@LIST)-1 ;$i++) {
my $fn = $LIST[$i];
if ($fn =~ /^_/) {
print " --F: ${fn} SKIP '^_'\n";
if ($PDIR ne $PACKAGE) {
print PFH "${fn}::SKIP-'^_'\n" if $DEBUG > 0;
}
next;
}
if ($fn =~ /\.txt$/ or $fn =~ /${FET}$/ or $fn =~ /\.del$/ or $fn =~ /\.dirt$/) {
print " --F: ${fn} READ\n";
if ($PDIR ne $PACKAGE) {
print PFH "${fn}\n";
}
open (LFH,"< $fn");
while (<LFH>) {
my $ln = $_;
chomp($ln);
if ($PDIR ne $PACKAGE) {
print PFH "$ln\n";
} else {
print PFH "$ln\n";
}
}
close(LFH);
} else {
print " --F: ${fn} SKIP READ\n";
if ($PDIR ne $PACKAGE) {
print PFH "${fn}::SKIP-READ\n" if $DEBUG > 0;
}
}
}
if ($PDIR eq $PACKAGE) {
print PFH "\n\nInternal Details\n----------------\n";
}
}
close(PFH);
if ($repFile ne "") {
if (-f $repFile) {
my $difChk = &_FILE_DIF($pakFile,$repFile);
print " DIF CHK:$difChk\n";
if ($difChk =~ /NO_DIF/) {
print " NO DIFF: Unlink ( $repFile )\n";
unlink $repFile;
}
} else {
print " Could not find replace file ( $repFile )\n";
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment