package org.kohsuke.github; import java.io.IOException; import java.net.URL; /** * Creates a repository * * @author Kohsuke Kawaguchi */ public class GHCreateRepositoryBuilder { private final GitHub root; protected final Requester builder; private final String apiUrlTail; /*package*/ GHCreateRepositoryBuilder(GitHub root, String apiUrlTail, String name) { this.root = root; this.apiUrlTail = apiUrlTail; this.builder = new Requester(root); this.builder.with("name",name); } public GHCreateRepositoryBuilder description(String description) { this.builder.with("description",description); return this; } public GHCreateRepositoryBuilder homepage(URL homepage) { return homepage(homepage.toExternalForm()); } public GHCreateRepositoryBuilder homepage(String homepage) { this.builder.with("homepage",homepage); return this; } /** * Creates a private repository */ public GHCreateRepositoryBuilder private_(boolean b) { this.builder.with("private",b); return this; } /** * Enables issue tracker */ public GHCreateRepositoryBuilder issues(boolean b) { this.builder.with("has_issues",b); return this; } /** * Enables wiki */ public GHCreateRepositoryBuilder wiki(boolean b) { this.builder.with("has_wiki",b); return this; } /** * Enables downloads */ public GHCreateRepositoryBuilder downloads(boolean b) { this.builder.with("has_downloads",b); return this; } /** * If true, create an initial commit with empty README. */ public GHCreateRepositoryBuilder autoInit(boolean b) { this.builder.with("auto_init",b); return this; } /** * Creates a default .gitignore * * See https://developer.github.com/v3/repos/#create */ public GHCreateRepositoryBuilder gitignoreTemplate(String language) { this.builder.with("gitignore_template",language); return this; } /** * Desired license template to apply * * See https://developer.github.com/v3/repos/#create */ public GHCreateRepositoryBuilder licenseTemplate(String license) { this.builder.with("license_template",license); return this; } /** * The team that gets granted access to this repository. Only valid for creating a repository in * an organization. */ public GHCreateRepositoryBuilder team(GHTeam team) { if (team!=null) this.builder.with("team_id",team.getId()); return this; } /** * Creates a repository with all the parameters. */ public GHRepository create() throws IOException { return builder.method("POST").to(apiUrlTail, GHRepository.class).wrap(root); } }