blob: 4f90d98798b8704b4f2f56c59fcde031d6e78608 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// @ts-nocheck <-- This is needed as this file is basically a JavaScript script
// but with some TypeScript niceness baked in
const fs = require('fs')
const path = require('path')
const glob = require('glob')
const execSync = require('child_process').execSync
const pkg_dir = 'dist/package'
async function copyGlob(pattern, dir = '.') {
glob(pattern, { cwd: dir }, (error, files) => {
for (var i = 0; i < files.length; i++) {
let src = path.join(dir, files[i])
let dst = path.join(pkg_dir, files[i])
let dstDir = path.dirname(dst)
fs.mkdirSync(dstDir, { recursive: true })
if (fs.statSync(src).isFile()) {
fs.copyFileSync(src, dst)
}
}
})
}
// Setup package directory
function setup() {
if (fs.existsSync(pkg_dir)) {
fs.rmSync(pkg_dir, { recursive: true })
}
fs.mkdirSync(pkg_dir)
let lines = fs
.readFileSync('build/package/.vscodeignore')
.toString()
.split('\n')
// Copy all files listed in the .vscodeignore
for (var i = 0; i < lines.length; i++) {
var line = lines[i]
if (!line.startsWith('!')) continue
let pattern = line.substring(1).trim()
copyGlob(pattern)
}
// Copy required package files into package directory
copyGlob('{.,}*', 'build/package') // include hidden files
fs.copyFileSync('yarn.lock', `${pkg_dir}/yarn.lock`)
}
// Create VSIX package
function create() {
execSync('yarn install', { cwd: pkg_dir })
execSync('yarn vsce package --out ../../', { cwd: pkg_dir })
}
module.exports = {
setup: setup,
create: create,
}