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