App-PS1
view release on metacpan or search on metacpan
lib/App/PS1/Plugin/Branch.pm view on Meta::CPAN
my ($len, $status) = status($type);
return $self->surround(
$len + length $type . $branch,
$self->colour('branch_label') . $type
. $self->colour('branch') . $branch
. $status
);
}
sub status {
my ($type) = @_;
return (0, '') if $type ne 'git ';
my %status = (
staged => 0,
unstaged => 0,
untracked => 0,
);
my @status = `git status --porcelain`;
for my $status (@status) {
my ($staged, $unstaged) = $status =~ /^(.)(.)/;
$status{staged}++ if $staged ne '?' && $staged ne ' ';
$status{unstaged}++ if $unstaged ne '?' && $unstaged ne ' ';
$status{untracked}++ if $staged eq '?' && $unstaged eq '?';
}
my @chars = (' ', 'â ','â¡','â¢','â£','â¤','â¥','â¦','â§','â¨','â©','âª','â«','â¬','â','â®','â¯','â°','â±','â²','â³','ã','ã','ã','ã','ã','ã','ã','ã','ã','ã','ã','ã','ã','ã','ã', 'â');
my $str = '';
$str .= ' ' . color('green') . ($chars[$status{staged} ] || $chars[36]) if $status{staged};
$str .= ' ' . color('red' ) . ($chars[$status{unstaged} ] || $chars[36]) if $status{unstaged};
$str .= ' ' . color('white') . ($chars[$status{untracked}] || $chars[36]) if $status{untracked};
return (
(! $status{staged} ? 0 : $status{staged} > 20 ? 3 : 2) +
(! $status{unstaged} ? 0 : $status{unstaged} > 20 ? 3 : 2) +
(! $status{untracked} ? 0 : $status{untracked} > 20 ? 3 : 2),
$str
);
}
sub git {
for (split /:/, $ENV{PATH}) {
return "$_/git" if -x "$_/git";
}
return 'git';
}
sub cvs {
for (split /:/, $ENV{PATH}) {
return "$_/cvs" if -x "$_/cvs";
}
return 'cvs';
}
1;
__END__
=head1 NAME
App::PS1::Plugin::Branch - Adds the current branch to prompt
=head1 VERSION
This documentation refers to App::PS1::Plugin::Branch version 0.08.
=head1 SYNOPSIS
use App::PS1::Plugin::Branch;
# Brief but working code example(s) here showing the most common usage(s)
# This section will be as far as many users bother reading, so make it as
# educational and exemplary as possible.
=head1 DESCRIPTION
=head1 SUBROUTINES/METHODS
=head3 C<branch ()>
If the current is under source code control returns the current branch etc
=head3 C<git ()>
Returns the full path for the git executable
=head3 C<cvs ()>
Returns the full path for the cvs executable
=head3 C<status ()>
Adds a status of the number of changes present for git repositories.
=head1 DIAGNOSTICS
=head1 CONFIGURATION AND ENVIRONMENT
=head1 DEPENDENCIES
=head1 INCOMPATIBILITIES
=head1 BUGS AND LIMITATIONS
There are no known bugs in this module.
Please report problems to Ivan Wills (ivan.wills@gmail.com).
Patches are welcome.
=head1 AUTHOR
Ivan Wills - (ivan.wills@gmail.com)
=head1 LICENSE AND COPYRIGHT
Copyright (c) 2011 Ivan Wills (14 Mullion Close, Hornsby Heights, NSW, Australia 2077)
All rights reserved.
This module is free software; you can redistribute it and/or modify it under
( run in 0.785 second using v1.01-cache-2.11-cpan-6aa56a78535 )