46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
|
package vanity
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
type SourceDirFile struct {
|
||
|
Dir string
|
||
|
File string
|
||
|
}
|
||
|
|
||
|
func GiteaSDF(pkg Package) SourceDirFile {
|
||
|
return SourceDirFile{
|
||
|
Dir: fmt.Sprintf("%s/src/branch/%s{/dir}", pkg.WebURL, pkg.Branch),
|
||
|
File: fmt.Sprintf("%s/src/branch/%s{/dir}/{file}#L{line}", pkg.WebURL, pkg.Branch),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func GitHubSDF(pkg Package) SourceDirFile {
|
||
|
return SourceDirFile{
|
||
|
Dir: fmt.Sprintf("%s/tree/%s{/dir}", pkg.WebURL, pkg.Branch),
|
||
|
File: fmt.Sprintf("%s/blob/%s{/dir}/{file}#L{line}", pkg.WebURL, pkg.Branch),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func GitLabSDF(pkg Package) SourceDirFile {
|
||
|
return SourceDirFile{
|
||
|
Dir: fmt.Sprintf("%s/-/tree/%s{/dir}", pkg.WebURL, pkg.Branch),
|
||
|
File: fmt.Sprintf("%s/-/blob/%s{/dir}/{file}#L{line}", pkg.WebURL, pkg.Branch),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func AnalyzeSDF(pkg Package) (SourceDirFile, error) {
|
||
|
switch {
|
||
|
case strings.Contains(pkg.WebURL, "gitea.com"):
|
||
|
return GiteaSDF(pkg), nil
|
||
|
case strings.Contains(pkg.WebURL, "github.com"):
|
||
|
return GitHubSDF(pkg), nil
|
||
|
case strings.Contains(pkg.WebURL, "gitlab.com"):
|
||
|
return GitLabSDF(pkg), nil
|
||
|
}
|
||
|
return SourceDirFile{}, errors.New("could not detect SDF")
|
||
|
}
|