Files
NapCatQQ/.pnpm-store/v3/files/ee/3fc4f4c6520635023a0026556a3230e6a81f08e360313339b0553bbd7fc115bd5d657e94f57e12b7789c5f4a6b30a01636a284899b309a0af19c359e78c92b
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

111 lines
2.4 KiB
Plaintext

'use strict'
const gitHosts = require('./git-host-info.js')
class GitHost {
constructor (type, user, auth, project, committish, defaultRepresentation, opts = {}) {
Object.assign(this, gitHosts[type])
this.type = type
this.user = user
this.auth = auth
this.project = project
this.committish = committish
this.default = defaultRepresentation
this.opts = opts
}
hash () {
return this.committish ? `#${this.committish}` : ''
}
ssh (opts) {
return this._fill(this.sshtemplate, opts)
}
_fill (template, opts) {
if (typeof template === 'function') {
const options = { ...this, ...this.opts, ...opts }
// the path should always be set so we don't end up with 'undefined' in urls
if (!options.path) {
options.path = ''
}
// template functions will insert the leading slash themselves
if (options.path.startsWith('/')) {
options.path = options.path.slice(1)
}
if (options.noCommittish) {
options.committish = null
}
const result = template(options)
return options.noGitPlus && result.startsWith('git+') ? result.slice(4) : result
}
return null
}
sshurl (opts) {
return this._fill(this.sshurltemplate, opts)
}
browse (path, fragment, opts) {
// not a string, treat path as opts
if (typeof path !== 'string') {
return this._fill(this.browsetemplate, path)
}
if (typeof fragment !== 'string') {
opts = fragment
fragment = null
}
return this._fill(this.browsefiletemplate, { ...opts, fragment, path })
}
docs (opts) {
return this._fill(this.docstemplate, opts)
}
bugs (opts) {
return this._fill(this.bugstemplate, opts)
}
https (opts) {
return this._fill(this.httpstemplate, opts)
}
git (opts) {
return this._fill(this.gittemplate, opts)
}
shortcut (opts) {
return this._fill(this.shortcuttemplate, opts)
}
path (opts) {
return this._fill(this.pathtemplate, opts)
}
tarball (opts) {
return this._fill(this.tarballtemplate, { ...opts, noCommittish: false })
}
file (path, opts) {
return this._fill(this.filetemplate, { ...opts, path })
}
getDefaultRepresentation () {
return this.default
}
toString (opts) {
if (this.default && typeof this[this.default] === 'function') {
return this[this.default](opts)
}
return this.sshurl(opts)
}
}
module.exports = GitHost