massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-json / node_modules / vscode-languageserver / bin / installServerIntoExtension
1 /* eslint-disable no-console */
2 #!/usr/bin/env node
3
4 var path = require('path');
5 var fs = require('fs');
6 var cp = require('child_process');
7
8 var extensionDirectory = process.argv[2];
9 if (!extensionDirectory) {
10         console.error('No extension directory provided.');
11         process.exit(1);
12 }
13 extensionDirectory = path.resolve(extensionDirectory);
14 if (!fs.existsSync(extensionDirectory)) {
15         console.error('Extension directory ' + extensionDirectory + ' doesn\'t exist on disk.');
16         process.exit(1);
17 }
18
19 var packageFile = process.argv[3];
20 if (!packageFile) {
21         console.error('No package.json file provided.');
22         process.exit(1);
23 }
24 packageFile = path.resolve(packageFile);
25 if (!fs.existsSync(packageFile)) {
26         console.error('Package file ' + packageFile + ' doesn\'t exist on disk.');
27         process.exit(1);
28 }
29 var tsconfigFile = process.argv[4];
30 if (!tsconfigFile) {
31         console.error('No tsconfig.json file provided');
32         process.exit(1);
33 }
34 tsconfigFile = path.resolve(tsconfigFile);
35 if (!fs.existsSync(tsconfigFile)) {
36         console.error('tsconfig file ' + tsconfigFile + ' doesn\'t exist on disk.');
37         process.exit(1);
38 }
39
40 var extensionServerDirectory = path.join(extensionDirectory, 'server');
41
42 var json = require(tsconfigFile);
43 var compilerOptions = json.compilerOptions;
44 if (compilerOptions) {
45         var outDir = compilerOptions.outDir;
46         if (!outDir || path.join(path.dirname(tsconfigFile), outDir) !== extensionServerDirectory) {
47                 console.error('outDir in ' + process.argv[4] + ' must point to ' + extensionServerDirectory + ' but it points to ' + path.join(path.dirname(tsconfigFile), outDir));
48                 console.error('Please change outDir in ' + process.argv[4] + ' to ' + path.relative(path.dirname(tsconfigFile), extensionServerDirectory).replace(/\\/g, '/'));
49                 process.exit(1);
50         }
51 }
52
53 if (!fs.existsSync(extensionServerDirectory)) {
54         fs.mkdirSync(extensionServerDirectory);
55 }
56
57 var dest = path.join(extensionServerDirectory, 'package.json');
58 console.log('Copying package.json to extension\'s server location...');
59 fs.writeFileSync(dest, fs.readFileSync(packageFile));
60
61 var shrinkwrapFile = process.argv[5];
62 if (fs.existsSync(shrinkwrapFile)) {
63         const shrinkWrapDest = path.join(extensionServerDirectory, 'npm-shrinkwrap.json');
64         shrinkwrapFile = path.resolve(shrinkwrapFile);
65         console.log('Copying npm-shrinkwrap.json to extension\'s server location...');
66         fs.writeFileSync(shrinkWrapDest, fs.readFileSync(shrinkwrapFile));
67
68 }
69
70 console.log('The script is deprecated. See https://github.com/microsoft/vscode-extension-samples/tree/master/lsp-sample for an example on how to setup an extension / server project.');
71 console.log('');
72 console.log('Updating server npm modules into extension\'s server location...');
73 cp.execSync('npm update --production --prefix ' + extensionServerDirectory);