diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/arrow/js/gulpfile.js | |
parent | Initial commit. (diff) | |
download | ceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/arrow/js/gulpfile.js')
-rw-r--r-- | src/arrow/js/gulpfile.js | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/arrow/js/gulpfile.js b/src/arrow/js/gulpfile.js new file mode 100644 index 000000000..a257a2def --- /dev/null +++ b/src/arrow/js/gulpfile.js @@ -0,0 +1,105 @@ +// 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. + +const del = require('del'); +const gulp = require('gulp'); +const { targets } = require('./gulp/argv'); +const { + from: ObservableFrom, + bindNodeCallback: ObservableBindNodeCallback +} = require('rxjs'); +const { flatMap } = require('rxjs/operators'); +const cleanTask = require('./gulp/clean-task'); +const compileTask = require('./gulp/compile-task'); +const packageTask = require('./gulp/package-task'); +const { testTask, createTestData, cleanTestData } = require('./gulp/test-task'); +const { + taskName, combinations, + targetDir, knownTargets, + npmPkgName, tasksToSkipPerTargetOrFormat, + targetAndModuleCombinations +} = require('./gulp/util'); + +for (const [target, format] of combinations([`all`], [`all`])) { + const task = taskName(target, format); + gulp.task(`clean:${task}`, cleanTask(target, format)); + gulp.task(`test:${task}`, testTask(target, format)); + gulp.task(`compile:${task}`, compileTask(target, format)); + gulp.task(`package:${task}`, packageTask(target, format)); + gulp.task(`build:${task}`, gulp.series( + `clean:${task}`, `compile:${task}`, `package:${task}` + )); +} + +// The UMD bundles build temporary es5/6/next targets via TS, +// then run the TS source through either closure-compiler or +// a minifier, so we special case that here. +knownTargets.forEach((target) => { + const umd = taskName(target, `umd`); + const cls = taskName(target, `cls`); + gulp.task(`build:${umd}`, gulp.series( + `build:${cls}`, + `clean:${umd}`, `compile:${umd}`, `package:${umd}`, + function remove_closure_tmp_files() { + return del(targetDir(target, `cls`)) + } + )); +}); + +// The main "apache-arrow" module builds the es2015/umd, es2015/cjs, +// es2015/esm, and esnext/umd targets, then copies and renames the +// compiled output into the apache-arrow folder +gulp.task(`build:${npmPkgName}`, + gulp.series( + gulp.parallel( + `build:${taskName(`es2015`, `umd`)}`, + `build:${taskName(`es2015`, `cjs`)}`, + `build:${taskName(`es2015`, `esm`)}`, + `build:${taskName(`esnext`, `umd`)}` + ), + `clean:${npmPkgName}`, + `compile:${npmPkgName}`, + `package:${npmPkgName}` + ) +); + +// And finally the global composite tasks +gulp.task(`clean:testdata`, cleanTestData); +gulp.task(`create:testdata`, createTestData); +gulp.task(`test`, gulpConcurrent(getTasks(`test`))); +gulp.task(`clean`, gulp.parallel(getTasks(`clean`))); +gulp.task(`build`, gulpConcurrent(getTasks(`build`))); +gulp.task(`compile`, gulpConcurrent(getTasks(`compile`))); +gulp.task(`package`, gulpConcurrent(getTasks(`package`))); +gulp.task(`default`, gulp.series(`clean`, `build`, `test`)); + +function gulpConcurrent(tasks, numCPUs = Math.max(1, require('os').cpus().length * 0.5) | 0) { + return () => ObservableFrom(tasks.map((task) => gulp.series(task))) + .pipe(flatMap((task) => ObservableBindNodeCallback(task)(), numCPUs || 1)); +} + +function getTasks(name) { + const tasks = []; + if (targets.includes(`ts`)) tasks.push(`${name}:ts`); + if (targets.includes(npmPkgName)) tasks.push(`${name}:${npmPkgName}`); + for (const [target, format] of targetAndModuleCombinations) { + if (tasksToSkipPerTargetOrFormat[target] && tasksToSkipPerTargetOrFormat[target][name]) continue; + if (tasksToSkipPerTargetOrFormat[format] && tasksToSkipPerTargetOrFormat[format][name]) continue; + tasks.push(`${name}:${taskName(target, format)}`); + } + return tasks.length && tasks || [(done) => done()]; +} |