Skip to content
This repository has been archived by the owner on Nov 1, 2020. It is now read-only.

Commit

Permalink
improve manager structures
Browse files Browse the repository at this point in the history
  • Loading branch information
yuki-kimoto committed Nov 19, 2013
1 parent 29d2447 commit c81022c
Show file tree
Hide file tree
Showing 18 changed files with 61 additions and 39 deletions.
2 changes: 1 addition & 1 deletion lib/Gitprep.pm
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ sub startup {
$self->git($git);

# Repository Manager
my $manager = Gitprep::Manager->new(app => $self);
my $manager = Gitprep::Manager->new(app => $self, git => $git);
weaken $manager->{app};
$self->manager($manager);

Expand Down
9 changes: 9 additions & 0 deletions lib/Gitprep/API.pm
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,15 @@ sub can_access_private_project {
return $is_valid;
}

sub manager {
my $self = shift;

my $manager = $self->app->manager->clone;
$manager->git($self->git);

return $manager;
}

sub new {
my ($class, $cntl) = @_;

Expand Down
29 changes: 20 additions & 9 deletions lib/Gitprep/Manager.pm
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use File::Path qw/mkpath rmtree/;
use File::Temp ();

has 'app';
has 'git';

sub admin_user {
my $self = shift;
Expand All @@ -19,6 +20,16 @@ sub admin_user {
return $admin_user;
}

sub clone {
my $self = shift;

my $clone = __PACKAGE__->new;
$clone->app($self->app);
$clone->git($self->git);

return $clone;
}

sub default_branch {
my ($self, $user, $project, $default_branch) = @_;

Expand Down Expand Up @@ -266,7 +277,7 @@ sub rename_project {
my ($self, $user, $project, $to_project) = @_;

# Rename project
my $git = $self->app->git;
my $git = $self->git;
my $dbi = $self->app->dbi;
my $error;
eval {
Expand Down Expand Up @@ -431,7 +442,7 @@ sub _create_rep {
my ($self, $user, $project, $opts) = @_;

# Create repository directory
my $git = $self->app->git;
my $git = $self->git;
my $rep = $git->rep($user, $project);
mkdir $rep
or croak "Can't create directory $rep: $!";
Expand Down Expand Up @@ -558,7 +569,7 @@ sub _create_user_dir {
my ($self, $user) = @_;

# Create user directory
my $rep_home = $self->app->git->rep_home;
my $rep_home = $self->git->rep_home;
my $user_dir = "$rep_home/$user";
mkpath $user_dir;
}
Expand All @@ -576,7 +587,7 @@ sub _delete_user_dir {
my ($self, $user) = @_;

# Delete user directory
my $rep_home = $self->app->git->rep_home;
my $rep_home = $self->git->rep_home;
my $user_dir = "$rep_home/$user";
rmtree $user_dir;
}
Expand All @@ -593,7 +604,7 @@ sub _delete_rep {
my ($self, $user, $project) = @_;

# Delete repository
my $rep_home = $self->app->git->rep_home;
my $rep_home = $self->git->rep_home;
croak "Can't remove repository. repository home is empty"
if !defined $rep_home || $rep_home eq '';
my $rep = "$rep_home/$user/$project.git";
Expand Down Expand Up @@ -625,7 +636,7 @@ sub _exists_rep {
my ($self, $user, $project) = @_;

# Exists repository
my $rep = $self->app->git->rep($user, $project);
my $rep = $self->git->rep($user, $project);

return -e $rep;
}
Expand All @@ -634,7 +645,7 @@ sub _fork_rep {
my ($self, $user, $project, $to_user, $to_project) = @_;

# Fork repository
my $git = $self->app->git;
my $git = $self->git;
my $rep = $git->rep($user, $project);
my $to_rep = $git->rep($to_user, $to_project);
my @cmd = (
Expand Down Expand Up @@ -676,8 +687,8 @@ sub _rename_rep {
unless defined $user && defined $project && defined $renamed_project;

# Rename repository
my $rep = $self->app->git->rep($user, $project);
my $renamed_rep = $self->app->git->rep($user, $renamed_project);
my $rep = $self->git->rep($user, $project);
my $renamed_rep = $self->git->rep($user, $renamed_project);
move($rep, $renamed_rep)
or croak "Can't move $rep to $renamed_rep: $!";
}
Expand Down
2 changes: 1 addition & 1 deletion templates/auto/_admin/user/create.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
$params->{salt} = $salt;

# Create user
eval { app->manager->create_user($id, $params) };
eval { $api->manager->create_user($id, $params) };
if ($@) {
app->log->error($@);
$errors = ['Internal Error'];
Expand Down
4 changes: 2 additions & 2 deletions templates/auto/_admin/users.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

# Delete user
my $count;
eval { $count = app->manager->delete_user($user) };
eval { $count = $api->manager->delete_user($user) };
if ($@) {
app->log->error("/_admin/users?op=delete: $@");
$errors = ['Internal Error'];
Expand All @@ -41,7 +41,7 @@
else { $errors = $vresult->messages }
}

my $users = app->manager->users;
my $users = $api->manager->users;
%>

% layout 'common', title => 'Admin Users';
Expand Down
2 changes: 1 addition & 1 deletion templates/auto/_new.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
my $description = $data->{description};
my $readme = $data->{readme};

my $manager = app->manager;
my $manager = $api->manager;
if ($manager->exists_project($user, $project)) {
$errors = ['Repository already exists'];
}
Expand Down
4 changes: 2 additions & 2 deletions templates/auto/_start.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# API
my $api = gitprep_api;

my $admin_user = app->manager->admin_user;
my $admin_user = $api->manager->admin_user;
if (defined $admin_user && $admin_user ne '') {
$self->redirect_to('/');
return;
Expand All @@ -15,7 +15,7 @@
if ($op eq 'create') {

# Check existence admin user
my $admin_user = app->manager->admin_user;
my $admin_user = $api->manager->admin_user;
if (defined $admin_user) { $errors = ['Admin user already exists.'] }
else {
# Validation
Expand Down
4 changes: 3 additions & 1 deletion templates/auto/index.html.ep
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<%
my $api = gitprep_api;

# Users
my $manager = app->manager;
my $manager = $api->manager;
my $users = $manager->users;

# Goto Start page
Expand Down
2 changes: 1 addition & 1 deletion templates/auto/reset-password.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
my $logined_user = $api->logined($user);

if ($reset_password_conf_on) {
my $admin_user = app->manager->admin_user;
my $admin_user = $api->manager->admin_user;
$user = $admin_user ? $admin_user->{id} : undef;
}
elsif (!$logined_admin && !$logined_user) {
Expand Down
2 changes: 1 addition & 1 deletion templates/branches.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
}

# Default branch
my $base_branch_name = param('base_branch') || app->manager->default_branch($user, $project);
my $base_branch_name = param('base_branch') || $api->manager->default_branch($user, $project);
my $base_branch = $git->branch($user, $project, $base_branch_name);

# No merged branches
Expand Down
4 changes: 2 additions & 2 deletions templates/fork.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
}

# Repository is already exists
if (app->manager->exists_project($current_user, $project)) {
if ($api->manager->exists_project($current_user, $project)) {
$self->redirect_to("/$current_user/$project");
return;
}
# Fork
else {
eval { app->manager->fork_project($current_user, $user, $project) };
eval { $api->manager->fork_project($current_user, $user, $project) };
if ($@) {
$self->render_exception('Internal Error');
app->log->error("/$user/$project/fork: $@");
Expand Down
2 changes: 1 addition & 1 deletion templates/include/code_menu.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
$rev = '' unless defined $rev;
my $branches = stash('branches');
my $branches_count = $api->git->branches_count($user, $project);
my $default_branch_name = app->manager->default_branch($user, $project);
my $default_branch_name = $api->manager->default_branch($user, $project);
my $tags_count = $api->git->tags_count($user, $project);
%>

Expand Down
4 changes: 2 additions & 2 deletions templates/include/project_header.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
my $logined = $api->logined;
my $current_user = session('user');
my $user = stash('user');
my $original_user = app->manager->original_user($user, $project);
my $original_project = app->manager->original_project($user, $project);
my $original_user = $api->manager->original_user($user, $project);
my $original_project = $api->manager->original_project($user, $project);
%>

<div class="row" style="margin-bottom:10px">
Expand Down
4 changes: 2 additions & 2 deletions templates/network.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
my $branches = [map { $_->{name} } @{$api->git->branches($user, $project)}];

# Members
my $members = app->manager->members($user, $project);
my $members = $api->manager->members($user, $project);

# Members branches
for my $member (@$members) {
Expand All @@ -17,7 +17,7 @@
}

# Default branch
my $default_branch = app->manager->default_branch($user, $project);
my $default_branch = $api->manager->default_branch($user, $project);
%>

% layout 'common', title => "Network \x{30fb} $user/$project";
Expand Down
4 changes: 2 additions & 2 deletions templates/project.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
# Parameters
my $user = param('user');
my $project = param('project');
my $rev = app->manager->default_branch($user, $project);
my $rev = $api->manager->default_branch($user, $project);

unless (app->manager->exists_project($user, $project)) {
unless ($api->manager->exists_project($user, $project)) {
$self->render_not_found;
return;
}
Expand Down
16 changes: 8 additions & 8 deletions templates/settings.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

# API
my $api = gitprep_api;
my $manager = app->manager;
my $manager = $api->manager;

# Parameters
my $op = param('op') || '';
Expand Down Expand Up @@ -37,11 +37,11 @@
my $to_project = $data->{'to-project'};

# Rename
if (app->manager->exists_project($user, $to_project)) {
if ($api->manager->exists_project($user, $to_project)) {
$errors = ["$to_project is already exists"];
}
else {
eval { app->manager->rename_project($user, $project, $to_project) };
eval { $api->manager->rename_project($user, $project, $to_project) };
if (my $e = $@) {
app->log->error($e);
$errors = ['Internal Error'];
Expand Down Expand Up @@ -76,7 +76,7 @@
# Change default branch
elsif ($op eq 'default-branch' && $post) {
my $default_branch = param('default-branch');
eval { app->manager->default_branch($user, $project, $default_branch) };
eval { $api->manager->default_branch($user, $project, $default_branch) };
if (my $e = $@) {
app->log->error("/$user/$project/settings?op=default-branch: $e");
$errors = ['Internal Error'];
Expand Down Expand Up @@ -145,7 +145,7 @@
my $user = param('user');
my $project = param('project');

eval { app->manager->delete_project($user, $project) };
eval { $api->manager->delete_project($user, $project) };
if (my $e = $@) {
app->log->error("/$user/$project/settings: $e");
$errors = ['Internal Error'];
Expand Down Expand Up @@ -265,7 +265,7 @@
<div class="border-gray radius-bottom" style="padding:5px 10px;border-top:none;">
<form action="<%= url_for->query(op => 'private') %>" method="post" style="margin-bottom:0px">
<span>Make this repository private</span>
% my $private = app->manager->is_private_project($user, $project);
% my $private = $api->manager->is_private_project($user, $project);
% if ($private) {
% param('private', 1);
% }
Expand Down Expand Up @@ -308,7 +308,7 @@

<div id="rename-confirm" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="rename-confirm-label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">??</button>
<div style="font-weight:bold">Are you sure you want to rename?</div>
</div>
<div class="modal-body">
Expand All @@ -333,7 +333,7 @@

<div id="delete-confirm" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="delete-confirm-label" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">??</button>
<div style="font-weight:bold">Are you ABSOLUTELY sure?</div>
</div>
<div class="modal-body">
Expand Down
2 changes: 1 addition & 1 deletion templates/settings/collaboration.html.ep
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<%
# API
my $api = gitprep_api;
my $manager = app->manager;
my $manager = $api->manager;

# Parameters
my $op = param('op') || '';
Expand Down
4 changes: 2 additions & 2 deletions templates/user.html.ep
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
my $user = param('user');

# Projects
unless (app->manager->exists_user($user)) {
unless ($api->manager->exists_user($user)) {
$self->render_not_found;
return;
}
my $projects = app->manager->projects($user);
my $projects = $api->manager->projects($user);
my $reps = [];
for my $project (@$projects) {
my $rep = $api->git->repository($user, $project->{name}) || {none => 1};
Expand Down

0 comments on commit c81022c

Please sign in to comment.