-
Notifications
You must be signed in to change notification settings - Fork 2
/
vendor.go
133 lines (112 loc) · 3.73 KB
/
vendor.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package pkg
import (
"os"
"path/filepath"
)
const (
VendorName = "vendor"
VendorCache = "cache"
VendorSrc = "src"
VendorPkg = "pkg"
VendorScripts = "scripts"
VendorInclude = "include"
VendorLib = "lib"
VendorLib64 = "lib64"
VendorUserHome = ".pkg"
VendorUserHomeSrc = "registry/default-pkg/src"
)
const (
PkgFileName = "pkg.yaml"
PurgePkgSumFileName = "pkg.sum.yaml"
PkgSumFileName = VendorName + "/" + PurgePkgSumFileName
VendorSrcDir = VendorName + "/" + "src"
BuildShellName = "pkg.build.sh"
CMakeDep = "pkg.dep.cmake"
DepGraph = "pkg.graph"
CMakeVendorPath = "${VENDOR_PATH}"
)
const RootPKG = "root"
func GetVendorPath(base string) string {
return filepath.Join(base, VendorName)
}
func GetPkgBuildPath(base string) string {
return filepath.Join(base, VendorName, BuildShellName)
}
func GetDepGraphPath(base string) string {
return filepath.Join(base, VendorName, DepGraph)
}
func GetPkgSumPath(base string) string {
return filepath.Join(base, PkgSumFileName)
}
func GetPkgSrcPath(base string) string {
return filepath.Join(base, VendorSrcDir)
}
func getPackageVendorSrcPath(base string, packageName string, version string) string {
return filepath.Join(base, VendorSrcDir, packageName+"@"+version)
}
func GetCachedPackageSrcPath(packageName string, version string) (string, error) {
if path, err := GetPkgUserHomeFile(filepath.Join(VendorUserHomeSrc, packageName+"@"+version)); err != nil {
return "", err
} else {
return path, nil
}
}
// return @base/vendor/pkg/@packageName
func GetPackagePkgPath(base string, packageName string) (path string) {
return filepath.Join(base, VendorName, VendorPkg, packageName)
}
// return @base/vendor/deps/@packageName
func GetPackageDepsPath(base string, packageName string) (path string) {
return filepath.Join(base, VendorName, "deps", packageName)
}
// return ${VENDOR_PATH}/pkg/@packageName
func GetCMakeVendorPkgPath(packageName string) (path string) {
return filepath.Join(CMakeVendorPath, VendorPkg, packageName)
}
// return @base/vendor/pkg/@packageName/include
func GetPkgIncludePath(base string, packageName string) (path string) {
return filepath.Join(base, VendorName, VendorPkg, packageName, VendorInclude)
}
// return $HOME/.pkg/registry/default-pkg/src
func GetHomeSrcPath() (string, error) {
if path, err := GetPkgUserHomeFile(VendorUserHomeSrc); err != nil {
return "", err
} else {
return path, nil
}
}
func GetPkgUserHomeFile(suffixPath string) (string, error) {
if home, err := os.UserHomeDir(); err != nil {
return "", err
} else {
return filepath.Join(home, VendorUserHome, suffixPath), nil
}
}
// return @base/vendor/pkg
func GetPkgPath(base string) (path string) {
return filepath.Join(base, VendorName, VendorPkg)
}
// return @base/vendor/include
func GetIncludePath(base string) (path string) {
return filepath.Join(base, VendorName, VendorInclude)
}
// return @base/vendor/cache
func GetCachePath(base, packageName string) (path string) {
return filepath.Join(base, VendorName, VendorCache, packageName)
}
//
//func CheckVendorPath(base string) error {
// if err := CheckDirectoryLists(
// filepath.Join(base, VendorName), // ".vendor"
// //filepath.Join(base, VendorName, "bin"), // ".vendor/bin"
// //filepath.Join(base, VendorName, "sbin"), // ".vendor/sbin"
// //filepath.Join(base, VendorName, "include"), // ".vendor/include"
// //filepath.Join(base, VendorName, "lib"), // ".vendor/lib"
// filepath.Join(base, VendorName, VendorSrc), // ".vendor/src"
// //filepath.Join(base, VendorName, VendorScripts), // ".vendor/scripts"
// filepath.Join(base, VendorName, VendorPkg), // ".vendor/pkg"
// ); err != nil {
// return err
// }
// return nil
//}