mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-26 14:25:35 +02:00
64 lines
1.5 KiB
TypeScript
64 lines
1.5 KiB
TypeScript
import { TestError } from '../Types';
|
|
import type { ApiHelpers } from './api-helper';
|
|
|
|
export class SourceControlApiHelper {
|
|
constructor(private api: ApiHelpers) {}
|
|
|
|
async disconnect({ keepKeyPair = true }: { keepKeyPair?: boolean } = {}) {
|
|
const response = await this.api.request.post('/rest/source-control/disconnect', {
|
|
data: {
|
|
keepKeyPair,
|
|
},
|
|
});
|
|
if (!response.ok()) {
|
|
throw new TestError(`Failed to disconnect from source control: ${await response.text()}`);
|
|
}
|
|
const result = await response.json();
|
|
return result.data;
|
|
}
|
|
|
|
async connect(preferences: {
|
|
repositoryUrl: string;
|
|
}) {
|
|
const response = await this.api.request.post('/rest/source-control/preferences', {
|
|
data: {
|
|
connectionType: 'ssh',
|
|
...preferences,
|
|
},
|
|
});
|
|
|
|
if (!response.ok()) {
|
|
throw new TestError(`Failed to connect to source control: ${await response.text()}`);
|
|
}
|
|
const result = await response.json();
|
|
return result.data;
|
|
}
|
|
|
|
/**
|
|
* This will push all the changes
|
|
* OPTIMIZE: add a fileNames to select what specific changes to push
|
|
* @returns
|
|
*/
|
|
async pushWorkFolder({
|
|
commitMessage,
|
|
force = false,
|
|
}: {
|
|
commitMessage: string;
|
|
force?: boolean;
|
|
}) {
|
|
const response = await this.api.request.post('/rest/source-control/push-workfolder', {
|
|
data: {
|
|
commitMessage,
|
|
force,
|
|
fileNames: [],
|
|
},
|
|
});
|
|
|
|
if (!response.ok()) {
|
|
throw new TestError(`Failed to push work folder: ${await response.text()}`);
|
|
}
|
|
const result = await response.json();
|
|
return result.data;
|
|
}
|
|
}
|