Created
June 19, 2023 14:03
-
-
Save earnhardt3rd/533c86eb0ff295e9439cff2bf6d7541e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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