diff --git a/scripts/git/_config.ts b/lib/git/_config.ts similarity index 100% rename from scripts/git/_config.ts rename to lib/git/_config.ts diff --git a/lib/git/commit.ts b/lib/git/commit.ts new file mode 100644 index 000000000..13c1c3976 --- /dev/null +++ b/lib/git/commit.ts @@ -0,0 +1,36 @@ +import { crossSpawnGitAsync } from '@git-lazy/spawn'; +import { opts } from './_config'; +import { ITSArrayListMaybeReadonly, ITSValueOrArrayMaybeReadonly } from 'ts-type/lib/type/base'; +import { ISpawnGitAsyncOptions } from '@git-lazy/spawn/lib/types'; + +export function lazyCommitFiles(files: ITSValueOrArrayMaybeReadonly, commitMessage: string, config?: { + addFlags?: ITSArrayListMaybeReadonly, + options?: ISpawnGitAsyncOptions, +}) +{ + files = [files].flat(); + config ??= {}; + + const options: ISpawnGitAsyncOptions = { + ...opts, + ...config.options, + }; + + const addFlags = config.addFlags ?? []; + + return crossSpawnGitAsync('git', [ + 'add', + ...addFlags, + ...files, + ], options) + .then(() => + { + return crossSpawnGitAsync('git', [ + 'commit', + '-m', + commitMessage, + ...files, + ], options) + }) + ; +} diff --git a/lib/util/download-plugin.ts b/lib/util/download-plugin.ts new file mode 100644 index 000000000..996bc8fb2 --- /dev/null +++ b/lib/util/download-plugin.ts @@ -0,0 +1,13 @@ +import fetch from 'cross-fetch'; +import { Response } from 'node-fetch'; +import { outputFile } from 'fs-extra'; + +export function downloadPlugin(link: string, output_file: string) +{ + return fetch(link) + .then((res) => (res as any as Response).buffer()) + .then(buf => + { + return outputFile(output_file, buf) + }) +} diff --git a/lib/util/import.ts b/lib/util/import.ts new file mode 100644 index 000000000..ac04940b9 --- /dev/null +++ b/lib/util/import.ts @@ -0,0 +1,13 @@ +import Bluebird from 'bluebird'; +import { resolve } from 'upath2'; +import { __root } from '../../test/__root'; + +export function _lazyImport(target: string, dir = __root): Bluebird +{ + return Bluebird.resolve(import(resolve(dir, target))).then(m => m.default ?? m) +} + +export function _lazyImportWithDelay(target: string, dir = __root, delay?: number): Bluebird +{ + return _lazyImport(target, dir).delay(delay || 2000) +} diff --git a/scripts/download-original-plugin.ts b/scripts/download-original-plugin.ts index 2793ac390..a9153cd74 100644 --- a/scripts/download-original-plugin.ts +++ b/scripts/download-original-plugin.ts @@ -1,15 +1,8 @@ -import fetch from 'cross-fetch'; -import { Response } from 'node-fetch'; -import { outputFile } from 'fs-extra'; import { join } from 'upath2'; import { cli_logger } from '../lib/cli-progress'; import { __plugin_downloaded_dir } from '../lib/const'; import { __plugin_zh_cn_download, __plugin_zh_cn_id, __plugin_zh_cn_version } from '../lib/const/link-of-zh-cn'; +import { downloadPlugin } from '../lib/util/download-plugin'; -export default cli_logger(fetch(__plugin_zh_cn_download) - .then((res) => (res as any as Response).buffer()) - .then(buf => - { - return outputFile(join(__plugin_downloaded_dir, 'zh.zip'), buf) - }), `download Chinese ​(Simplified)​ Language Pack / 中文语言包\nid: ${__plugin_zh_cn_id}\nversion: ${__plugin_zh_cn_version}`) +export default cli_logger(downloadPlugin(__plugin_zh_cn_download, join(__plugin_downloaded_dir, 'zh.zip')), `download Chinese ​(Simplified)​ Language Pack / 中文语言包\nid: ${__plugin_zh_cn_id}\nversion: ${__plugin_zh_cn_version}`) ; diff --git a/scripts/git/build-commit.ts b/scripts/git/build-commit.ts index 1f940cc28..01d667f42 100644 --- a/scripts/git/build-commit.ts +++ b/scripts/git/build-commit.ts @@ -1,28 +1,29 @@ -import { crossSpawnGitAsync } from '@git-lazy/spawn'; -import { opts } from './_config'; +import { lazyCommitFiles } from '../../lib/git/commit'; +import { _lazyImportWithDelay } from '../../lib/util/import'; +import Bluebird from 'bluebird'; -const list = [ - './original-plugin', - './original-plugin-raw', - './plugin-dev-out', - './plugin-dev-raw', - './lib/static', - './test/__snapshots__', - './lib/const/link-of-zh-cn.ts', -] as const; - -export default crossSpawnGitAsync('git', [ - 'add', - '--all', - ...list, -], opts) +export default Bluebird.mapSeries([ + './commit-version-map.ts', + './commit-link-of-zh-cn.ts', + ] as const, lazyImport) .then(() => { - return crossSpawnGitAsync('git', [ - 'commit', - '-m', - 'build(release): update build', - ...list, - ], opts) - }) -; + const list = [ + './original-plugin', + './original-plugin-raw', + './plugin-dev-out', + './plugin-dev-raw', + './lib/static', + './test/__snapshots__', + './lib/const/link-of-zh-cn.ts', + ] as const; + + return lazyCommitFiles(list, 'build(release): update build', { + addFlags: ['--all'], + }) + }); + +function lazyImport(target: string) +{ + return _lazyImportWithDelay(target, __dirname) +} diff --git a/scripts/git/commit-link-of-zh-cn.ts b/scripts/git/commit-link-of-zh-cn.ts new file mode 100644 index 000000000..77a992de2 --- /dev/null +++ b/scripts/git/commit-link-of-zh-cn.ts @@ -0,0 +1,5 @@ +import { lazyCommitFiles } from '../../lib/git/commit'; + +export default lazyCommitFiles('./lib/const/link-of-zh-cn.ts', 'build(cache): update link-of-zh-cn.ts') + .catch(() => void 0) +; diff --git a/scripts/git/commit-version-map.ts b/scripts/git/commit-version-map.ts index e038c97e1..e804aadeb 100644 --- a/scripts/git/commit-version-map.ts +++ b/scripts/git/commit-version-map.ts @@ -1,18 +1,5 @@ -import { crossSpawnGitAsync } from '@git-lazy/spawn'; -import { opts } from './_config'; +import { lazyCommitFiles } from '../../lib/git/commit'; -export default crossSpawnGitAsync('git', [ - 'add', - './lib/const/version-map.json', -], opts) - .then(() => - { - return crossSpawnGitAsync('git', [ - 'commit', - '-m', - 'build(cache): update version-map', - './lib/const/version-map.json', - ], opts) - }) +export default lazyCommitFiles('./lib/const/version-map.json', 'build(cache): update version-map') .catch(() => void 0) ; diff --git a/scripts/plugin-handle-source.ts b/scripts/plugin-handle-source.ts index 7becf71e4..f442b6758 100644 --- a/scripts/plugin-handle-source.ts +++ b/scripts/plugin-handle-source.ts @@ -4,6 +4,7 @@ import Bluebird from 'bluebird'; import { resolve } from 'upath2'; +import { _lazyImport, _lazyImportWithDelay } from '../lib/util/import'; export default Bluebird.mapSeries([ './fetch-latest-version-of-zh-cn', @@ -15,5 +16,5 @@ export default Bluebird.mapSeries([ function lazyImport(target: string) { - return Bluebird.resolve(import(resolve(__dirname, target))).then(m => m.default ?? m).delay(2000) + return _lazyImportWithDelay(target, __dirname) }