Adjust repo layout, add install script
This commit is contained in:
parent
21f01db9df
commit
22f7e35522
@ -1,3 +0,0 @@
|
|||||||
# scripts/need_compiling
|
|
||||||
|
|
||||||
Each folder in this directory holds a self-contained script/program along with a build script
|
|
53
install.pl
Normal file
53
install.pl
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use File::Copy;
|
||||||
|
use Digest::MD5;
|
||||||
|
|
||||||
|
my $repo_url = "https://git.fjla.uk/fred.boniface/scripts.git";
|
||||||
|
my $repo_dir = "/opt/fred_boniface_scripts_git";
|
||||||
|
my $branch_name = "main";
|
||||||
|
my $install_dir = "/usr/local/bin";
|
||||||
|
|
||||||
|
if (-d $repo_dir) {
|
||||||
|
print "Updating existing local repo...\n";
|
||||||
|
chdir $repo_dir or die "Unable to enter $repo_dir: $!";
|
||||||
|
system("git pull origin $branch_name")
|
||||||
|
} else {
|
||||||
|
print "Cloning repo...\n";
|
||||||
|
system("git clone --branch $branch_name $repo_url $repo_dir");
|
||||||
|
chdir $repo_dir or die "Unable to enter $repo_dir: $1";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $scripts = "$repo_dir/scripts";
|
||||||
|
|
||||||
|
chdir $scripts or die "Unable to change into $scripts: $!";
|
||||||
|
|
||||||
|
print "Installing scripts";
|
||||||
|
|
||||||
|
opendir(my $repo_scripts, $scripts) or die "Unable to open directory: $!";
|
||||||
|
my @script_files = grep { -f "$scripts/$_" } readdir($repo_scripts);
|
||||||
|
closedir($repo_scripts);
|
||||||
|
|
||||||
|
foreach my $file (@script_files) {
|
||||||
|
my $repo_file_path = "$repo_scripts/$file";
|
||||||
|
my $install_file_path = "$install_dir/$file";
|
||||||
|
|
||||||
|
if (!-e $install_file_path || !compare_checksums($repo_file_path, $install_file_path)) {
|
||||||
|
print "Copying $file...\n";
|
||||||
|
copy($repo_file_path, $install_file_path) or die "Copy failed: $!";
|
||||||
|
} else {
|
||||||
|
print "Skipping $file (Checksum matched)\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print "Installation of scripts complete\n";
|
||||||
|
print "Ensure that $install_dir is in your PATH\n";
|
||||||
|
|
||||||
|
sub compare_checksums {
|
||||||
|
my ($file1, $file2) = @_;
|
||||||
|
my $digest1 = Digest::MD5->new->addfile($file1)->hexdigest;
|
||||||
|
my $digest2 = Digest::MD5->new->addfile($file2)->hexdigest;
|
||||||
|
return $digest1 eq $digest2;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user