diff --git a/README.md b/README.md index 7eef03c..03e1e67 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ on: jobs: deploy: steps: - - uses: https://gitea.dsv.su.se/ansv7779/action-branch-deploy@v1 + - uses: https://gitea.dsv.su.se/ansv7779/action-branch-deploy@v2 with: ssh-key: ${{ secrets.BRANCH_DEPLOY_KEY }} compose-file: compose.yaml @@ -36,7 +36,7 @@ on: jobs: cleanup: steps: - - uses: https://gitea.dsv.su.se/ansv7779/action-branch-deploy@v1 + - uses: https://gitea.dsv.su.se/ansv7779/action-branch-deploy@v2 with: cleanup-ssh-key: ${{ secrets.BRANCH_CLEANUP_KEY }} compose-file: compose.yaml diff --git a/dist/index.js b/dist/index.js index 1e9ec10..ba40f6b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -41,9 +41,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge Object.defineProperty(exports, "__esModule", ({ value: true })); const core = __importStar(__nccwpck_require__(7484)); const gitea = __importStar(__nccwpck_require__(3228)); -const client = __importStar(__nccwpck_require__(8486)); const exec = __importStar(__nccwpck_require__(5236)); const fs = __importStar(__nccwpck_require__(9896)); +function getSSHKey() { + const mode = core.getInput('mode', { required: true }); + if (mode === 'cleanup') { + return core.getInput('cleanup-ssh-key', { required: true }); + } + else { + return core.getInput('ssh-key', { required: true }); + } +} function main() { return __awaiter(this, void 0, void 0, function* () { const branchName = process.env.GITHUB_HEAD_REF; @@ -55,27 +63,7 @@ function main() { core.info(`Branch name: ${branchName}`); core.info(`Repository name: ${repositoryName}`); core.setOutput('url', `https://${repositoryName}-${mangledBranchName}.branch.dsv.su.se`); - const api = client.default({ - baseUrl: gitea.context.apiUrl, - headers: { - ["Authorization"]: `token ${core.getInput('gitea-token', { required: true })}` - } - }); - const { data, error } = yield api.GET('/repos/{owner}/{repo}', { - params: { - path: { - owner: gitea.context.repo.owner, - repo: gitea.context.repo.repo - } - } - }); - if (data) { - core.info(`Repository: ${data.updated_at}`); - } - if (error) { - core.error(`Error fetching repository: ${JSON.stringify(error)}`); - } - const sshKey = core.getInput('ssh-key', { required: true }); + const sshKey = getSSHKey(); core.info(`sshKey: ${sshKey.length}`); fs.writeFileSync('ssh_key', `${sshKey}\n`, { flag: 'w+', mode: "0600" }); const deployCommand = `\ @@ -31869,492 +31857,6 @@ function parseParams (str) { module.exports = parseParams -/***/ }), - -/***/ 8486: -/***/ ((module) => { - -"use strict"; - -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); - -// src/index.js -var src_exports = {}; -__export(src_exports, { - createFinalURL: () => createFinalURL, - createPathBasedClient: () => createPathBasedClient, - createQuerySerializer: () => createQuerySerializer, - default: () => createClient, - defaultBodySerializer: () => defaultBodySerializer, - defaultPathSerializer: () => defaultPathSerializer, - mergeHeaders: () => mergeHeaders, - randomID: () => randomID, - removeTrailingSlash: () => removeTrailingSlash, - serializeArrayParam: () => serializeArrayParam, - serializeObjectParam: () => serializeObjectParam, - serializePrimitiveParam: () => serializePrimitiveParam, - wrapAsPathBasedClient: () => wrapAsPathBasedClient -}); -module.exports = __toCommonJS(src_exports); -var PATH_PARAM_RE = /\{[^{}]+\}/g; -function randomID() { - return Math.random().toString(36).slice(2, 11); -} -function createClient(clientOptions) { - let { - baseUrl = "", - Request: CustomRequest = globalThis.Request, - fetch: baseFetch = globalThis.fetch, - querySerializer: globalQuerySerializer, - bodySerializer: globalBodySerializer, - headers: baseHeaders, - ...baseOptions - } = { ...clientOptions }; - baseUrl = removeTrailingSlash(baseUrl); - const middlewares = []; - async function coreFetch(schemaPath, fetchOptions) { - const { - baseUrl: localBaseUrl, - fetch = baseFetch, - Request = CustomRequest, - headers, - params = {}, - parseAs = "json", - querySerializer: requestQuerySerializer, - bodySerializer = globalBodySerializer ?? defaultBodySerializer, - body, - ...init - } = fetchOptions || {}; - if (localBaseUrl) { - baseUrl = removeTrailingSlash(localBaseUrl); - } - let querySerializer = typeof globalQuerySerializer === "function" ? globalQuerySerializer : createQuerySerializer(globalQuerySerializer); - if (requestQuerySerializer) { - querySerializer = typeof requestQuerySerializer === "function" ? requestQuerySerializer : createQuerySerializer({ - ...typeof globalQuerySerializer === "object" ? globalQuerySerializer : {}, - ...requestQuerySerializer - }); - } - const serializedBody = body === void 0 ? void 0 : bodySerializer(body); - const defaultHeaders = ( - // with no body, we should not to set Content-Type - serializedBody === void 0 || // if serialized body is FormData; browser will correctly set Content-Type & boundary expression - serializedBody instanceof FormData ? {} : { - "Content-Type": "application/json" - } - ); - const requestInit = { - redirect: "follow", - ...baseOptions, - ...init, - body: serializedBody, - headers: mergeHeaders(defaultHeaders, baseHeaders, headers, params.header) - }; - let id; - let options; - let request = new CustomRequest(createFinalURL(schemaPath, { baseUrl, params, querySerializer }), requestInit); - for (const key in init) { - if (!(key in request)) { - request[key] = init[key]; - } - } - if (middlewares.length) { - id = randomID(); - options = Object.freeze({ - baseUrl, - fetch, - parseAs, - querySerializer, - bodySerializer - }); - for (const m of middlewares) { - if (m && typeof m === "object" && typeof m.onRequest === "function") { - const result = await m.onRequest({ - request, - schemaPath, - params, - options, - id - }); - if (result) { - if (!(result instanceof CustomRequest)) { - throw new Error("onRequest: must return new Request() when modifying the request"); - } - request = result; - } - } - } - } - let response = await fetch(request); - if (middlewares.length) { - for (let i = middlewares.length - 1; i >= 0; i--) { - const m = middlewares[i]; - if (m && typeof m === "object" && typeof m.onResponse === "function") { - const result = await m.onResponse({ - request, - response, - schemaPath, - params, - options, - id - }); - if (result) { - if (!(result instanceof Response)) { - throw new Error("onResponse: must return new Response() when modifying the response"); - } - response = result; - } - } - } - } - if (response.status === 204 || response.headers.get("Content-Length") === "0") { - return response.ok ? { data: {}, response } : { error: {}, response }; - } - if (response.ok) { - if (parseAs === "stream") { - return { data: response.body, response }; - } - return { data: await response[parseAs](), response }; - } - let error = await response.text(); - try { - error = JSON.parse(error); - } catch { - } - return { error, response }; - } - return { - /** Call a GET endpoint */ - GET(url, init) { - return coreFetch(url, { ...init, method: "GET" }); - }, - /** Call a PUT endpoint */ - PUT(url, init) { - return coreFetch(url, { ...init, method: "PUT" }); - }, - /** Call a POST endpoint */ - POST(url, init) { - return coreFetch(url, { ...init, method: "POST" }); - }, - /** Call a DELETE endpoint */ - DELETE(url, init) { - return coreFetch(url, { ...init, method: "DELETE" }); - }, - /** Call a OPTIONS endpoint */ - OPTIONS(url, init) { - return coreFetch(url, { ...init, method: "OPTIONS" }); - }, - /** Call a HEAD endpoint */ - HEAD(url, init) { - return coreFetch(url, { ...init, method: "HEAD" }); - }, - /** Call a PATCH endpoint */ - PATCH(url, init) { - return coreFetch(url, { ...init, method: "PATCH" }); - }, - /** Call a TRACE endpoint */ - TRACE(url, init) { - return coreFetch(url, { ...init, method: "TRACE" }); - }, - /** Register middleware */ - use(...middleware) { - for (const m of middleware) { - if (!m) { - continue; - } - if (typeof m !== "object" || !("onRequest" in m || "onResponse" in m)) { - throw new Error("Middleware must be an object with one of `onRequest()` or `onResponse()`"); - } - middlewares.push(m); - } - }, - /** Unregister middleware */ - eject(...middleware) { - for (const m of middleware) { - const i = middlewares.indexOf(m); - if (i !== -1) { - middlewares.splice(i, 1); - } - } - } - }; -} -var PathCallForwarder = class { - constructor(client, url) { - this.client = client; - this.url = url; - } - GET(init) { - return this.client.GET(this.url, init); - } - PUT(init) { - return this.client.PUT(this.url, init); - } - POST(init) { - return this.client.POST(this.url, init); - } - DELETE(init) { - return this.client.DELETE(this.url, init); - } - OPTIONS(init) { - return this.client.OPTIONS(this.url, init); - } - HEAD(init) { - return this.client.HEAD(this.url, init); - } - PATCH(init) { - return this.client.PATCH(this.url, init); - } - TRACE(init) { - return this.client.TRACE(this.url, init); - } -}; -var PathClientProxyHandler = class { - constructor() { - this.client = null; - } - // Assume the property is an URL. - get(coreClient, url) { - const forwarder = new PathCallForwarder(coreClient, url); - this.client[url] = forwarder; - return forwarder; - } -}; -function wrapAsPathBasedClient(coreClient) { - const handler = new PathClientProxyHandler(); - const proxy = new Proxy(coreClient, handler); - function Client() { - } - Client.prototype = proxy; - const client = new Client(); - handler.client = client; - return client; -} -function createPathBasedClient(clientOptions) { - return wrapAsPathBasedClient(createClient(clientOptions)); -} -function serializePrimitiveParam(name, value, options) { - if (value === void 0 || value === null) { - return ""; - } - if (typeof value === "object") { - throw new Error( - "Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these." - ); - } - return `${name}=${options?.allowReserved === true ? value : encodeURIComponent(value)}`; -} -function serializeObjectParam(name, value, options) { - if (!value || typeof value !== "object") { - return ""; - } - const values = []; - const joiner = { - simple: ",", - label: ".", - matrix: ";" - }[options.style] || "&"; - if (options.style !== "deepObject" && options.explode === false) { - for (const k in value) { - values.push(k, options.allowReserved === true ? value[k] : encodeURIComponent(value[k])); - } - const final2 = values.join(","); - switch (options.style) { - case "form": { - return `${name}=${final2}`; - } - case "label": { - return `.${final2}`; - } - case "matrix": { - return `;${name}=${final2}`; - } - default: { - return final2; - } - } - } - for (const k in value) { - const finalName = options.style === "deepObject" ? `${name}[${k}]` : k; - values.push(serializePrimitiveParam(finalName, value[k], options)); - } - const final = values.join(joiner); - return options.style === "label" || options.style === "matrix" ? `${joiner}${final}` : final; -} -function serializeArrayParam(name, value, options) { - if (!Array.isArray(value)) { - return ""; - } - if (options.explode === false) { - const joiner2 = { form: ",", spaceDelimited: "%20", pipeDelimited: "|" }[options.style] || ","; - const final = (options.allowReserved === true ? value : value.map((v) => encodeURIComponent(v))).join(joiner2); - switch (options.style) { - case "simple": { - return final; - } - case "label": { - return `.${final}`; - } - case "matrix": { - return `;${name}=${final}`; - } - // case "spaceDelimited": - // case "pipeDelimited": - default: { - return `${name}=${final}`; - } - } - } - const joiner = { simple: ",", label: ".", matrix: ";" }[options.style] || "&"; - const values = []; - for (const v of value) { - if (options.style === "simple" || options.style === "label") { - values.push(options.allowReserved === true ? v : encodeURIComponent(v)); - } else { - values.push(serializePrimitiveParam(name, v, options)); - } - } - return options.style === "label" || options.style === "matrix" ? `${joiner}${values.join(joiner)}` : values.join(joiner); -} -function createQuerySerializer(options) { - return function querySerializer(queryParams) { - const search = []; - if (queryParams && typeof queryParams === "object") { - for (const name in queryParams) { - const value = queryParams[name]; - if (value === void 0 || value === null) { - continue; - } - if (Array.isArray(value)) { - search.push( - serializeArrayParam(name, value, { - style: "form", - explode: true, - ...options?.array, - allowReserved: options?.allowReserved || false - }) - ); - continue; - } - if (typeof value === "object") { - search.push( - serializeObjectParam(name, value, { - style: "deepObject", - explode: true, - ...options?.object, - allowReserved: options?.allowReserved || false - }) - ); - continue; - } - search.push(serializePrimitiveParam(name, value, options)); - } - } - return search.join("&"); - }; -} -function defaultPathSerializer(pathname, pathParams) { - let nextURL = pathname; - for (const match of pathname.match(PATH_PARAM_RE) ?? []) { - let name = match.substring(1, match.length - 1); - let explode = false; - let style = "simple"; - if (name.endsWith("*")) { - explode = true; - name = name.substring(0, name.length - 1); - } - if (name.startsWith(".")) { - style = "label"; - name = name.substring(1); - } else if (name.startsWith(";")) { - style = "matrix"; - name = name.substring(1); - } - if (!pathParams || pathParams[name] === void 0 || pathParams[name] === null) { - continue; - } - const value = pathParams[name]; - if (Array.isArray(value)) { - nextURL = nextURL.replace(match, serializeArrayParam(name, value, { style, explode })); - continue; - } - if (typeof value === "object") { - nextURL = nextURL.replace(match, serializeObjectParam(name, value, { style, explode })); - continue; - } - if (style === "matrix") { - nextURL = nextURL.replace(match, `;${serializePrimitiveParam(name, value)}`); - continue; - } - nextURL = nextURL.replace(match, style === "label" ? `.${encodeURIComponent(value)}` : encodeURIComponent(value)); - } - return nextURL; -} -function defaultBodySerializer(body) { - if (body instanceof FormData) { - return body; - } - return JSON.stringify(body); -} -function createFinalURL(pathname, options) { - let finalURL = `${options.baseUrl}${pathname}`; - if (options.params?.path) { - finalURL = defaultPathSerializer(finalURL, options.params.path); - } - let search = options.querySerializer(options.params.query ?? {}); - if (search.startsWith("?")) { - search = search.substring(1); - } - if (search) { - finalURL += `?${search}`; - } - return finalURL; -} -function mergeHeaders(...allHeaders) { - const finalHeaders = new Headers(); - for (const h of allHeaders) { - if (!h || typeof h !== "object") { - continue; - } - const iterator = h instanceof Headers ? h.entries() : Object.entries(h); - for (const [k, v] of iterator) { - if (v === null) { - finalHeaders.delete(k); - } else if (Array.isArray(v)) { - for (const v2 of v) { - finalHeaders.append(k, v2); - } - } else if (v !== void 0) { - finalHeaders.set(k, v); - } - } - } - return finalHeaders; -} -function removeTrailingSlash(url) { - if (url.endsWith("/")) { - return url.substring(0, url.length - 1); - } - return url; -} - - /***/ }) /******/ });