Skip to content

Commit 79c21df

Browse files
committed
fix : write binary when unmatched version or file isn't exist
1 parent 1b16600 commit 79c21df

File tree

4 files changed

+45
-41
lines changed

4 files changed

+45
-41
lines changed

install.go

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -47,27 +47,29 @@ func InstallKclvm(installRoot string) error {
4747

4848
kclvmVersionPath := filepath.Join(binPath, "kclvm.version")
4949

50-
ok, err := checkVersion(kclvmVersionPath)
50+
versionMatched, err := checkVersion(kclvmVersionPath)
5151

5252
if err != nil {
5353
return err
5454
}
5555

56-
if !ok {
57-
// Install kclvm binary.
58-
err = installBin(binPath, "kclvm_cli", kclvmCliBin)
59-
if err != nil {
60-
return err
61-
}
62-
// Install kclvm libs.
63-
err = installLib(binPath, "kclvm_cli_cdylib")
64-
if err != nil {
65-
return err
66-
}
56+
// Install kclvm binary.
57+
err = installBin(binPath, "kclvm_cli", kclvmCliBin, versionMatched)
58+
if err != nil {
59+
return err
60+
}
61+
// Install kclvm libs.
62+
err = installLib(binPath, "kclvm_cli_cdylib", versionMatched)
63+
if err != nil {
64+
return err
65+
}
66+
67+
if !versionMatched {
6768
err = os.WriteFile(kclvmVersionPath, []byte(KCLVM_VERSION), os.FileMode(os.O_WRONLY|os.O_TRUNC))
6869
if err != nil {
6970
return err
7071
}
72+
7173
}
7274

7375
os.Setenv("PATH", os.Getenv("PATH")+string(os.PathListSeparator)+binPath)
@@ -84,43 +86,45 @@ func InstallKclvmPy(installRoot string) error {
8486

8587
kclvmVersionPath := filepath.Join(binPath, "kclvm.version")
8688

87-
ok, err := checkVersion(kclvmVersionPath)
89+
versionMatched, err := checkVersion(kclvmVersionPath)
8890

8991
if err != nil {
9092
return err
9193
}
9294

9395
os.Setenv("PATH", os.Getenv("PATH")+string(os.PathListSeparator)+binPath)
9496

95-
if !ok {
96-
scripts := map[string][]byte{
97-
"kcl": kclScript,
98-
"kclvm": kclvmScript,
99-
"kcl-doc": kclDocScript,
100-
"kcl-fmt": kclFmtScript,
101-
"kcl-lint": kclLintScript,
102-
"kcl-plugin": kclPluginScript,
103-
"kcl-test": kclTestScript,
104-
"kcl-vet": kclVetScript,
105-
}
106-
// Install binaries.
107-
for n, script := range scripts {
108-
err := installBin(binPath, n, script)
109-
if err != nil {
110-
return err
111-
}
112-
}
113-
// Install kclvm libs.
114-
err = installLib(binPath, "kclvm_cli_cdylib")
97+
scripts := map[string][]byte{
98+
"kcl": kclScript,
99+
"kclvm": kclvmScript,
100+
"kcl-doc": kclDocScript,
101+
"kcl-fmt": kclFmtScript,
102+
"kcl-lint": kclLintScript,
103+
"kcl-plugin": kclPluginScript,
104+
"kcl-test": kclTestScript,
105+
"kcl-vet": kclVetScript,
106+
}
107+
// Install binaries.
108+
for n, script := range scripts {
109+
err := installBin(binPath, n, script, versionMatched)
115110
if err != nil {
116111
return err
117112
}
113+
}
114+
// Install kclvm libs.
115+
err = installLib(binPath, "kclvm_cli_cdylib", versionMatched)
116+
if err != nil {
117+
return err
118+
}
118119

120+
if !versionMatched {
119121
err = os.WriteFile(kclvmVersionPath, []byte(KCLVM_VERSION), os.FileMode(os.O_WRONLY|os.O_TRUNC))
120122
if err != nil {
121123
return err
122124
}
125+
123126
}
127+
124128
os.Setenv("PATH", os.Getenv("PATH")+string(os.PathListSeparator)+binPath)
125129
return nil
126130
}
@@ -137,9 +141,9 @@ func CleanInstall() {
137141
kclvmCliLib = nil
138142
}
139143

140-
func installBin(binDir, binName string, content []byte) error {
144+
func installBin(binDir, binName string, content []byte, versionMatched bool) error {
141145
binPath := findPath(binName)
142-
if binPath == "" {
146+
if binPath == "" || !versionMatched {
143147
if runtime.GOOS == "windows" {
144148
binName += ".exe"
145149
}

install_lib_unix.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import (
77
"runtime"
88
)
99

10-
func installLib(libDir, libName string) error {
10+
func installLib(libDir, libName string, versionMatched bool) error {
1111
libFullName := "lib" + libName
1212
switch runtime.GOOS {
1313
case "darwin":
1414
libFullName = libFullName + ".dylib"
1515
case "linux":
1616
libFullName = libFullName + ".so"
1717
}
18-
return writeLib(libDir, libFullName, kclvmCliLib)
18+
return writeLib(libDir, libFullName, kclvmCliLib, versionMatched)
1919
}

install_lib_windows.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package kclvm_artifact
22

3-
func installLib(libDir, libName string) error {
3+
func installLib(libDir, libName string, versionMatched bool) error {
44
libFullName := libName + ".dll"
55
exportLibFullName := libName + ".lib"
66
err := writeLib(libDir, libFullName, kclvmCliLib)
77
if err != nil {
88
return err
99
}
10-
return writeLib(libDir, exportLibFullName, kclvmExportLib)
10+
return writeLib(libDir, exportLibFullName, kclvmExportLib, versionMatched)
1111
}

util.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ import (
55
"path/filepath"
66
)
77

8-
func writeLib(libDir, libFullName string, content []byte) error {
8+
func writeLib(libDir, libFullName string, content []byte, versionMatched bool) error {
99
libFullPath := filepath.Join(libDir, libFullName)
1010
_, err := os.Stat(libFullPath)
1111
if err == nil {
1212
return nil
1313
}
14-
if os.IsNotExist(err) {
14+
if os.IsNotExist(err) || !versionMatched {
1515
err = os.MkdirAll(libDir, 0777)
1616
if err != nil {
1717
return err

0 commit comments

Comments
 (0)