MCPcopy
hub / github.com/esm-dev/esm.sh / installCjsModuleLexerContext

Function installCjsModuleLexerContext

server/cjs_module_lexer.go:186–246  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

184}
185
186func installCjsModuleLexerContext(ctx context.Context) (err error) {
187 installDir := path.Join(config.WorkDir, "bin")
188 installPath := path.Join(installDir, fmt.Sprintf("cjs-module-lexer-%s", cjsModuleLexerVersion))
189
190 // use dev version of cjs-module-lexer if exists
191 // clone https://github.com/esm-dev/cjs-module-lexer to the same directory of esm.sh and run `cargo build --release -p native`
192 if DEBUG {
193 localBuild := "../cjs-module-lexer/target/release/native"
194 if existsFile(localBuild) {
195 ensureDir(installDir)
196 _, err = utils.CopyFile(localBuild, installPath)
197 if err == nil {
198 cjsModuleLexerVersion = "dev"
199 }
200 return
201 }
202 }
203
204 if existsFile(installPath) {
205 return
206 }
207
208 url, err := getCjsModuleLexerDownloadURL()
209 if err != nil {
210 return
211 }
212
213 if DEBUG {
214 fmt.Println(term.Dim(fmt.Sprintf("Downloading %s...", path.Base(url))))
215 }
216
217 req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
218 if err != nil {
219 return err
220 }
221 res, err := http.DefaultClient.Do(req)
222 if err != nil {
223 return
224 }
225 defer res.Body.Close()
226
227 if res.StatusCode != 200 {
228 return fmt.Errorf("failed to download cjs-module-lexer: %s", res.Status)
229 }
230
231 gr, err := gzip.NewReader(&contextReader{ctx: ctx, reader: res.Body})
232 if err != nil {
233 return fmt.Errorf("failed to decompress cjs-module-lexer: %v", err)
234 }
235 defer gr.Close()
236
237 ensureDir(installDir)
238 f, err := os.OpenFile(installPath, os.O_CREATE|os.O_WRONLY, 0755)
239 if err != nil {
240 return fmt.Errorf("failed to create cjs-module-lexer: %v", err)
241 }
242 defer f.Close()
243

Callers 1

cjsModuleLexerFunction · 0.85

Calls 4

existsFileFunction · 0.85
ensureDirFunction · 0.70
CloseMethod · 0.65

Tested by

no test coverage detected