package io.fathom.cloud.identity.commands; import io.fathom.cloud.commands.Cmdlet; import io.fathom.cloud.server.auth.Auth; import io.fathom.cloud.server.model.Project; import io.fathom.cloud.services.AuthService; import java.util.List; import javax.inject.Inject; import org.kohsuke.args4j.Option; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ProjectCreateCmdlet extends Cmdlet { private static final Logger log = LoggerFactory.getLogger(ProjectCreateCmdlet.class); @Option(name = "-u", usage = "username", required = true) public String username; @Option(name = "-p", usage = "password", required = true) public String password; @Option(name = "-proj", usage = "project", required = true) public String projectName; public ProjectCreateCmdlet() { super("id-project-create"); } @Inject AuthService authService; @Override protected void run() throws Exception { Auth auth = authService.authenticate(null, username, password); if (auth == null) { throw new IllegalStateException("Cannot authenticate as " + username); } log.info("Authenticated as: {}", username); List<Long> projectIds = authService.resolveProjectName(auth, projectName); Long projectId; if (projectIds.isEmpty()) { log.info("Creating project: {}", projectName); projectId = authService.createProject(auth, projectName); } else { throw new IllegalArgumentException("Project already exists"); } auth = authService.authenticate(projectId, username, password); if (auth == null) { throw new IllegalStateException("Error authenticating to project"); } log.info("Authenticated to project"); Project project = auth.getProject(); println("Created project: %s", project.getId()); } }