Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 69 additions & 0 deletions samples/git.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import * as common from './common';
import * as nodeApi from 'azure-devops-node-api';

import * as GitApi from 'azure-devops-node-api/GitApi';
import * as GitInterfaces from 'azure-devops-node-api/interfaces/GitInterfaces';

export async function run() {
let webApi: nodeApi.WebApi = await common.getWebApi();
let gitApiObject: GitApi.IGitApi = await webApi.getGitApi();

common.banner('Git Samples');
let project: string = common.getProject();
console.log('Project:', project);

common.heading("Get Repositories");
const repos: GitInterfaces.GitRepository[] = await gitApiObject.getRepositories(project);
console.log("There are", repos.length, "repositories in this project");

common.heading("Create a repository");
const createOptions: GitInterfaces.GitRepositoryCreateOptions = <GitInterfaces.GitRepositoryCreateOptions>{name: 'new repo'};
let newRepo: GitInterfaces.GitRepository = await gitApiObject.createRepository(createOptions, project);
console.log("New repo:", newRepo.name);

common.heading("Delete repository");
await gitApiObject.deleteRepository(newRepo.id);
console.log("Repo deleted");

common.heading("Get commits for a repository");
if (repos.length > 0) {
const firstRepo = repos[0]
console.log("The first repository in this project is named", firstRepo.name);
const commitCriteria: GitInterfaces.GitQueryCommitsCriteria = <GitInterfaces.GitQueryCommitsCriteria> {$skip: 0, $top: 10};
const commits: GitInterfaces.GitCommitRef[] = await gitApiObject.getCommits(firstRepo.id, commitCriteria, project);
const commitNames: string[] = commits.map((commit) => {return commit.comment});
console.log("Top 10 commits in this repo:", commitNames);
}
else {
console.log("Must have an active repository for this part of the sample");
}

common.heading("Get pull requests for a repository");
if (repos.length > 0) {
const firstRepo = repos[0]
const pullRequestCriteria: GitInterfaces.GitPullRequestSearchCriteria = <GitInterfaces.GitPullRequestSearchCriteria>{};
const pullRequests = await gitApiObject.getPullRequests(firstRepo.id, pullRequestCriteria);
const pullRequestTitles = pullRequests.map((request) => {return request.title});
console.log("Pull requests on this repo:", pullRequestTitles);

common.heading("Create comment on a pull request");
let threads: GitInterfaces.GitPullRequestCommentThread[] = [];
if (pullRequests.length > 0) {
threads = await gitApiObject.getThreads(firstRepo.id, pullRequests[0].pullRequestId);
}
if (pullRequests.length > 0 && threads.length > 0) {
let comment: GitInterfaces.Comment = <GitInterfaces.Comment>{content: 'Hello comment'};
comment = await gitApiObject.createComment(comment, firstRepo.id, pullRequests[0].pullRequestId, threads[0].id);
console.log("Comment created:", comment.content);
common.heading("Delete a comment on a pull request");
await gitApiObject.deleteComment(firstRepo.id, pullRequests[0].pullRequestId, threads[0].id, comment.id);
console.log("Comment deleted");
}
else {
console.log("Must have an active pull request in repo with an active comment thread", firstRepo.name, "for this part of the sample");
}
}
else {
console.log("Must have an active repository for this part of the sample");
}
}
4 changes: 3 additions & 1 deletion samples/samples.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
"buildArtifact",
"creation",
"task",
"filecontainer"
"filecontainer",
"git",
"wiki"
]
4 changes: 3 additions & 1 deletion samples/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
"buildArtifact.ts",
"creation.ts",
"task.ts",
"filecontainer.ts"
"filecontainer.ts",
"git.ts",
"wiki.ts"
]
}
44 changes: 44 additions & 0 deletions samples/wiki.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import * as common from './common';
import * as nodeApi from 'azure-devops-node-api';

import * as CoreApi from 'azure-devops-node-api/CoreApi'
import * as CoreInterfaces from 'azure-devops-node-api/interfaces/CoreInterfaces'
import * as WikiApi from 'azure-devops-node-api/WikiApi';
import * as WikiInterfaces from 'azure-devops-node-api/interfaces/WikiInterfaces';

export async function run() {
const webApi: nodeApi.WebApi = await common.getWebApi();
const wikiApiObject: WikiApi.IWikiApi = await webApi.getWikiApi();
const coreApiObject: CoreApi.ICoreApi = await webApi.getCoreApi();

common.banner('Wiki Samples');
const project: string = common.getProject();
const projectObject: CoreInterfaces.TeamProject = await coreApiObject.getProject(project);
console.log('Project:', project);

common.heading('Get all wikis');
const wikis: WikiInterfaces.WikiV2[] = await wikiApiObject.getAllWikis(project);
console.log("Wikis", wikis.map((wiki) => wiki.name));

let wikiId: string;
const createNewWiki: boolean = (wikis.length === 0);
if (createNewWiki) {
common.heading("Create a wiki");
const wikiParams: WikiInterfaces.WikiCreateParametersV2 = <WikiInterfaces.WikiCreateParametersV2>{name: "Hello Wiki", projectId: projectObject.id};
const newWiki = await wikiApiObject.createWiki(wikiParams, project);
console.log("Wiki created:", newWiki.name);
wikiId = newWiki.id;
} else {
wikiId = wikis[0].id;
}

common.heading("Get the text from a wiki");
const pageText: NodeJS.ReadableStream = await wikiApiObject.getPageText(project, wikiId)
console.log("Wiki text", pageText.read().toString());

if (createNewWiki) {
common.heading("Delete the created wiki");
const deletedWiki: WikiInterfaces.WikiV2 = await wikiApiObject.deleteWiki(wikiId, project);
console.log("Wiki", deletedWiki.name, "deleted");
}
}