Compare commits
No commits in common. "30a09ff809c40b61734e417f10d5af0296eb4927" and "d69b385526b0b52a7c0e8ed0efbb3dc62f73c589" have entirely different histories.
30a09ff809
...
d69b385526
36 changed files with 768 additions and 425 deletions
13
.gitignore
vendored
13
.gitignore
vendored
|
|
@ -3,16 +3,3 @@
|
||||||
.vstags
|
.vstags
|
||||||
*.tdy
|
*.tdy
|
||||||
*.bak
|
*.bak
|
||||||
**/.vscode
|
|
||||||
.vscode/*
|
|
||||||
!.vscode/settings.json
|
|
||||||
!.vscode/tasks.json
|
|
||||||
!.vscode/launch.json
|
|
||||||
!.vscode/extensions.json
|
|
||||||
!.vscode/*.code-snippets
|
|
||||||
|
|
||||||
# Local History for Visual Studio Code
|
|
||||||
.history/
|
|
||||||
|
|
||||||
# Built Visual Studio Code Extensions
|
|
||||||
*.vsix
|
|
||||||
4
05_fuse
Executable file
4
05_fuse
Executable file
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#Copy this to /etc/pm/sleep.d
|
||||||
|
#Unmount all sshfs mounts before system goes to sleep so tasks do not refuse to sleep
|
||||||
|
mount -l -t fuse.sshfs | awk -F " " '{print "fusermount -u " $3}' | bash
|
||||||
22
README.md
22
README.md
|
|
@ -1,18 +1,4 @@
|
||||||
# Various shell utility scripts
|
# ZSH Bash and other config files for personal use
|
||||||
|
# File processing scripts to archive financial files from previous year
|
||||||
## File processing
|
## TODO
|
||||||
Archive financial files from previous year and set up directory structure for current year
|
None
|
||||||
|
|
||||||
## gnome
|
|
||||||
Old customizer scripts for gnome
|
|
||||||
|
|
||||||
## nextcloud
|
|
||||||
WIP - Install all missing needed modules for Nextcloud on a server
|
|
||||||
|
|
||||||
## utility
|
|
||||||
Miscellaneous scripts, e.g. set screen brightness from command line (bug workaround)
|
|
||||||
|
|
||||||
## Other
|
|
||||||
* Backup and restore scripts for packages installed on Solus OS
|
|
||||||
* Set up a Solus OS development environment (update needed)
|
|
||||||
* Backup and restore scripts for Linux systems
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
# archive_statements.pl and archive_taxes.pl
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
cpanm -S File::Find::Rule File::Copy::Recursive File::DirCompare Time::Piece Test2::V0 Test2::Plugin::NoWarnings Modern::Perl
|
|
||||||
|
|
@ -1,35 +1,87 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
use Modern::Perl;
|
use strict;
|
||||||
use ProcessDirectories;
|
use warnings;
|
||||||
|
|
||||||
# Script to archive the financial data from the previous year
|
# Script to archive the financial data from the previous year
|
||||||
|
use Time::Piece;
|
||||||
|
use File::Basename;
|
||||||
|
use File::Find::Rule;
|
||||||
|
use File::Copy::Recursive qw(dircopy);
|
||||||
|
use File::DirCompare;
|
||||||
use Carp qw( croak );
|
use Carp qw( croak );
|
||||||
# use File::Basename;
|
|
||||||
# use File::Find::Rule;
|
|
||||||
# use File::Copy::Recursive qw(dircopy);
|
|
||||||
# use File::DirCompare;
|
|
||||||
# use Getopt::Long qw(GetOptionsFromArray);
|
|
||||||
use Time::Piece qw/localtime/;
|
|
||||||
|
|
||||||
my $now = localtime;
|
my $now = localtime;
|
||||||
my $year = $now->year;
|
my $year = $now->year;
|
||||||
|
print "Current year: $year\n";
|
||||||
|
|
||||||
|
# Get year to archive from current year
|
||||||
my $lastyear = $now->add_years(-1)->year;
|
my $lastyear = $now->add_years(-1)->year;
|
||||||
print("Current year: $year Last year: $lastyear\n");
|
print("Last year: $lastyear\n");
|
||||||
|
|
||||||
# Define and create folders
|
# Define and create folders
|
||||||
my $financial_folder = '/home/tracey/Documents/financial/current_year/';
|
my $financial_folder = '/home/tracey/Documents/financial/current_year/';
|
||||||
my $financial_archive_folder = '/home/tracey/Documents/financial/1_financial_archives/';
|
my $financial_archive_folder =
|
||||||
my $lastyear_folder = $financial_archive_folder . $lastyear . '_FinancialArchives';
|
'/home/tracey/Documents/financial/1_financial_archives/';
|
||||||
|
my $lastyear_folder =
|
||||||
|
$financial_archive_folder . $lastyear . 'FinancialArchives';
|
||||||
|
my @folders =
|
||||||
|
( $financial_folder, $financial_archive_folder, $lastyear_folder );
|
||||||
|
|
||||||
|
print("Copying current directories to archive folder\n");
|
||||||
|
print("From: $financial_folder\n");
|
||||||
|
print("To: $lastyear_folder\n");
|
||||||
|
dircopy( $financial_folder, $lastyear_folder )
|
||||||
|
or croak "Could not copy directories $!";
|
||||||
|
|
||||||
create_archive_dirs ( $financial_folder, $lastyear_folder );
|
# Make sure contents match before we do any Deleting
|
||||||
|
# croak on errors to guard against data losss
|
||||||
# Make sure contents match before we do any deleting
|
my $same_result = compare_dirs( $financial_folder, $lastyear_folder );
|
||||||
# croak on errors to guard against data loss
|
croak "Error: The folders are not the same!" unless ( $same_result == 1 );
|
||||||
# my $same_result = compare_dirs( $financial_folder, $lastyear_folder );
|
|
||||||
croak "Error: The source and destintion folder contents are not the same!" unless ( compare_dirs( $financial_folder, $lastyear_folder ) );
|
|
||||||
|
|
||||||
# Delete all files from current year from archive folders
|
# Delete all files from current year from archive folders
|
||||||
# Also delete files from last year in current year folder
|
# Also delete files from last year in current year folder
|
||||||
clean_dirs( $financial_folder, $lastyear_folder, $year, $lastyear );
|
delete_dirs( $financial_folder, $lastyear_folder, $year, $lastyear );
|
||||||
|
|
||||||
|
sub compare_dirs {
|
||||||
|
my ( $dir1, $dir2 ) = @_;
|
||||||
|
my $same = 1;
|
||||||
|
print("Making sure the copy was complete and all files match\n");
|
||||||
|
File::DirCompare->compare(
|
||||||
|
$dir1, $dir2,
|
||||||
|
sub {
|
||||||
|
my ( $a, $b ) = @_;
|
||||||
|
if ( !$b ) {
|
||||||
|
printf "Only in %s: %s\n", dirname($a), basename($a);
|
||||||
|
$same = 0;
|
||||||
|
}
|
||||||
|
elsif ( !$a ) {
|
||||||
|
printf "Only in %s: %s\n", dirname($b), basename($b);
|
||||||
|
$same = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print "Files $a and $b differ\n";
|
||||||
|
$same = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
print("Diff of directories done\n");
|
||||||
|
return $same;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub delete_dirs {
|
||||||
|
my ( $new_dir, $old_dir, $curr_year, $last_year ) = @_;
|
||||||
|
print("Deleting files from current year $curr_year in archives\n");
|
||||||
|
print("and files from last year $last_year from current folder\n");
|
||||||
|
|
||||||
|
my @this_year_files =
|
||||||
|
File::Find::Rule->file()->name("*$curr_year*")->in($old_dir);
|
||||||
|
my @last_year_files =
|
||||||
|
File::Find::Rule->file()->name("*$last_year*")->in($new_dir);
|
||||||
|
|
||||||
|
unlink @this_year_files;
|
||||||
|
print("Deleted all $curr_year files from the folder for $last_year\n");
|
||||||
|
unlink @last_year_files;
|
||||||
|
print("Deleted all $last_year files from the folder for $curr_year\n");
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
use Modern::Perl;
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
use Time::Piece;
|
use Time::Piece;
|
||||||
use File::Find::Rule; # find all the subdirectories of a given directory
|
use File::Find::Rule; # find all the subdirectories of a given directory
|
||||||
|
|
@ -20,7 +21,7 @@ print("Last year was $lastyear and tax year was $lasttaxyear\n");
|
||||||
# Define and create folders
|
# Define and create folders
|
||||||
my ( $financial_folder, $financial_archive_folder, $lastyear_folder, $lasttaxyear_folder );
|
my ( $financial_folder, $financial_archive_folder, $lastyear_folder, $lasttaxyear_folder );
|
||||||
$financial_folder = '/home/tracey/Documents/financial/current_year/';
|
$financial_folder = '/home/tracey/Documents/financial/current_year/';
|
||||||
$financial_archive_folder = '/home//Documents/financial/1_financial_archives/';
|
$financial_archive_folder = '~/Documents/financial/1_financial_archives/';
|
||||||
$lastyear_folder = $financial_archive_folder . $lastyear . 'FinancialArchives';
|
$lastyear_folder = $financial_archive_folder . $lastyear . 'FinancialArchives';
|
||||||
$lasttaxyear_folder = $financial_archive_folder . $lasttaxyear . 'TaxArchives';
|
$lasttaxyear_folder = $financial_archive_folder . $lasttaxyear . 'TaxArchives';
|
||||||
my @folders = ( $financial_folder, $financial_archive_folder, $lastyear_folder, $lasttaxyear_folder );
|
my @folders = ( $financial_folder, $financial_archive_folder, $lastyear_folder, $lasttaxyear_folder );
|
||||||
|
|
|
||||||
|
|
@ -1,125 +0,0 @@
|
||||||
package ProcessDirectories;
|
|
||||||
use Modern::Perl;
|
|
||||||
# VERSION
|
|
||||||
# AUTHORITY
|
|
||||||
# ABSTRACT: Get current subdirectories in current year directory and copy to archive directory
|
|
||||||
use Carp qw( croak );
|
|
||||||
use File::Basename;
|
|
||||||
use File::Find::Rule;
|
|
||||||
use File::Copy::Recursive qw(dircopy);
|
|
||||||
use File::DirCompare;
|
|
||||||
use Pod::Usage;
|
|
||||||
# use Time::Piece qw/localtime/;
|
|
||||||
|
|
||||||
sub create_archive_dirs {
|
|
||||||
my ( $source_dir, $dest_dir ) = @_;
|
|
||||||
unless ( -d $source_dir ) {
|
|
||||||
die "Source directory '$source_dir' does not exist, please create it";
|
|
||||||
}
|
|
||||||
|
|
||||||
print("Copying current directories to archive folder\n");
|
|
||||||
print("From: $source_dir\n");
|
|
||||||
print("To: $dest_dir\n");
|
|
||||||
dircopy( $source_dir, $dest_dir )
|
|
||||||
or croak "Could not copy directories $!";
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub compare_dirs {
|
|
||||||
my ( $dir1, $dir2 ) = @_;
|
|
||||||
my $same = 1;
|
|
||||||
print("Making sure all directories and files match between source and destination\n");
|
|
||||||
File::DirCompare->compare(
|
|
||||||
$dir1, $dir2,
|
|
||||||
sub {
|
|
||||||
my ( $a, $b ) = @_;
|
|
||||||
if ( !$b ) {
|
|
||||||
printf "Only in %s: %s\n", dirname($a), basename($a);
|
|
||||||
$same = 0;
|
|
||||||
}
|
|
||||||
elsif ( !$a ) {
|
|
||||||
printf "Only in %s: %s\n", dirname($b), basename($b);
|
|
||||||
$same = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
print "Files $a and $b differ\n";
|
|
||||||
$same = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return $same;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub clean_dirs {
|
|
||||||
my ( $new_dir, $old_dir, $curr_year, $last_year ) = @_;
|
|
||||||
|
|
||||||
my @this_year_files =
|
|
||||||
File::Find::Rule->file()->name("*$curr_year*")->in($old_dir);
|
|
||||||
my @last_year_files =
|
|
||||||
File::Find::Rule->file()->name("*$last_year*")->in($new_dir);
|
|
||||||
|
|
||||||
unlink @this_year_files;
|
|
||||||
print("Deleted all files for $curr_year from the folder for $last_year\n");
|
|
||||||
unlink @last_year_files;
|
|
||||||
print("Deleted all files for $last_year from the folder for $curr_year\n");
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
||||||
|
|
||||||
=pod
|
|
||||||
|
|
||||||
=head1 NAME
|
|
||||||
|
|
||||||
ProcessDirectories
|
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
|
||||||
|
|
||||||
Methods for copying and processing a directory of files for the past year and this year
|
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
|
||||||
|
|
||||||
use ProcessDirectories
|
|
||||||
|
|
||||||
create_archive_dirs ( $source_dir, $dest_dir );
|
|
||||||
compare_dirs( $source_dir, $dest_dir );
|
|
||||||
clean_dirs( $source_dir, $dest_dir, $year, $lastyear );
|
|
||||||
|
|
||||||
=head1 METHODS
|
|
||||||
|
|
||||||
=head2
|
|
||||||
C<create_archive_dirs>: Copies the directory structure and contents of a source file to the archive / destination directory.
|
|
||||||
|
|
||||||
=head3
|
|
||||||
Usage:
|
|
||||||
create_archive_dirs( $source_dir, $destination_dir );
|
|
||||||
|
|
||||||
=head2
|
|
||||||
C<compare_dirs>: Compares the content of two specified directories. Provides feedback on the results. Returns 1 if the source and destination match, 0 otherwise.
|
|
||||||
|
|
||||||
=head3
|
|
||||||
Usage:
|
|
||||||
compare_dirs( $source_dir, $destination_dir );
|
|
||||||
|
|
||||||
=head2
|
|
||||||
C<clean_dirs>: This method accepts the following parameters:
|
|
||||||
|
|
||||||
=over 4
|
|
||||||
|
|
||||||
=item source_dir
|
|
||||||
|
|
||||||
=item destination_dir
|
|
||||||
|
|
||||||
=item this_year
|
|
||||||
|
|
||||||
=item last_year
|
|
||||||
|
|
||||||
=back
|
|
||||||
|
|
||||||
=head3
|
|
||||||
Usage:
|
|
||||||
clean_dirs( $source_dir, $destination_dir, 2023, 2022 );
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
use Test2::V0;
|
|
||||||
use Test2::Plugin::Times;
|
|
||||||
use Test2::Plugin::ExitSummary;
|
|
||||||
use Test2::Plugin::NoWarnings;
|
|
||||||
use FindBin qw($Bin);
|
|
||||||
use lib "$Bin/../lib";
|
|
||||||
|
|
||||||
|
|
||||||
plan(1);
|
|
||||||
BEGIN {
|
|
||||||
use ProcessDirectories;
|
|
||||||
|
|
||||||
pass('Module loads correctly.');
|
|
||||||
}
|
|
||||||
|
|
@ -1,79 +0,0 @@
|
||||||
use Test2::V0;
|
|
||||||
use Test2::Plugin::Times;
|
|
||||||
use Test2::Plugin::ExitSummary;
|
|
||||||
use Test2::Plugin::NoWarnings;
|
|
||||||
use FindBin qw($Bin);
|
|
||||||
use File::Path::Tiny;
|
|
||||||
use Time::Piece qw/localtime/;
|
|
||||||
|
|
||||||
use lib "$Bin/../lib";
|
|
||||||
use ProcessDirectories;
|
|
||||||
|
|
||||||
|
|
||||||
plan(2);
|
|
||||||
|
|
||||||
# Preconditions
|
|
||||||
my $now = localtime;
|
|
||||||
my $year = $now->year;
|
|
||||||
my $lastyear = $now->add_years(-1)->year;
|
|
||||||
diag("Current year: $year Last year: $lastyear\n");
|
|
||||||
|
|
||||||
## Define and create test source folder
|
|
||||||
my $current_year_dir = 't/current_year/';
|
|
||||||
my $archive_folder = 't/1_archives/';
|
|
||||||
my $prev_year_dir = $archive_folder . $lastyear . '_Archives';
|
|
||||||
diag("Source test dir $current_year_dir Dest test dir $prev_year_dir");
|
|
||||||
|
|
||||||
if(!File::Path::Tiny::mk($current_year_dir)) {
|
|
||||||
die "Could not create test source directory: '$current_year_dir': $!";
|
|
||||||
}
|
|
||||||
|
|
||||||
my @test_files = qw( 2003_file-1 2003_file-2 2002_file-1 2002_file-2 2002_file-3 );
|
|
||||||
for my $file (@test_files) {
|
|
||||||
create_file($current_year_dir . '/' . $file);
|
|
||||||
}
|
|
||||||
|
|
||||||
# Begin testing
|
|
||||||
ProcessDirectories::create_archive_dirs( $current_year_dir, $prev_year_dir );
|
|
||||||
ok( ( -d $prev_year_dir ), "Previous year archive directory was created" );
|
|
||||||
|
|
||||||
|
|
||||||
ok( ProcessDirectories::compare_dirs( $current_year_dir, $prev_year_dir ), "Previous year archive directory contents matches current directory contents" );
|
|
||||||
|
|
||||||
|
|
||||||
# clean_dirs
|
|
||||||
|
|
||||||
# End Testing
|
|
||||||
|
|
||||||
# Cleanup
|
|
||||||
# if(!File::Path::Tiny::rm($current_year_dir)) {
|
|
||||||
# die "Could not remove test source directory: '$current_year_dir': $!";
|
|
||||||
# }
|
|
||||||
# if(!File::Path::Tiny::rm($archive_folder)) {
|
|
||||||
# die "Could not remove test archive directory: '$archive_folder': $!";
|
|
||||||
# }
|
|
||||||
|
|
||||||
sub create_file {
|
|
||||||
my $filepath = shift;
|
|
||||||
open (my $fh, ">", $filepath) or die "Can't open file '$filepath' for writing: $!";
|
|
||||||
|
|
||||||
# you can control the range of characters here
|
|
||||||
my $minimum = 4;
|
|
||||||
my $range = 16;
|
|
||||||
my $num_bytes = '100';
|
|
||||||
|
|
||||||
for (my $bytes = 0; $bytes < $num_bytes; $bytes += 4) {
|
|
||||||
my $rand = int(rand($range ** 4));
|
|
||||||
my $string = '';
|
|
||||||
for (1..4) {
|
|
||||||
$string .= chr($rand % $range + $minimum);
|
|
||||||
$rand = int($rand / $range);
|
|
||||||
}
|
|
||||||
print $fh $string;
|
|
||||||
}
|
|
||||||
|
|
||||||
close($fh) or warn "Can't close file '$filepath': $!";
|
|
||||||
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
use Modern::Perl;
|
|
||||||
use Carp qw/carp croak/;
|
|
||||||
|
|
||||||
use Test2::V0;
|
|
||||||
use Test2::Tools::Subtest qw/subtest_streamed/;
|
|
||||||
use Test2::Plugin::ExitSummary;
|
|
||||||
# use Test2::Tools::Exception qw/dies lives/;
|
|
||||||
use Test2::Plugin::NoWarnings;
|
|
||||||
# use Cwd qw(cwd);
|
|
||||||
use File::Path qw(remove_tree make_path);
|
|
||||||
use Time::Piece qw/localtime/;
|
|
||||||
|
|
||||||
# Order is important
|
|
||||||
use FindBin qw($Bin);
|
|
||||||
use lib "$Bin/../lib";
|
|
||||||
use ProcessDirectories;
|
|
||||||
|
|
||||||
use File::Temp qw/ tempfile tempdir /;
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
13
gitea/.gitignore
vendored
Normal file
13
gitea/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
44
gitea/backup-gitea-bin.pl
Executable file
44
gitea/backup-gitea-bin.pl
Executable file
|
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# backup_gitea_bin.pl
|
||||||
|
# Author: Tracey Clark
|
||||||
|
# Created: 2019-06-20
|
||||||
|
# You must have a mail transport agent installed to run this script
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
### TEST CODE ###
|
||||||
|
my $gitea_bin='/home/tracey/tmp/testbin';
|
||||||
|
my $gitea_current_version='1';
|
||||||
|
my %binary_file = (
|
||||||
|
input => $gitea_bin,
|
||||||
|
version => $gitea_current_version,
|
||||||
|
);
|
||||||
|
my ( %opts ) = %binary_file;
|
||||||
|
my $input = $opts{input};
|
||||||
|
my $version = $opts{version};
|
||||||
|
my $gitea_bin_backup = '/home/tracey/tmp/testbin.' . $gitea_current_version . '.bz2';
|
||||||
|
|
||||||
|
### TEST CODE ###
|
||||||
|
# my ( %opts ) = %{shift()};
|
||||||
|
# my $input = $opts{input};
|
||||||
|
# my $version = $opts{version};
|
||||||
|
printf("Backing up the current binary\n");
|
||||||
|
printf("Input in backup_bin script is $input\n and version is $version\n");
|
||||||
|
|
||||||
|
|
||||||
|
# my $gitea_bin_backup = '/home/gitea/bin/gitea.' . $gitea_current_version . '.bz2';
|
||||||
|
printf("Gitea bin backup will be $gitea_bin_backup\n");
|
||||||
|
# Do this with a system call to make a compressed copy of the current binary
|
||||||
|
# bzip2 -k file.txt
|
||||||
|
# my $status = system("vi", "fred.txt");
|
||||||
|
# if (($status >>=8) != 0) {
|
||||||
|
# die "Failed to run vi";
|
||||||
|
# }
|
||||||
|
|
||||||
|
# HEREHERE how to specify output file??
|
||||||
|
my $bzip_status = system("/bin/bzip2 -k $input");
|
||||||
|
if (($bzip_status >>=8) != 0) {
|
||||||
|
die "Failed to run bzip2";
|
||||||
|
}
|
||||||
355
gitea/update-gitea.pl
Executable file
355
gitea/update-gitea.pl
Executable file
|
|
@ -0,0 +1,355 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# Update gitea based on version provided
|
||||||
|
# Author: Tracey Clark
|
||||||
|
# Created: 2019-03-04
|
||||||
|
# You must have a mail transport agent installed to run this script
|
||||||
|
|
||||||
|
# Note: Daily backups are also being run from cron
|
||||||
|
# /home/gitea/gitea_backup.sh
|
||||||
|
|
||||||
|
# Re-write to use this dir according to gitea docs
|
||||||
|
# https://docs.gitea.io/en-us/install-from-binary/
|
||||||
|
# Get binary from system rather than hard code
|
||||||
|
# Stop gitea with systemctl before file copy
|
||||||
|
# Set right mod & perms?
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use LWP::UserAgent;
|
||||||
|
use IO::Compress::Bzip2 qw(bzip2 $Bzip2Error);
|
||||||
|
use File::Basename;
|
||||||
|
use JSON;
|
||||||
|
use Sort::Versions;
|
||||||
|
use Getopt::Long qw(GetOptions);
|
||||||
|
use Term::ANSIColor qw(:constants);
|
||||||
|
use feature qw(say);
|
||||||
|
use MIME::Lite;
|
||||||
|
use utf8;
|
||||||
|
use open ':std', ':encoding(UTF-8)';
|
||||||
|
use Encode qw(encode encode_utf8 );
|
||||||
|
|
||||||
|
my ( $verbose, $info );
|
||||||
|
|
||||||
|
GetOptions(
|
||||||
|
'info!' => \$info,
|
||||||
|
'verbose!' => \$verbose,
|
||||||
|
);
|
||||||
|
|
||||||
|
##########################################
|
||||||
|
### The user must set these variables ###
|
||||||
|
my $email = 'gitea-update@tlcnet.info';
|
||||||
|
my $filetype = '-linux-amd64';
|
||||||
|
##########################################
|
||||||
|
|
||||||
|
# https://api.github.com/repos/go-gitea/gitea/releases/latest
|
||||||
|
# This URL will only have one version listed
|
||||||
|
my $gitea_bin_dir = '/usr/local/bin/';
|
||||||
|
my $gitea_bin = $gitea_bin_dir . '/gitea';
|
||||||
|
my $gitea_current_version_string = `$gitea_bin --version`;
|
||||||
|
my $alphanum_ver = 0;
|
||||||
|
|
||||||
|
chomp $gitea_current_version_string;
|
||||||
|
unless ( defined $gitea_current_version_string ) {
|
||||||
|
my $status = "❌ [DIE]: Unable to get the version of the gitea binary on the system: $!";
|
||||||
|
notification('failed ❌', $status);
|
||||||
|
die RED "$status", RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
my %binary_file = get_current_binary($gitea_current_version_string);
|
||||||
|
my $gitea_current_version = $binary_file{'version'};
|
||||||
|
my $baseURL = q{https://github.com/go-gitea/gitea/};
|
||||||
|
my $latestURL = q{https://api.github.com/repos/go-gitea/gitea/releases/latest};
|
||||||
|
|
||||||
|
# https://hubpages.com/technology/Use-Perl-to-access-REST-API
|
||||||
|
# Spin up the browser object
|
||||||
|
my $ua = LWP::UserAgent->new(
|
||||||
|
cookie_jar => {}, # keep cookies in RAM but not persistent between sessions
|
||||||
|
);
|
||||||
|
|
||||||
|
my $resp = $ua->get($latestURL);
|
||||||
|
my $latest_release_hash = decode_json( $resp->content )
|
||||||
|
or die "[DIE]: Unable to parse the version data! Output is:\n $resp";
|
||||||
|
|
||||||
|
my $orig_tag = $latest_release_hash->{tag_name};
|
||||||
|
# print "[TLC DEBUG]: ORIG TAG is $orig_tag\n";
|
||||||
|
my $tag = $orig_tag;
|
||||||
|
substr( $tag, 0, 1, '' );
|
||||||
|
my $release_id = $latest_release_hash->{id}; # Works
|
||||||
|
printf( YELLOW
|
||||||
|
"[INFO] Latest upstream version: $tag\n Release ID $release_id\n", RESET);
|
||||||
|
my $unz_filename = 'gitea-' . $tag . $filetype;
|
||||||
|
#ex: gitea-1.7.6-linux-amd64
|
||||||
|
my $download_dir = '/home/gitea/bin/';
|
||||||
|
my $download_filename = $unz_filename . '.xz';
|
||||||
|
|
||||||
|
if ( defined $verbose ) {
|
||||||
|
printf( YELLOW
|
||||||
|
"[INFO]\nRelease id: $release_id\nUncompressed filename: $unz_filename\nDownload file target: $download_filename\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ( versioncmp( $gitea_current_version, $tag ) == -1 ) {
|
||||||
|
printf(
|
||||||
|
"[INFO] Version tag is greater than the system version, proceeding with update\n"
|
||||||
|
);
|
||||||
|
backup_bin( \%binary_file );
|
||||||
|
|
||||||
|
my $download_url = get_download_url( $download_filename, $release_id );
|
||||||
|
print("Downloading the compressed binary\n");
|
||||||
|
print("[INFO] Download URL we got from the sub is $download_url\n");
|
||||||
|
`wget -P $download_dir $download_url`;
|
||||||
|
my $xz_file = $download_dir . $download_filename;
|
||||||
|
|
||||||
|
if ( defined $info ) {
|
||||||
|
print YELLOW "[INFO] xz file is $xz_file\n", RESET;
|
||||||
|
}
|
||||||
|
install_bin($download_filename);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my $status = '✅ Version tag upstream matches the system version, no update needed';
|
||||||
|
print "[TLC DEBUG] TAG is $tag\n";
|
||||||
|
print( YELLOW "[INFO] $status\n", RESET );
|
||||||
|
notification('not needed ✅', $status, $gitea_current_version, $tag);
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $gitea_status = check_gitea_status();
|
||||||
|
if ( $gitea_status =~ /active/ ) {
|
||||||
|
print( GREEN "[INFO] Gitea service is active\n", RESET );
|
||||||
|
}
|
||||||
|
unless ( $gitea_status =~ /active/ ) {
|
||||||
|
my $status = '❌ [DIE] Status of gitea service is no good!';
|
||||||
|
print( RED "[INFO] $status\n", RESET );
|
||||||
|
notification('failed ❌', $status, $gitea_current_version, $tag);
|
||||||
|
die $status;
|
||||||
|
}
|
||||||
|
$gitea_current_version_string = `$gitea_bin --version`;
|
||||||
|
chomp $gitea_current_version_string;
|
||||||
|
%binary_file = get_current_binary($gitea_current_version_string);
|
||||||
|
$gitea_current_version = $binary_file{'version'};
|
||||||
|
|
||||||
|
if ( versioncmp( $gitea_current_version, $tag ) == -1 ) {
|
||||||
|
my $status = RED "Upstream version tag is STILL greater than the current system version, something went wrong\n", RESET;
|
||||||
|
notification('failed ❌', $status, $gitea_current_version, $tag);
|
||||||
|
printf( $status );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
my $status = '✅ [INFO] Gitea successfuly update. Installed version is current and service is running';
|
||||||
|
print( GREEN "[INFO] $status\n", RESET );
|
||||||
|
say "Removing the downloaded xz file and uncompressed file";
|
||||||
|
system("rm -vf " . $download_dir . $unz_filename);
|
||||||
|
system("rm -vf " . $download_dir . $download_filename);
|
||||||
|
notification('succeeded ✅', $status, $gitea_current_version, $tag);
|
||||||
|
# Intentionally *not* removing the 'gitea' binary in case something goes wrong running the current binary.
|
||||||
|
}
|
||||||
|
|
||||||
|
# ##### Subroutines #####
|
||||||
|
|
||||||
|
# sub check_deps {
|
||||||
|
# # Check to make sure dependencies installed on system - unit test??
|
||||||
|
# # bzip2 perl mods
|
||||||
|
# }
|
||||||
|
|
||||||
|
sub get_current_binary {
|
||||||
|
my $current_version_string = shift;
|
||||||
|
my $current_version;
|
||||||
|
if ( $current_version_string =~ m/ion\ (\d+\.\d+\.\d*)\s+b/ ) {
|
||||||
|
$current_version = $1;
|
||||||
|
printf("Version number of the installed gitea binary: $1\n");
|
||||||
|
}
|
||||||
|
elsif ( $current_version_string =~ m/ion\ (\d+\d+\w*)\s/ ) {
|
||||||
|
$current_version = $1;
|
||||||
|
printf("Current version number the installed gitea binary: $1\n");
|
||||||
|
$alphanum_ver = 1;
|
||||||
|
}
|
||||||
|
my %binary_file = (
|
||||||
|
input => $gitea_bin,
|
||||||
|
version => $current_version,
|
||||||
|
);
|
||||||
|
unless ( defined $current_version ) {
|
||||||
|
die RED
|
||||||
|
"[DIE]: Unable to get the current gitea version! Value is $current_version",
|
||||||
|
RESET;
|
||||||
|
}
|
||||||
|
return %binary_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_binary_file {
|
||||||
|
my $version = shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub backup_bin {
|
||||||
|
|
||||||
|
# Ghetto to get it working for now
|
||||||
|
|
||||||
|
my (%opts) = %{ shift() };
|
||||||
|
my $input = $opts{input};
|
||||||
|
my $version = $opts{version};
|
||||||
|
print GREEN "Backing up the current binary\n", RESET;
|
||||||
|
if ( defined $info ) {
|
||||||
|
print YELLOW
|
||||||
|
"[INFO] Input in backup_bin sub is:\n Directory $input\n Version $version\n",
|
||||||
|
RESET;
|
||||||
|
}
|
||||||
|
my $gitea_bin_backup =
|
||||||
|
'/home/gitea/bin/gitea.' . $gitea_current_version . '.bz2';
|
||||||
|
print GREEN "Gitea bin backup will be $gitea_bin_backup\n", RESET;
|
||||||
|
system("cp $input $input.bak");
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
# # Do this with a system call to make a compressed copy of the current binary
|
||||||
|
# # bzip2 -k file.txt
|
||||||
|
# # my $status = system("vi", "fred.txt");
|
||||||
|
# # if (($status >>=8) != 0) {
|
||||||
|
# # die "[DIE] Failed to run vi";
|
||||||
|
# # }
|
||||||
|
# my $bzip_status = system("bzip2 -k", "$input");
|
||||||
|
# if (($status >>=8) != 0) {
|
||||||
|
# die "[DIE] Failed to run bzip2";
|
||||||
|
# }
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_download_url {
|
||||||
|
my ( $dl_filename, $rel_id ) = @_;
|
||||||
|
my $dl_url;
|
||||||
|
|
||||||
|
# Get the download_url from the array
|
||||||
|
my $assetsURL =
|
||||||
|
'https://api.github.com/repos/go-gitea/gitea/releases/'
|
||||||
|
. $release_id
|
||||||
|
. '/assets';
|
||||||
|
if ( defined $info ) {
|
||||||
|
print YELLOW "[INFO] Assets URL\n";
|
||||||
|
print "$assetsURL\n", RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
my $asset_resp = $ua->get($assetsURL);
|
||||||
|
my $asset_resp_array_ref = decode_json( $asset_resp->content );
|
||||||
|
|
||||||
|
if ( defined $verbose ) {
|
||||||
|
printf( RED
|
||||||
|
"[DEBUG] Array of hashes of the json response for the assets:\n"
|
||||||
|
);
|
||||||
|
printf Dumper $asset_resp_array_ref, RESET;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $asset_ref ( @{$asset_resp_array_ref} ) {
|
||||||
|
if ( defined $verbose ) {
|
||||||
|
print( RED
|
||||||
|
"[DEBUG] The asset ref in get_download_url is $asset_ref\n" );
|
||||||
|
print(
|
||||||
|
"The asset ref name in get_download_url is $asset_ref->{name}\n",
|
||||||
|
RESET
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if ( $asset_ref->{name} eq $dl_filename ) {
|
||||||
|
print("Yay we have a match for our desired file :D and it is \n");
|
||||||
|
print $asset_ref->{name} . "\n";
|
||||||
|
$dl_url = $asset_ref->{browser_download_url};
|
||||||
|
if ( defined $info ) {
|
||||||
|
print YELLOW
|
||||||
|
"[INFO] The download url from the response array is $dl_url\n",
|
||||||
|
RESET;
|
||||||
|
}
|
||||||
|
return $dl_url;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unless ( defined $dl_url ) {
|
||||||
|
print( RED
|
||||||
|
"ONOES we have no download URL from the github API! Trying to build one manually\n",
|
||||||
|
RESET
|
||||||
|
);
|
||||||
|
my $dl_url = build_download_url( $orig_tag, $download_filename );
|
||||||
|
return $dl_url;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub build_download_url {
|
||||||
|
my ( $url_tag, $url_file ) = @_;
|
||||||
|
print "Building the URL based on the version\n";
|
||||||
|
|
||||||
|
# If getting the download URL fails through the API, use this to build it manually
|
||||||
|
# URL is in the form of
|
||||||
|
# https://github.com/go-gitea/gitea/releases/download/v1.15.2/gitea-1.15.2-linux-amd64.xz
|
||||||
|
my $built_url =
|
||||||
|
'https://github.com/go-gitea/gitea/releases/download/'
|
||||||
|
. $url_tag . '/'
|
||||||
|
. $url_file;
|
||||||
|
if ( defined $info ) {
|
||||||
|
print YELLOW "The URL built for the download is $built_url\n", RESET;
|
||||||
|
}
|
||||||
|
return $built_url;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub install_bin {
|
||||||
|
my $filename = shift;
|
||||||
|
print("Unpacking the downloaded file \"$download_dir$filename\", setting owner and permissions\n");
|
||||||
|
my $unpacked_filename = basename($filename, ".xz");
|
||||||
|
print "Unpacked filename is $unpacked_filename\n";
|
||||||
|
|
||||||
|
# Copy the downloaded binary to gitea and chmod it 750
|
||||||
|
# Doing this with a filthy system call because the perl library
|
||||||
|
# for xz manipulation is a memory hog and buggy besides
|
||||||
|
system("xz -d --keep $download_dir" . "/" . "$filename");
|
||||||
|
system("systemctl stop gitea");
|
||||||
|
system("cp $download_dir$unpacked_filename $gitea_bin");
|
||||||
|
system("chown gitea.gitea $gitea_bin");
|
||||||
|
system("chmod 750 $gitea_bin");
|
||||||
|
|
||||||
|
# Restart service
|
||||||
|
print("[INFO] Restarting the gitea service\n");
|
||||||
|
return system("systemctl restart gitea");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub check_gitea_status {
|
||||||
|
my $gitea_status = `systemctl is-active gitea`;
|
||||||
|
return $gitea_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub notification {
|
||||||
|
my ($result, $body, $running_version, $upstream_version) = @_;
|
||||||
|
my $subject = "Gitea update check: update " . $result;
|
||||||
|
my $from = 'system@host.tlcnet.info';
|
||||||
|
my $ver_body;
|
||||||
|
|
||||||
|
# print "[TLC DEBUG] Body received is\n$body\n";
|
||||||
|
|
||||||
|
if ( defined $running_version ) {
|
||||||
|
$ver_body = q{
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Running version:</td>
|
||||||
|
<td>} . $running_version . q{</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Upstream version:</td>
|
||||||
|
<td>} . $upstream_version . q{</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $msg = MIME::Lite->new(
|
||||||
|
Subject => encode( 'MIME-Header', $subject ),
|
||||||
|
From => $from,
|
||||||
|
To => $email,
|
||||||
|
Type => 'text/html',
|
||||||
|
Data => encode_utf8(
|
||||||
|
'<body>
|
||||||
|
<H1>Gitea update result</H1>
|
||||||
|
<p>' . $body . '</p>' . $ver_body .
|
||||||
|
'<br>
|
||||||
|
<p>⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯</p>
|
||||||
|
<p>Sincerely, <br>Your Linode VM</p>
|
||||||
|
</body>'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
$msg->send();
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
9
home_config/.vimrc
Executable file
9
home_config/.vimrc
Executable file
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
filetype plugin indent on
|
||||||
|
" show existing tab with 4 spaces width
|
||||||
|
set tabstop=4
|
||||||
|
" when indenting with '>', use 4 spaces width
|
||||||
|
set shiftwidth=4
|
||||||
|
" On pressing tab, insert 4 spaces
|
||||||
|
set expandtab
|
||||||
|
set pastetoggle=<F3> #To switch between paste and nopaste modes
|
||||||
3
home_config/konsole_tabs_colo
Executable file
3
home_config/konsole_tabs_colo
Executable file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Konsole tabs for colo session
|
||||||
|
title: Local;; command: /usr/bin/zsh ;; profile: Breeze
|
||||||
|
title: Colo;; command: ssh cp ;; profile: Mikado
|
||||||
19
home_config/ssh_config
Executable file
19
home_config/ssh_config
Executable file
|
|
@ -0,0 +1,19 @@
|
||||||
|
Host cp
|
||||||
|
HostName cp.tlcnet.info
|
||||||
|
User root
|
||||||
|
Port 227
|
||||||
|
IdentityFile ~/.ssh/tlc_server
|
||||||
|
Host pi3root
|
||||||
|
HostName pi3
|
||||||
|
User root
|
||||||
|
IdentityFile ~/.ssh/tlc_pi3
|
||||||
|
Host pi3
|
||||||
|
HostName pi3
|
||||||
|
User pi
|
||||||
|
IdentityFile ~/.ssh/tlc_pi3_pi
|
||||||
|
Host gittea
|
||||||
|
HostName gitea.tlcnet.info
|
||||||
|
RSAAuthentication yes
|
||||||
|
# User git
|
||||||
|
Port 227
|
||||||
|
IdentityFile ~/.ssh/id_tlc_gitea
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
#!/usr/bin/env perl
|
|
||||||
|
|
||||||
use Modern::Perl;
|
|
||||||
use DateTime;
|
|
||||||
|
|
||||||
say "Date Time formatting tests";
|
|
||||||
|
|
||||||
my $dt_now = DateTime->now( time_zone => 'local' );
|
|
||||||
say "Datetime now is $dt_now";
|
|
||||||
my $date = $dt_now->ymd('');
|
|
||||||
# yymmdd_hhmmss
|
|
||||||
my $dt = $date . '_' . $dt_now->hms('');
|
|
||||||
say "Datetime is $dt";
|
|
||||||
120
selenium_bash/.bashrc
Executable file
120
selenium_bash/.bashrc
Executable file
|
|
@ -0,0 +1,120 @@
|
||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||||
|
# for examples
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
case $- in
|
||||||
|
*i*) ;;
|
||||||
|
*) return;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# don't put duplicate lines or lines starting with space in the history.
|
||||||
|
# See bash(1) for more options
|
||||||
|
HISTCONTROL=ignoreboth
|
||||||
|
|
||||||
|
# append to the history file, don't overwrite it
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||||
|
HISTSIZE=1000
|
||||||
|
HISTFILESIZE=2000
|
||||||
|
|
||||||
|
# check the window size after each command and, if necessary,
|
||||||
|
# update the values of LINES and COLUMNS.
|
||||||
|
shopt -s checkwinsize
|
||||||
|
|
||||||
|
# If set, the pattern "**" used in a pathname expansion context will
|
||||||
|
# match all files and zero or more directories and subdirectories.
|
||||||
|
#shopt -s globstar
|
||||||
|
|
||||||
|
# make less more friendly for non-text input files, see lesspipe(1)
|
||||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
|
# set variable identifying the chroot you work in (used in the prompt below)
|
||||||
|
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||||
|
debian_chroot=$(cat /etc/debian_chroot)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||||
|
case "$TERM" in
|
||||||
|
xterm-color|*-256color) color_prompt=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# uncomment for a colored prompt, if the terminal has the capability; turned
|
||||||
|
# off by default to not distract the user: the focus in a terminal window
|
||||||
|
# should be on the output of commands, not on the prompt
|
||||||
|
#force_color_prompt=yes
|
||||||
|
|
||||||
|
if [ -n "$force_color_prompt" ]; then
|
||||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
|
# We have color support; assume it's compliant with Ecma-48
|
||||||
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||||
|
# a case would tend to support setf rather than setaf.)
|
||||||
|
color_prompt=yes
|
||||||
|
else
|
||||||
|
color_prompt=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$color_prompt" = yes ]; then
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
else
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
|
fi
|
||||||
|
unset color_prompt force_color_prompt
|
||||||
|
|
||||||
|
# If this is an xterm set the title to user@host:dir
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*)
|
||||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enable color support of ls and also add handy aliases
|
||||||
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
#alias dir='dir --color=auto'
|
||||||
|
#alias vdir='vdir --color=auto'
|
||||||
|
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# colored GCC warnings and errors
|
||||||
|
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
||||||
|
|
||||||
|
# some more ls aliases
|
||||||
|
alias ll='ls -alF'
|
||||||
|
alias la='ls -A'
|
||||||
|
alias l='ls -CF'
|
||||||
|
|
||||||
|
# Add an "alert" alias for long running commands. Use like so:
|
||||||
|
# sleep 10; alert
|
||||||
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||||
|
|
||||||
|
# Alias definitions.
|
||||||
|
# You may want to put all your additions into a separate file like
|
||||||
|
# ~/.bash_aliases, instead of adding them here directly.
|
||||||
|
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
||||||
|
|
||||||
|
if [ -f ~/.bash_aliases ]; then
|
||||||
|
. ~/.bash_aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
# enable programmable completion features (you don't need to enable
|
||||||
|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||||
|
# sources /etc/bash.bashrc).
|
||||||
|
if ! shopt -oq posix; then
|
||||||
|
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||||
|
. /usr/share/bash-completion/bash_completion
|
||||||
|
elif [ -f /etc/bash_completion ]; then
|
||||||
|
. /etc/bash_completion
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#List upgradeable packages
|
||||||
|
apt list --upgradeable
|
||||||
22
selenium_bash/.profile
Executable file
22
selenium_bash/.profile
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# ~/.profile: executed by the command interpreter for login shells.
|
||||||
|
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
|
||||||
|
# exists.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files for examples.
|
||||||
|
# the files are located in the bash-doc package.
|
||||||
|
|
||||||
|
# the default umask is set in /etc/profile; for setting the umask
|
||||||
|
# for ssh logins, install and configure the libpam-umask package.
|
||||||
|
#umask 022
|
||||||
|
|
||||||
|
# if running bash
|
||||||
|
if [ -n "$BASH_VERSION" ]; then
|
||||||
|
# include .bashrc if it exists
|
||||||
|
if [ -f "$HOME/.bashrc" ]; then
|
||||||
|
. "$HOME/.bashrc"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set PATH so it includes user's private bin if it exists
|
||||||
|
if [ -d "$HOME/bin" ] ; then
|
||||||
|
PATH="$HOME/bin:$PATH"
|
||||||
|
fi
|
||||||
99
selenium_bash/.rootbashrc
Executable file
99
selenium_bash/.rootbashrc
Executable file
|
|
@ -0,0 +1,99 @@
|
||||||
|
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||||
|
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||||
|
# for examples
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
[ -z "$PS1" ] && return
|
||||||
|
|
||||||
|
# don't put duplicate lines in the history. See bash(1) for more options
|
||||||
|
# ... or force ignoredups and ignorespace
|
||||||
|
HISTCONTROL=ignoredups:ignorespace
|
||||||
|
|
||||||
|
# append to the history file, don't overwrite it
|
||||||
|
shopt -s histappend
|
||||||
|
|
||||||
|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||||
|
HISTSIZE=1000
|
||||||
|
HISTFILESIZE=2000
|
||||||
|
|
||||||
|
# check the window size after each command and, if necessary,
|
||||||
|
# update the values of LINES and COLUMNS.
|
||||||
|
shopt -s checkwinsize
|
||||||
|
|
||||||
|
# make less more friendly for non-text input files, see lesspipe(1)
|
||||||
|
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||||
|
|
||||||
|
# set variable identifying the chroot you work in (used in the prompt below)
|
||||||
|
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
|
||||||
|
debian_chroot=$(cat /etc/debian_chroot)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||||
|
case "$TERM" in
|
||||||
|
xterm-color) color_prompt=yes;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# uncomment for a colored prompt, if the terminal has the capability; turned
|
||||||
|
# off by default to not distract the user: the focus in a terminal window
|
||||||
|
# should be on the output of commands, not on the prompt
|
||||||
|
#force_color_prompt=yes
|
||||||
|
|
||||||
|
if [ -n "$force_color_prompt" ]; then
|
||||||
|
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||||
|
# We have color support; assume it's compliant with Ecma-48
|
||||||
|
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||||
|
# a case would tend to support setf rather than setaf.)
|
||||||
|
color_prompt=yes
|
||||||
|
else
|
||||||
|
color_prompt=
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$color_prompt" = yes ]; then
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||||
|
else
|
||||||
|
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||||
|
fi
|
||||||
|
unset color_prompt force_color_prompt
|
||||||
|
|
||||||
|
# If this is an xterm set the title to user@host:dir
|
||||||
|
case "$TERM" in
|
||||||
|
xterm*|rxvt*)
|
||||||
|
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# enable color support of ls and also add handy aliases
|
||||||
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias ls='ls --color=auto'
|
||||||
|
#alias dir='dir --color=auto'
|
||||||
|
#alias vdir='vdir --color=auto'
|
||||||
|
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# some more ls aliases
|
||||||
|
alias ll='ls -alF'
|
||||||
|
alias la='ls -A'
|
||||||
|
alias l='ls -CF'
|
||||||
|
|
||||||
|
# Alias definitions.
|
||||||
|
# You may want to put all your additions into a separate file like
|
||||||
|
# ~/.bash_aliases, instead of adding them here directly.
|
||||||
|
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
||||||
|
|
||||||
|
if [ -f ~/.bash_aliases ]; then
|
||||||
|
. ~/.bash_aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
# enable programmable completion features (you don't need to enable
|
||||||
|
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||||
|
# sources /etc/bash.bashrc).
|
||||||
|
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
|
||||||
|
# . /etc/bash_completion
|
||||||
|
#fi
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
#!/usr/bin/fish
|
|
||||||
# Initial folder list from https://tuxtrix.com/reset-kde5-user-config-default/
|
|
||||||
|
|
||||||
if string length -q $HOME
|
|
||||||
echo "Backup up $HOME/.config"
|
|
||||||
cp -a $HOME/.config $HOME/.config.bak
|
|
||||||
cd $HOME/.config
|
|
||||||
|
|
||||||
echo "Deleting KDE config files"
|
|
||||||
set fileList Trolltech.conf akregatorrc baloofilerc bluedevilglobalrc kactivitymanagerd-statsrc
|
|
||||||
set -a fileList kactivitymanagerdrc kactivitymanagerd-pluginsrc kateschemarc kcmfonts kcminputrc kconf_updaterc kded5rc
|
|
||||||
set -a fileList kdeglobals kfontinstuirc kglobalshortcutsrc khotkeysrc kmixctrlrc kmixrc
|
|
||||||
set -a fileList kscreenlockerrc ksmserverrc ksplashrc ktimezonedrc kwinrc kwinrulesrc plasma-localerc
|
|
||||||
set -a fileList plasma-nm plasma-org.kde.plasma.desktop-appletsrc plasmarc plasmashellrc
|
|
||||||
set -a fileList powermanagementprofilesrc startupconfig startupconfigfiles startupconfigkeys
|
|
||||||
set -a fileList krunnerrc touchpadxlibinputrc systemsettingsrc kxkbrc PlasmaUserFeedback
|
|
||||||
set -a fileList kde.org/* kiorc klipperrc knfsshare kuriikwsfilterrc kwalletmanager5rc kwalletrc
|
|
||||||
set -a fileList plasma.emojierrc plasmanotifyrc PlasmaUserFeedback powerdevilrc kgammarc
|
|
||||||
set -a fileList kded_device_automounterrc device_automounter_kcmrc klaunchrc
|
|
||||||
set -a fileList trashrc kactivitymanagerd-switcher gtkrc-2.0 gtkrc baloofileinformationrc
|
|
||||||
set -a fileList plasmaparc plasmawindowed-appletsrc plasmawindowedrc
|
|
||||||
|
|
||||||
set -a fileList breezerc
|
|
||||||
|
|
||||||
rm $fileList
|
|
||||||
else
|
|
||||||
echo "HOME variable not defined"
|
|
||||||
exit
|
|
||||||
end
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
go() {
|
|
||||||
session="$1"
|
|
||||||
sessions_dir="$HOME/tilix_profiles"
|
|
||||||
tilix_opts=''
|
|
||||||
|
|
||||||
for session in "$sessions_dir/$session/"*; do
|
|
||||||
tilix_opts="$tilix_opts -s $session"
|
|
||||||
done
|
|
||||||
|
|
||||||
tilix $tilix_opts
|
|
||||||
}
|
|
||||||
|
|
||||||
go $@
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue