125 lines
2.6 KiB
Perl
125 lines
2.6 KiB
Perl
#
|
|
# Move to Server
|
|
#
|
|
# Monitor the debug and release folders for a new binary.
|
|
# If found,
|
|
# 1 Read the .ino file to find the current version string.
|
|
# 2 Rename the .bin to include the version string.
|
|
# 3 Move it to the server.
|
|
#
|
|
# Searches .ino file for: const String MyVer = "SmartSwitch v1.02.24";
|
|
#
|
|
use strict;
|
|
use warnings;
|
|
|
|
###################### Configuration ###########################
|
|
#
|
|
# Target Server Path
|
|
#
|
|
my $ServerPath = "\\\\server1\\web\\mbed\\ESPbin";
|
|
|
|
# Sleep Time between checks
|
|
#
|
|
my $SleepTime = 5;
|
|
|
|
# Verbose mode
|
|
# 0 = off
|
|
# 1 = highlights
|
|
# 2 = detailed
|
|
#
|
|
my $Verbose = 1;
|
|
|
|
#####################
|
|
|
|
my $continue = 1;
|
|
|
|
$SIG{INT} = sub { $continue = 0; };
|
|
$SIG{TERM} = sub { $continue = 0; };
|
|
|
|
do {
|
|
printf("\n") if ($Verbose > 1);
|
|
printf("MoveToServer check at %s\n", scalar localtime()) if ($Verbose == 1);
|
|
chdir "../Firmware";
|
|
Process();
|
|
Pause($SleepTime);
|
|
} while ($continue);
|
|
|
|
exit;
|
|
|
|
####################################################################
|
|
|
|
|
|
sub Process {
|
|
my $slnFile = "";
|
|
|
|
my @files = glob("*.sln");
|
|
foreach (@files) {
|
|
$slnFile = $_;
|
|
printf(" Found: %s\n", $slnFile) if ($Verbose > 1);
|
|
}
|
|
|
|
if ($slnFile eq "") {
|
|
printf(" *** No Solution Files found ...\n") if ($Verbose == 1);
|
|
return;
|
|
}
|
|
|
|
my $inoFile = $slnFile;
|
|
$inoFile =~ s/(.*)\.sln/$1\.ino/;
|
|
if (!-e $inoFile) {
|
|
printf(" *** %s not found ...\n", $inoFile) if ($Verbose == 1);
|
|
return;
|
|
}
|
|
printf(" Search %s\n", $inoFile) if ($Verbose > 1);
|
|
my $verString = GetVerString($inoFile);
|
|
if ($verString eq "") {
|
|
printf(" *** No Version string in %s ...\n", $inoFile) if ($Verbose == 1);
|
|
return;
|
|
}
|
|
printf(" Version '%s'\n", $verString) if ($Verbose > 1);
|
|
|
|
my $targBin = $slnFile;
|
|
$targBin =~ s/(.*)\.sln/$1\.bin/;
|
|
printf(" Target Bin file is %s\n", $targBin) if ($Verbose > 1);
|
|
|
|
my @Folders = qw(Debug Release);
|
|
foreach my $f (@Folders) {
|
|
printf(" Scanning %s\n", $f) if ($Verbose > 1);
|
|
my $tF = "$f\\$targBin";
|
|
if (-e $tF) {
|
|
printf(" Processing %s\n", $tF) if ($Verbose > 1);
|
|
my $srvrFile = "$ServerPath\\$verString.bin";
|
|
my $cmd = sprintf("move /Y \"%s\" \"%s\"", $tF, $srvrFile);
|
|
printf(" > %s\n", $cmd);
|
|
`$cmd`;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
sub Pause {
|
|
my $dly = shift;
|
|
my $count = 0;
|
|
|
|
while ($count++ < $dly && $continue) {
|
|
sleep(1);
|
|
}
|
|
}
|
|
|
|
sub GetVerString {
|
|
my $iF = shift;
|
|
my $ver = "";
|
|
|
|
open(IF, "<$iF") || return $ver;
|
|
#const String MyVer = "SmartSwitch v1.02.24";
|
|
while (<IF>) {
|
|
if (/String MyVer = \"(.*)\"/) {
|
|
$ver = $1;
|
|
last;
|
|
#close IF;
|
|
#return $ver;
|
|
}
|
|
}
|
|
close IF;
|
|
return $ver;
|
|
}
|