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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user