smartstring/ts/smartstring.git.ts

53 lines
1.8 KiB
TypeScript
Raw Normal View History

2016-10-31 23:22:38 +00:00
import * as plugins from './smartstring.plugins'
2016-02-23 06:06:54 +00:00
/* ---------------------------------------------- *
* ------------------ classes ------------------- *
* ---------------------------------------------- */
2016-05-25 03:06:19 +00:00
export class GitRepo {
2016-10-31 23:22:38 +00:00
host: string
user: string
repo: string
accessToken: string
sshUrl: string
httpsUrl: string
constructor(stringArg: string,tokenArg?: string) {
let regexMatches = gitRegex(stringArg)
this.host = regexMatches[1]
this.user = regexMatches[2]
this.repo = regexMatches[3]
this.accessToken = tokenArg
this.sshUrl = gitLink(this.host,this.user,this.repo,this.accessToken, 'ssh')
this.httpsUrl = gitLink(this.host,this.user,this.repo,this.accessToken, 'https')
}
2016-02-23 06:06:54 +00:00
}
/* ---------------------------------------------- *
* ------------------ helpers ------------------- *
* ---------------------------------------------- */
let gitRegex = function(stringArg:string){
let regexString = /([a-zA-Z0-9\-\.]*)(?:\/|\:)([a-zA-Z0-9\-\.]*)(?:\/)([a-zA-Z0-9\-\.]*)(?:\.git)/
2016-10-31 23:22:38 +00:00
let regexMatches = regexString.exec(stringArg)
return regexMatches
}
2016-02-23 06:06:54 +00:00
2016-10-31 23:22:38 +00:00
let gitLink = function(hostArg: string, userArg: string, repoArg: string, tokenArg: string = '', linkTypeArg): string{
let returnString
if (tokenArg !== '') {
tokenArg = tokenArg + '@'
2016-02-23 06:06:54 +00:00
}
switch (linkTypeArg) {
2016-10-31 23:22:38 +00:00
case 'https':
returnString = 'https://' +
tokenArg + hostArg + '/' + userArg + '/' + repoArg + '.git'
break
case 'ssh':
returnString = 'git@' +
hostArg + ':' + userArg + '/' + repoArg + '.git';
break
2016-02-23 06:06:54 +00:00
default:
2016-10-31 23:22:38 +00:00
console.error('Link Type ' + linkTypeArg + ' not known')
break
2016-02-23 06:06:54 +00:00
}
2016-10-31 23:22:38 +00:00
return returnString
}