<% # API my $api = gitprep_api; my $session_user = session('user'); my $op = param('op') || ''; # Authentication unless ($api->logined) { $self->redirect_to('/'); return; } my $errors; if ($op eq 'create') { # Parameters my $project = param('project'); my $description = param('description'); my $readme = param('readme'); my $private = param('private'); # Validator my $vc = app->vc; # Validation my $validation = $vc->validation; # "project" if (!(defined $project && length $project)) { $validation->add_failed(project => 'Repository name is empty'); } elsif (!$vc->check($project, 'project_name')) { $validation->add_failed(project => 'Invalid repository name'); } elsif (app->manager->exists_project($session_user, $project)) { $validation->add_failed(project => 'Repository already exists'); } # "description" $description ||= ''; # "readme" $readme = $readme ? 1 :0; # "private" $private = $private ? 1 : 0; # Git if ($validation->is_valid) { # Not logined unless ($api->logined) { return $self->reply->exception; } my $manager = app->manager; # Create repository eval { $manager->create_project( $session_user, $project, {description => $description, readme => $readme, private => $private} ); }; if (my $e = $@) { app->log->error(url_for . ": $e"); $errors = ['Internal error']; } else { $self->redirect_to("/$session_user/$project"); return; } } else { $errors = $validation->messages } } %> % layout 'common', title => 'Create a New Repository'; %= include '/include/header', no_project_header => 1;
% if ($errors) {
% for my $error (@$errors) {

<%= $error %>

% }
% }
Create a new repository
A repository contains all the files for your project, including the revision history.
Owner Repository name
<%= $session_user %> / <%= text_field 'project'%>
Description (optional)
<%= text_field 'description' %>
<%= check_box readme => 1 %>Initialize this this repository with a README
This will let you immediately clone the repository to your computer. Skip this step if you’re importing an existing repository.
%= include '/include/footer';