#!/usr/bin/perl -w # # plants.pl # A CLI to the medicinal plants database. # (C) 2016 Mischa Capazario v.0.1 Tue Feb 23 17:32:19 SAST 2016 # use lib "Plants/"; use Salvia; use strict; &main(); sub main { if( defined $ARGV[0] ) { if ( $ARGV[0] eq 'add' || $ARGV[0] eq 'update' ) { &addStrain(); exit; } elsif ( $ARGV[0] eq 'show' ) { &showStrain(); exit; } elsif ( $ARGV[0] eq 'remove' ) { &removeStrain(); exit; } else { &showHelp("Valid argument expected"); exit; } } else { &showHelp("Valid argument expected"); exit; } } sub addStrain { my $Salvia = Salvia->new(); my $Strain = $ARGV[1] or &showHelp("Valid argument expected"); $Salvia->{'Name'} = $Strain; $Salvia->{$Strain}->{'THC'} = $ARGV[2] or &showHelp("Valid argument expected"); $Salvia->{$Strain}->{'CBD'} = $ARGV[3] or &showHelp("Valid argument expected"); $Salvia->{$Strain}->{'THCV'} = $ARGV[4] or &showHelp("Valid argument expected"); $Salvia->{$Strain}->{'Verified'} = $ARGV[5] or &showHelp("Valid argument expected"); $Salvia->{$Strain}->{'Description'} = $ARGV[6] || undef; $Salvia->add($Salvia); return; } sub showStrain { my $Salvia = Salvia->new(); my $Strain = $ARGV[1]; # or &showHelp("Valid arguments expected"); if ( defined $Strain ) { print "Strain: $Strain\n"; my $StrainHash = $Salvia->get($Strain); die "Strain not found. You can add it with $0 add" unless $StrainHash; foreach my $key (sort keys %{$StrainHash} ) { print " $key: $StrainHash->{$key} "; } print "\n"; } else { my $StrainsHash = $Salvia->get(); print "Strains: \n"; foreach my $strain (sort keys %{$StrainsHash} ) { print " $strain "; } print "\n\nRun $0 show for more details.\n"; } } sub removeStrain { my $Salvia = Salvia->new(); my $Strain = $ARGV[1] or &showHelp("Valid arguments expected"); $Salvia->delete($Strain); } sub showHelp { my $msg = shift ||''; die < \t\t - Add new herbs strain, . Specify cannabinoid \t\t\t values as numbers between 1 and 5. $0 update \t\t - Update herbs strain, . $0 show \t - Show list of strains $0 show \t - Show information on $0 remove \t - Remove EOH } #### #!/usr/bin/perl -w # # Salvia.pm # Class definition for Salvia object # (C) 2016 Mischa Capazario v.0.1 Tue Feb 23 16:54:06 SAST 2016 # use MLDBM qw(DB_File Storable); use Fcntl; package Salvia; my $dataFile = qq|Plants/Salvia.bdb|; sub new { my $self = shift; return bless {}, $self; } sub add { my $self = shift; my $Strain = shift; return $self->update($Strain); } sub get { my $self = shift; my $Strain = shift; my %Salvia; my $dbm = tie %Salvia, 'MLDBM', $dataFile or die $!; undef $dbm; if( defined $Strain ) { if ( defined $Salvia{$Strain} ) { return \%{$Salvia{$Strain}}; } } else { return \%Salvia; } } sub update { my $self = shift; my $Strain = shift; my %Salvia; my $dbm = tie %Salvia, 'MLDBM', $dataFile or die $!; my $strain = $Strain->{'Name'}; $Salvia{$strain} = $Strain->{$strain}; undef $dbm; untie %Salvia; return %Salvia; } sub delete { my $self = shift; my $Strain = shift; my %Salvia; my $dbm = tie %Salvia, 'MLDBM', $dataFile or die $!; delete($Salvia{$Strain}); undef $dbm; untie %Salvia; return; } 1;