@ycmd/creds
Version:
LSK.js CLI Creds is the easiest way to manage GitHub / Gitlab secrets and credentials
1 lines • 42 kB
Source Map (JSON)
{"version":3,"sources":["../package.json","../src/cli.ts","../src/commands/buildCommand.ts","../src/services/GithubService.ts","../src/services/Service.ts","../src/services/GitlabService.ts","../src/utils/getDirs.ts","../src/commands/uploadCommand.ts","../src/utils/addCwd.ts","../src/utils/getLogo.ts","../src/utils/printInfo.ts"],"sourcesContent":["{\n \"name\": \"@lskjs/creds\",\n \"version\": \"3.19.0\",\n \"description\": \"LSK.js CLI Creds is the easiest way to manage GitHub / Gitlab secrets and credentials\",\n \"author\": \"Igor Suvorov <hi@isuvorov.com> (https://github.com/isuvorov)\",\n \"private\": false,\n \"scripts\": {\n \"dev\": \" lsk run dev\",\n \"build\": \" lsk run build\",\n \"test\": \" lsk run test\",\n \"prepack\": \" lsk run prepack\",\n \"release\": \" lsk run release\"\n },\n \"dependencies\": {\n \"@lskjs/algos\": \"^3.17.0\",\n \"@lskjs/cli-scripts\": \"^3.19.0\",\n \"@lskjs/cli-utils\": \"^3.17.0\",\n \"@lskjs/colors\": \"^3.17.0\",\n \"@lskjs/env\": \"^3.17.0\",\n \"@lskjs/err\": \"^3.17.0\",\n \"@lskjs/log\": \"^3.17.0\",\n \"@lskjs/stringify\": \"^3.19.0\",\n \"@types/node\": \"18.13.0\",\n \"axios\": \"^1.6.0\",\n \"fishbird\": \"^0.21.0\",\n \"libsodium-wrappers\": \"^0.7.13\",\n \"yargs\": \"^17.7.2\"\n },\n \"//\": \"///////////========================/////////========================/////////========================//////////\",\n \"prettier\": \"@lskjs/eslint-config/prettier\",\n \"eslintConfig\": {\n \"extends\": \"@lskjs/eslint-config\"\n },\n \"jest\": {\n \"preset\": \"@lskjs/jest-config\"\n },\n \"files\": [\n \"bin\",\n \"lib\",\n \"README.md\",\n \"LICENCE\"\n ],\n \"bin\": {\n \"lskcreds\": \"bin/run\"\n },\n \"main\": \"lib/index.js\",\n \"types\": \"lib/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./lib/index.mjs\",\n \"types\": \"./lib/index.d.ts\",\n \"default\": \"./lib/index.js\"\n },\n \"./*\": {\n \"import\": \"./lib/*.mjs\",\n \"types\": \"./lib/*.d.ts\",\n \"default\": \"./lib/*.js\"\n }\n },\n \"///\": \"//////////========================/////////========================/////////========================/////////\",\n \"repository\": \"https://github.com/lskjs/lskjs/tree/master//libs-cli/lsk\",\n \"homepage\": \"https://github.com/lskjs/cli\",\n \"bugs\": \"https://github.com/lskjs/lskjs/issues\",\n \"license\": \"MIT\",\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"keywords\": [\n \"lskjs\",\n \"lsk\",\n \"cli\",\n \"helper\"\n ],\n \"////\": \"/////////========================/////////========================/////////========================/////////\",\n \"oclif\": {\n \"commands\": \"./lib/commands\",\n \"bin\": \"lsk\",\n \"plugins\": [\n \"@oclif/plugin-help\"\n ]\n },\n \"_scripts\": {\n \"postpack\": \"rm -f oclif.manifest.json\",\n \"prepack\": \"rm -rf lib && tsc -b && oclif-dev manifest && oclif-dev readme\",\n \"test\": \"echo skip\",\n \"build\": \"oclif-dev readme && git add README.md && echo ok\"\n },\n \"_size-limit\": [\n {\n \"//\": \"esm error\",\n \"path\": \"lib/index.js\",\n \"limit\": \"1kb\"\n }\n ]\n}\n","#!/usr/bin/env node\n/* eslint-disable no-console */\nimport { Err } from '@lskjs/err';\nimport { log } from '@lskjs/log/log';\nimport yargs from 'yargs';\n\nimport { buildCommand, buildDeepCommand } from './commands/buildCommand';\nimport { uploadCommand } from './commands/uploadCommand';\nimport addCwd from './utils/addCwd';\nimport { getLogo } from './utils/getLogo';\nimport { printInfo } from './utils/printInfo';\n\nexport default yargs(process.argv.slice(2))\n .strict()\n .scriptName('lskcreds')\n .usage('Usage: $0 <command> [options]')\n .command({\n command: 'info',\n aliases: ['i'],\n desc: 'Get info about current project',\n // builder: (yargs) => yargs.default('value', 'true'),\n handler: () => {\n const config = {\n name: require('../package.json').name,\n version: require('../package.json').version,\n };\n console.log(getLogo());\n printInfo({\n log: (...a) => console.log(...a),\n config,\n });\n },\n })\n .command({\n command: 'build <dir> [--force] [--deep]',\n builder: {\n force: {\n type: 'boolean',\n default: false,\n },\n deep: {\n type: 'boolean',\n default: false,\n },\n },\n aliases: ['b'],\n desc: 'Build creds',\n handler: async (argv) => {\n const rawDir = argv.dir || '.';\n const dirname = addCwd(rawDir);\n if (argv.deep) {\n await buildDeepCommand(dirname, { force: argv.force });\n } else {\n await buildCommand(dirname, { force: argv.force });\n }\n },\n })\n .command({\n command: 'upload <dir> [--force] [--deep]',\n builder: {\n force: {\n type: 'boolean',\n default: false,\n },\n deep: {\n type: 'boolean',\n default: false,\n },\n },\n aliases: ['u'],\n desc: 'Upload creds',\n handler: async (argv) => {\n const rawDir = argv.dir || '.';\n const dirname = addCwd(rawDir);\n if (argv.deep) {\n throw new Err('Not implemented mass upload');\n } else {\n await uploadCommand(dirname, { force: argv.force });\n }\n },\n })\n .command({\n command: 'build-upload <dir> [--force] [--deep]',\n builder: {\n force: {\n type: 'boolean',\n default: false,\n },\n deep: {\n type: 'boolean',\n default: false,\n },\n },\n aliases: ['bu'],\n desc: 'Build creds then upload',\n handler: async (argv) => {\n const rawDir = argv.dir || '.';\n const dirname = addCwd(rawDir);\n if (argv.deep) {\n await buildDeepCommand(dirname, { force: argv.force });\n throw new Err('Not implemented mass upload');\n } else {\n await buildCommand(dirname, { force: argv.force });\n await uploadCommand(dirname, { force: argv.force });\n }\n },\n })\n .fail((msg, err) => {\n const errorMessage = msg || Err.getMessage(err);\n if (errorMessage) {\n log.fatal('');\n if (errorMessage) log.fatal(errorMessage);\n log.fatal('');\n }\n if (err) {\n log.error('');\n log.error(err);\n log.error('');\n }\n const isYargsError = !!msg; // && err.name === 'YError';\n if (isYargsError) {\n console.log('');\n String(yargs.showHelp());\n console.log('');\n }\n process.exit(1);\n })\n .demandCommand()\n .alias('h', 'help')\n .help('h').argv;\n","import { Err } from '@lskjs/err';\nimport { log } from '@lskjs/log/log';\nimport { getComment, jsonToFile } from '@lskjs/stringify';\nimport { map, mapSeries } from 'fishbird';\nimport { existsSync } from 'fs';\nimport { mkdir, unlink } from 'fs/promises';\n\nimport { GithubService } from '../services/GithubService';\nimport { GitlabService } from '../services/GitlabService';\nimport { Service } from '../services/Service';\nimport { getDirs } from '../utils/getDirs';\n// import { getFiles } from '../utils/getFiles';\n\nexport async function buildCommand(serviceDirname, options: any = {}) {\n const buildDirDir = options.buildDir || `${serviceDirname}/build`;\n\n let config;\n const configPath = `${serviceDirname}/config.js`;\n try {\n // eslint-disable-next-line import/no-dynamic-require\n config = require(configPath);\n } catch (err) {\n if (err.code === 'MODULE_NOT_FOUND') {\n log.error(`${configPath} not found`);\n return;\n }\n throw err;\n }\n\n await unlink(`${buildDirDir}`).catch(() => {});\n await mkdir(buildDirDir, { recursive: true });\n\n const serviceName = config.service?.serviceName;\n if (!serviceName) throw new Err('!serviceName');\n\n let service: Service;\n if (serviceName === 'github') {\n service = new GithubService({\n ...config.service,\n ...options,\n });\n } else if (serviceName === 'gitlab') {\n service = new GitlabService({\n ...config.service,\n ...options,\n });\n } else {\n throw new Err('incorrect serviceName', { serviceName });\n }\n\n const { files = [] } = config;\n await mapSeries(files, async (fileOptions: any) => {\n const { type, filename, handler } = fileOptions;\n const res = await handler(fileOptions, config);\n const comment = getComment({\n filename,\n values: [\n ['Server', service.getServiceLink()],\n ['Project', service.getProjectPath()],\n ['Project ID', service.getProjectId()],\n ['Project Url', service.getProjectUrl()],\n ['CI/CD Setting', service.getProjectCICDSettingURL()],\n ],\n footer:\n service.getProjectCredsUrl() &&\n `\nAuto generated by ${service.getProjectCredsUrl()}\nIf you want to change something, please contact admin repo.\n `.trim(),\n });\n await jsonToFile(`${buildDirDir}/${filename}`, res, {\n type,\n compare: !options.force,\n comment,\n });\n log.info(`[build] ${service.getProjectPath()} (${filename})`);\n });\n}\nexport async function buildDeepCommand(dirname, options = {}) {\n const rawFiles = await getDirs(dirname);\n const files = (\n await map(rawFiles, async (rawFile) => {\n const { filename } = rawFile;\n if (!(await existsSync(`${filename}/config.js`))) return null;\n return rawFile;\n })\n ).filter(Boolean);\n\n return mapSeries(files, async ({ filename }) => {\n await buildCommand(filename, options).catch((err) => {\n log.error(`Build error ${filename}: `, err);\n });\n });\n}\n","import { Err } from '@lskjs/err';\nimport _sodium from 'libsodium-wrappers';\n\nimport { Service } from './Service';\n\nexport class GithubService extends Service {\n checkConfig() {\n if (!this.token) throw new Err('!token');\n }f\n getBaseUrl() {\n const server = this.server || 'api.github.com';\n return `https://${server}/repos/${this.getProjectPath()}`;\n }\n getHeaders() {\n return {\n Accept: 'application/vnd.github+json',\n Authorization: `Bearer ${this.token}`,\n 'X-GitHub-Api-Version': '2022-11-28',\n };\n }\n getServiceLink() {\n return 'github.com';\n }\n getProjectUrl() {\n return `https://${this.getServiceLink()}/${this.projectName}`;\n }\n getProjectCICDSettingURL() {\n return `${this.getProjectUrl()}/settings/secrets/actions`;\n }\n async uploadSecret(key, content) {\n const { data: publicKeyData } = await this.client({\n method: 'get',\n url: `/actions/secrets/public-key`,\n }).catch((err) => {\n // TODO: сделать такой интерцептор\n throw new Err(err.message, { data: err?.response?.data });\n // console.log(err.response.data);\n });\n // console.log({ publicKeyData });\n\n if (!publicKeyData?.key) throw new Err('!publicKey');\n if (!publicKeyData?.key_id) throw new Err('!publicKeyId');\n\n await _sodium.ready;\n const sodium = _sodium;\n const binkey = sodium.from_base64(publicKeyData.key, sodium.base64_variants.ORIGINAL);\n const binsec = sodium.from_string(content);\n const encBytes = sodium.crypto_box_seal(binsec, binkey);\n const output = sodium.to_base64(encBytes, sodium.base64_variants.ORIGINAL);\n\n await this.client({\n method: 'put',\n url: `/actions/secrets/${key}`,\n data: {\n encrypted_value: output,\n key_id: publicKeyData.key_id,\n },\n });\n }\n async uploadVariable(key, content) {\n const { data: varData, status } = await this.client({\n method: 'get',\n url: `/actions/variables/${key}`,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n }).catch((err) => err?.response);\n if (status === 404) {\n await this.client({\n method: 'post',\n url: `/actions/variables`,\n data: {\n name: key,\n value: content,\n },\n });\n }\n if (status === 200 && varData.name.toLowerCase() === key.toLowerCase()) {\n await this.client({\n method: 'patch',\n url: `/actions/variables/${key}`,\n data: {\n name: key,\n value: content,\n },\n });\n }\n }\n uploadHook(): Promise<void> {\n throw new Err('Github hooks not supported yet');\n }\n}\n","import { Err } from '@lskjs/err';\nimport { log } from '@lskjs/log/log';\nimport axios from 'axios';\nimport { map } from 'fishbird';\n\ntype SecretFile = {\n name: string;\n filename: string;\n credType?: string;\n content?: string;\n handler: (any) => Record<string, any>;\n};\ntype Secrets = {\n secrets?: Record<string, string>;\n variables?: Record<string, string>;\n files?: Array<SecretFile>;\n hooks?: Array<any>;\n};\n\nexport class Service {\n projectId?: string;\n projectName?: string;\n projectPath?: string;\n projectCredsUrl?: string;\n\n token: string;\n server: string;\n force: boolean;\n\n client: axios.AxiosInstance;\n\n constructor(options) {\n Object.assign(this, options);\n this.checkConfig();\n const clientOptions = {\n baseURL: this.getBaseUrl(),\n headers: this.getHeaders(),\n };\n this.client = axios.create(clientOptions);\n // TODO: сделать такой интерцептор\n // .catch((err) => {\n // throw new Err(err.message, { data: err?.response?.data });\n // // console.log(err.response.data);\n // });\n }\n\n checkConfig() {\n throw new Err('NOT_IMPLEMENTED');\n }\n getBaseUrl() {\n return null;\n }\n getHeaders() {\n return {};\n }\n getServiceLink() {\n return null;\n }\n getProjectName() {\n return this.projectName;\n }\n getProjectId() {\n return this.projectId;\n }\n getProjectPath() {\n return this.projectPath;\n }\n getProjectUrl() {\n return null;\n }\n getProjectCredsUrl() {\n return this.projectCredsUrl;\n }\n getProjectCICDSettingURL() {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async uploadSecret(key: string, content: string) {\n throw new Err('NOT_IMPLEMENTED');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async uploadVariable(key: string, content: string) {\n throw new Err('NOT_IMPLEMENTED');\n }\n\n async removeOldHooks() {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async uploadHook(dataHook: any) {}\n\n async uploadHooks(env: Secrets): Promise<void> {\n if (!env) throw new Err('!env');\n const { hooks = [] } = env;\n try {\n await this.removeOldHooks();\n } catch (e) {\n log.error(`[ERR] Old hooks removing failed:`, e.message);\n }\n\n await map(hooks, async (dataHook, index) => {\n try {\n await this.uploadHook(dataHook);\n log.info(`[OK] Hook ${index} uploaded`);\n } catch (e) {\n log.error(`[ERR] Hook ${index} not uploaded:`, e.message);\n }\n });\n }\n\n async uploadAll(env: Secrets) {\n if (!env) throw new Err('!env');\n const { secrets = {}, variables = {}, files = [] } = env;\n await this.uploadHooks(env);\n await map(Object.entries(secrets), async ([key, value]) => {\n try {\n await this.uploadSecret(key, value);\n log.info(`[OK] Secret ${key} uploaded`);\n } catch (e) {\n log.error(`[ERR] Secret ${key} not uploaded, because`, e.message);\n log.error(e);\n }\n });\n await map(Object.entries(variables), async ([key, value]) => {\n try {\n await this.uploadVariable(key, value);\n log.info(`[OK] Variable ${key} uploaded`);\n } catch (e) {\n log.error(`[ERR] Variable ${key} not uploaded, because`, e.message);\n // log.error(e);\n }\n });\n await map(files, async ({ name, credType, content }: any) => {\n const key = name;\n const value = content;\n try {\n if (credType === 'variable') {\n await this.uploadVariable(key, value);\n } else if (credType === 'secret') {\n await this.uploadSecret(key, value);\n } else if (credType === 'skip') {\n log.debug(`[SKIP] File ${key} uploaded as ${credType}`);\n return;\n } else {\n throw new Err('unknown credType', { credType });\n }\n log.info(`[OK] File ${key} uploaded as ${credType}`);\n } catch (e) {\n log.error(`[ERR] File ${key} not uploaded as ${credType}, because`, e.message);\n // log.error(e);\n }\n });\n }\n}\n","import { Err } from '@lskjs/err';\nimport { log } from '@lskjs/log/log';\nimport { map } from 'fishbird';\n\nimport { Service } from './Service';\n\nexport class GitlabService extends Service {\n checkConfig() {\n if (!this.server) throw new Err('!server');\n if (!this.projectId) throw new Err('!projectId');\n if (!this.token) throw new Err('!token');\n }\n getBaseUrl() {\n return `https://${this.server}/api/v4/projects/${this.getProjectId()}`;\n }\n getHeaders() {\n return {\n 'PRIVATE-TOKEN': this.token,\n };\n }\n getServiceLink() {\n return this.server;\n }\n getProjectUrl() {\n return `https://${this.getServiceLink()}/${this.getProjectPath()}`;\n }\n getProjectCICDSettingURL() {\n return `${this.getProjectUrl()}/-/settings/ci_cd`;\n }\n async uploadSecret(key, content) {\n const { data: varData } = await this.client({\n method: 'get',\n url: `/variables/${key}`,\n }).catch((err) => {\n if (!this.force) throw err;\n return { data: { value: '@lskjs/creds' } };\n });\n\n if (varData.value && varData.value.indexOf('@lskjs/creds') === -1 && !this.force) {\n log.warn(`[IGNORE] Project ${this.projectId} ${key}`);\n return;\n }\n\n await this.client({\n method: 'delete',\n url: `/variables/${key}`,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n }).catch(() => {});\n\n await this.client({\n method: 'post',\n url: '/variables',\n data: {\n key,\n variable_type: 'file',\n value: content,\n protected: true,\n // masked: true,\n },\n });\n }\n async uploadVariable() {\n log.warn(\"GitLab uploading variable doesn't supported\");\n throw new Err('NOT_IMPLEMENTED');\n }\n async uploadEnv() {\n log.warn(\"GitLab uploading env doesn't supported\");\n throw new Err('NOT_IMPLEMENTED');\n }\n\n async removeOldHooks() {\n const { data: hooksList } = await this.client({\n method: 'get',\n url: `/hooks`,\n }).catch((err) => {\n if (!this.force) throw err;\n return { data: { value: '@lskjs/creds' } };\n });\n await map(hooksList, async ({ id: hookId }) => {\n await this.client({\n method: 'delete',\n url: `/hooks/${hookId}`,\n });\n });\n }\n async uploadHook(hook) {\n await this.client({\n method: 'post',\n url: '/hooks',\n data: hook,\n });\n }\n}\n","import { map } from 'fishbird';\nimport { readdir } from 'fs/promises';\nimport { resolve } from 'path';\n\nexport async function getDirs(dir) {\n const dirents = await readdir(dir, { withFileTypes: true });\n const files = await map(dirents, async (dirent) => {\n if (!dirent.isDirectory()) return [];\n\n return [\n { name: dirent.name, dir: resolve(dir), filename: resolve(dir, dirent.name) },\n ...(await getDirs(resolve(dir, dirent.name))),\n ];\n });\n return files.flat();\n\n // // TODO: иногда возвращает странность\n // const dirents = await readdir(dir, { withFileTypes: true });\n // const files = await Promise.all(\n // dirents.map((dirent) => {\n // const filename = resolve(dir, dirent.name);\n // if (!dirent.isDirectory()) return [];\n // return getDirs(filename)\n\n // return dirent.isDirectory()\n // ? getDirs(filename)\n // : { name: dirent.name, dir: resolve(dir), filename };\n // }),\n // );\n // return Array.prototype.concat(...files);\n}\n","import { Err } from '@lskjs/err';\nimport { mapSeries } from 'fishbird';\nimport { readFile } from 'fs/promises';\n\nimport { GithubService } from '../services/GithubService';\nimport { GitlabService } from '../services/GitlabService';\nimport { Service } from '../services/Service';\n\nexport async function uploadCommand(serviceDirname, options: any = {}) {\n const buildDirDir = options.buildDir || `${serviceDirname}/build`;\n\n // eslint-disable-next-line import/no-dynamic-require\n const config = require(`${serviceDirname}/config.js`);\n\n const serviceName = config.service?.serviceName;\n if (!serviceName) throw new Err('!serviceName');\n\n let service: Service;\n if (serviceName === 'github') {\n service = new GithubService({\n ...config.service,\n ...options,\n });\n } else if (serviceName === 'gitlab') {\n service = new GitlabService({\n ...config.service,\n ...options,\n });\n } else {\n throw new Err('incorrect serviceName', { serviceName });\n }\n\n const { files: rawFiles = [], variables, secrets, hooks } = config;\n\n const files = await mapSeries(rawFiles, async (fileOptions: any) => {\n const { filename } = fileOptions;\n const content = await readFile(`${buildDirDir}/${filename}`).then((f) => f.toString());\n return {\n ...fileOptions,\n content,\n };\n });\n await service.uploadAll({\n files,\n variables,\n secrets,\n hooks,\n });\n}\n","export function addCwd(dir) {\n if (typeof dir !== 'string') return dir;\n if (dir[0] === '/') return dir;\n // eslint-disable-next-line no-param-reassign\n if (dir[0] === '~') dir = dir.slice(2);\n return `${process.cwd()}/${dir}`;\n}\n\nexport default addCwd;\n","/* eslint-disable */\n// @ts-ignore\nimport { colorize } from '@lskjs/colors';\n\nconst logo = `\n__ $ _______.$ __ ___ $ __ _______.\n| | $ / |$| |/ / $ | | / |\n| | $ | (----.$| ' / $ | | | (----.\n| | $ \\\\ \\\\ $| < $ .--. | | \\\\ \\\\ \n| .----.$----) | $| . \\\\ $ | .--' | .----) | \n|_______|$_______/ $|__|\\\\__\\\\ $ \\\\______/ |_______/ \n $ $ $ \n`;\n/* eslint-enable */\n\ntype Color = any;\nconst colors: Color[][] = [\n ['bold', 'red'],\n ['bold', 'blue'],\n ['bold', 'cyan'],\n ['bold', 'yellow'],\n];\n\nexport function getLogo({ color = 1 } = {}) {\n if (!color) return logo;\n const coloredLogo = logo\n .split('\\n')\n .map((row) =>\n row\n .split('$')\n .map((str, cellId) => {\n if (str === '#') return colorize(' ', ['bgYellow']);\n if (!colors[cellId]) return '';\n return colorize(str.replace(/#/g, colorize(' ', ['bgYellow'])), colors[cellId]);\n })\n .join(''),\n )\n .join('\\n');\n // this.log(logo)\n return coloredLogo;\n}\nexport default getLogo;\n","import { mapValues } from '@lskjs/algos';\nimport { getCwdInfo, getLskConfig } from '@lskjs/cli-utils';\nimport env from '@lskjs/env';\n\n// @ts-ignore\nexport function printInfo({ config, log } = {}) {\n const pad = (a: string) => `${a} `.padEnd(14);\n log(pad('[Name] '), config.name);\n log(pad('[Version] '), config.version);\n // log(pad('System: '), config.userAgent);\n // log(pad('CLI: '), config.root);\n // log(pad(\"Scripts: \"), config.version);\n\n const cwd = process.cwd();\n\n log(pad(''));\n log(pad('[CWD] '), cwd);\n mapValues(getCwdInfo({ cwd }), (value: string, key: string) => {\n log(pad(`${key}`), value);\n });\n\n log(pad(''));\n log(pad('[ENV] '));\n const envKeys = Object.keys(env)\n .sort()\n .filter((key) => key !== 'stage' && key !== 'version');\n log(pad(`stage`), env.stage);\n log(pad(`version`), env.version);\n\n envKeys.forEach((key: string) => {\n const value = env[key];\n log(pad(`${key}`), value);\n });\n\n // eslint-disable-next-line no-console\n const lskrc = getLskConfig();\n log(pad(''));\n log(pad('[lskrc]'), lskrc.path || 'Not found');\n if (process.env.DEBUG) {\n log(lskrc);\n log(pad('[config]'), config);\n }\n}\n\nexport default printInfo;\n"],"mappings":"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","names":["require_package","__commonJSMin","exports","module","Err","log","yargs","Err","log","getComment","jsonToFile","map","mapSeries","existsSync","mkdir","unlink","Err","_sodium","Err","log","axios","map","Service","projectId","projectName","projectPath","projectCredsUrl","token","server","force","client","constructor","options","Object","assign","checkConfig","clientOptions","baseURL","getBaseUrl","headers","getHeaders","axios","create","Err","getServiceLink","getProjectName","getProjectId","getProjectPath","getProjectUrl","getProjectCredsUrl","getProjectCICDSettingURL","uploadSecret","key","content","uploadVariable","removeOldHooks","uploadHook","dataHook","uploadHooks","env","hooks","e","log","error","message","map","index","info","uploadAll","secrets","variables","files","entries","value","name","credType","debug","GithubService","Service","checkConfig","token","Err","f","getBaseUrl","server","getProjectPath","getHeaders","Accept","Authorization","getServiceLink","getProjectUrl","projectName","getProjectCICDSettingURL","uploadSecret","key","content","data","publicKeyData","client","method","url","catch","err","message","response","key_id","_sodium","ready","sodium","binkey","from_base64","base64_variants","ORIGINAL","binsec","from_string","encBytes","crypto_box_seal","output","to_base64","encrypted_value","uploadVariable","varData","status","name","value","toLowerCase","uploadHook","Err","log","map","GitlabService","Service","checkConfig","server","Err","projectId","token","getBaseUrl","getProjectId","getHeaders","getServiceLink","getProjectUrl","getProjectPath","getProjectCICDSettingURL","uploadSecret","key","content","data","varData","client","method","url","catch","err","force","value","indexOf","log","warn","variable_type","protected","uploadVariable","uploadEnv","removeOldHooks","hooksList","map","id","hookId","uploadHook","hook","map","readdir","resolve","getDirs","dir","dirents","readdir","withFileTypes","map","dirent","isDirectory","name","resolve","filename","flat","buildCommand","serviceDirname","options","buildDirDir","buildDir","config","configPath","require","err","code","log","error","unlink","catch","mkdir","recursive","serviceName","service","Err","GithubService","GitlabService","files","mapSeries","fileOptions","type","filename","handler","res","comment","getComment","values","getServiceLink","getProjectPath","getProjectId","getProjectUrl","getProjectCICDSettingURL","footer","getProjectCredsUrl","trim","jsonToFile","compare","force","info","buildDeepCommand","dirname","rawFiles","getDirs","map","rawFile","existsSync","filter","Boolean","Err","mapSeries","readFile","uploadCommand","serviceDirname","options","buildDirDir","buildDir","config","require","serviceName","service","Err","GithubService","GitlabService","files","rawFiles","variables","secrets","hooks","mapSeries","fileOptions","filename","content","readFile","then","f","toString","uploadAll","addCwd","dir","slice","process","cwd","addCwd_default","colorize","logo","colors","getLogo","color","split","map","row","str","cellId","colorize","replace","join","mapValues","getCwdInfo","getLskConfig","env","printInfo","config","log","pad","__name","a","padEnd","name","version","cwd","process","mapValues","getCwdInfo","value","key","envKeys","Object","keys","env","sort","filter","stage","forEach","lskrc","getLskConfig","path","DEBUG","cli_default","yargs","process","argv","slice","strict","scriptName","usage","command","aliases","desc","handler","config","name","require","version","console","log","getLogo","printInfo","a","builder","force","type","default","deep","rawDir","dir","dirname","addCwd","buildDeepCommand","buildCommand","Err","uploadCommand","fail","msg","err","errorMessage","getMessage","fatal","error","String","showHelp","exit","demandCommand","alias","help"]}