Skip to content

Instantly share code, notes, and snippets.

@Jigarsolanki
Created April 11, 2014 03:46
Show Gist options
  • Save Jigarsolanki/10439888 to your computer and use it in GitHub Desktop.
Save Jigarsolanki/10439888 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use JSON;
use YAML::XS qw(LoadFile DumpFile);
use Data::Dumper;
use Getopt::Long;
use File::Basename;
my ( $dayToShow, $helpNeeded, %newTasks, $dayToAdd, $fileName, @days );
%newTasks = ();
@days = ("monday", "tuesday", "wednesday", "thursday", "friday" );
$fileName = "sample.timeclock";
sub isValidaDay
{
my %validDays = map { $_ => 1 } @days;
unless (exists($validDays{$_[0]})) {
die("Please use correct working days: ". join(', ', @days)."\n");
}
}
sub showTasksForADay
{
&isValidaDay($dayToShow);
my $weekData = LoadFile($fileName);
print("$dayToShow\n");
unless (scalar keys (%{$weekData->{$dayToShow}}) > 0) {
die(" No Tasks Found.\n");
}
while ( my ($key, $value) = each(%{$weekData->{$dayToShow}}) ) {
print(" $key: $value\n");
}
}
sub hasTasks
{
unless (scalar keys %newTasks > 0) {
die("Please enter at least one task.\n");
}
}
sub addTasksForADay
{
&isValidaDay($dayToAdd);
&hasTasks();
my $weekData = LoadFile($fileName);
unless (exists($weekData->{$dayToAdd})) {
$weekData->{$dayToAdd} = {};
}
while (my ($key, $value) = each(%newTasks)) {
$weekData->{$dayToAdd}->{$key} = $value;
}
DumpFile($fileName, $weekData);
}
sub printHelp
{
my $helpText = <<'END_MESSAGE';
1) To list workday tasks:
perl $0 -l <workday>
2) To add task into workday:
perl $0 -a <workday> -t "<task_name>"=hours [ -t "<task_name>"=hours ]
END_MESSAGE
print $helpText;
}
GetOptions(
'l=s' => \$dayToShow,
'a=s' => \$dayToAdd,
'task=i%' => \%newTasks,
'h' => \$helpNeeded,
) or die "Incorrect usage!\n";
my $stuff = LoadFile('sample.timeclock');
if ($dayToShow) {
&showTasksForADay();
} elsif ($dayToAdd) {
&addTasksForADay();
} else {
&printHelp();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment