/* * Copyright (c) 2013 Hudson. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Hudson - initial API and implementation and/or initial documentation */ package hudson.cli; import hudson.Extension; import hudson.model.Failure; import hudson.model.Hudson; import java.io.File; import org.eclipse.hudson.security.team.TeamManager; import org.eclipse.hudson.security.team.TeamManager.TeamAlreadyExistsException; import org.kohsuke.args4j.Argument; /** * * @author Bob Foster */ @Extension public class CreateTeamCommand extends CLICommand { @Override public String getShortDescription() { return "Create a new team"; } @Argument(metaVar = "TEAM", usage = "Team to create", required=true) public String team; @Argument(metaVar = "DESCRIPTION", usage = "Team Description", index=1, required=false) public String description; @Argument(metaVar = "LOCATION", usage = "Team location (custom folder)", index=2, required=false) public String location; protected int run() throws Exception { Hudson h = Hudson.getInstance(); if (!h.isTeamManagementEnabled()) { stderr.println("Team management is not enabled"); return -1; } TeamManager teamManager = h.getTeamManager(); if (!teamManager.isCurrentUserSysAdmin()) { stderr.println("User not authorized to create team"); return -1; } try { Hudson.checkGoodTeamName(team); } catch (Failure ex) { stderr.println(ex.getMessage()); return -1; } if (description == null) { description = team; } if (location != null) { File loc = new File(location); if (loc.exists() && !loc.isDirectory()) { stderr.println("Custom folder name \""+location+"\" is not a directory"); return -1; } if (!loc.exists() && !loc.mkdirs()) { stderr.println("Could not create custom folder \""+location+"\""); return -1; } } try { teamManager.createTeam(team, description, location); } catch (TeamAlreadyExistsException e) { stderr.println("Team "+team+" already exists"); return -1; } return 0; } }