fixup some bug in China mirror
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -35,4 +35,5 @@ dist
|
||||
!dist/cli.js
|
||||
!dist/.gitkeep
|
||||
src-tauri/.cargo/config
|
||||
src-tauri/.cargo/
|
||||
.next
|
||||
|
||||
15
bin/builders/LinuxBuilder.ts
vendored
15
bin/builders/LinuxBuilder.ts
vendored
@@ -46,15 +46,18 @@ export default class LinuxBuilder implements IBuilder {
|
||||
logger.debug('PakeAppOptions', options);
|
||||
const { name } = options;
|
||||
await mergeTauriConfig(url, options, tauriConf);
|
||||
const isChina = isChinaDomain("www.npmjs.com")
|
||||
|
||||
const isChina = await isChinaDomain("www.npmjs.com");
|
||||
if (isChina) {
|
||||
// crates.io也顺便换源
|
||||
logger.info("it's in China, use npm/rust cn mirror")
|
||||
const rust_project_dir = path.join(npmDirectory, 'src-tauri', ".cargo");
|
||||
const project_cn_conf = path.join(rust_project_dir, "cn_config.bak");
|
||||
const e1 = fs.access(rust_project_dir);
|
||||
if (e1) {
|
||||
await fs.mkdir(rust_project_dir, { recursive: true });
|
||||
}
|
||||
const project_cn_conf = path.join(npmDirectory, "src-tauri", "cn_config.bak");
|
||||
const project_conf = path.join(rust_project_dir, "config");
|
||||
fs.copyFile(project_cn_conf, project_conf);
|
||||
|
||||
|
||||
const _ = await shellExec(
|
||||
`cd "${npmDirectory}" && npm install --registry=https://registry.npmmirror.com && npm run build`
|
||||
);
|
||||
@@ -95,4 +98,4 @@ export default class LinuxBuilder implements IBuilder {
|
||||
packageName
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
10
bin/builders/MacBuilder.ts
vendored
10
bin/builders/MacBuilder.ts
vendored
@@ -42,11 +42,15 @@ export default class MacBuilder implements IBuilder {
|
||||
await mergeTauriConfig(url, options, tauriConf);
|
||||
let dmgName: string;
|
||||
if (options.multiArch) {
|
||||
const isChina = isChinaDomain("www.npmjs.com")
|
||||
const isChina = await isChinaDomain("www.npmjs.com");
|
||||
if (isChina) {
|
||||
// crates.io也顺便换源
|
||||
logger.info("it's in China, use npm/rust cn mirror")
|
||||
const rust_project_dir = path.join(npmDirectory, 'src-tauri', ".cargo");
|
||||
const project_cn_conf = path.join(rust_project_dir, "cn_config.bak");
|
||||
const e1 = fs.access(rust_project_dir);
|
||||
if (e1) {
|
||||
await fs.mkdir(rust_project_dir, { recursive: true });
|
||||
}
|
||||
const project_cn_conf = path.join(npmDirectory, "src-tauri", "cn_config.bak");
|
||||
const project_conf = path.join(rust_project_dir, "config");
|
||||
fs.copyFile(project_cn_conf, project_conf);
|
||||
|
||||
|
||||
12
bin/builders/WinBulider.ts
vendored
12
bin/builders/WinBulider.ts
vendored
@@ -45,14 +45,16 @@ export default class WinBuilder implements IBuilder {
|
||||
async build(url: string, options: PakeAppOptions) {
|
||||
logger.debug('PakeAppOptions', options);
|
||||
const { name } = options;
|
||||
|
||||
await mergeTauriConfig(url, options, tauriConf);
|
||||
|
||||
const isChina = isChinaDomain("www.npmjs.com")
|
||||
const isChina = await isChinaDomain("www.npmjs.com")
|
||||
if (isChina) {
|
||||
// crates.io也顺便换源
|
||||
logger.info("it's in China, use npm/rust cn mirror")
|
||||
const rust_project_dir = path.join(npmDirectory, 'src-tauri', ".cargo");
|
||||
const project_cn_conf = path.join(rust_project_dir, "cn_config.bak");
|
||||
const e1 = fs.access(rust_project_dir);
|
||||
if (e1) {
|
||||
await fs.mkdir(rust_project_dir, { recursive: true });
|
||||
}
|
||||
const project_cn_conf = path.join(npmDirectory, "src-tauri", "cn_config.bak");
|
||||
const project_conf = path.join(rust_project_dir, "config");
|
||||
fs.copyFile(project_cn_conf, project_conf);
|
||||
|
||||
|
||||
22
bin/helpers/rust.ts
vendored
22
bin/helpers/rust.ts
vendored
@@ -1,21 +1,23 @@
|
||||
import { IS_WIN } from '@/utils/platform.js';
|
||||
import ora from 'ora';
|
||||
import shelljs from 'shelljs';
|
||||
import logger from '@/options/logger.js';
|
||||
import { shellExec } from '../utils/shell.js';
|
||||
import {isChinaDomain} from '@/utils/ip_addr.js'
|
||||
|
||||
const is_china = isChinaDomain("sh.rustup.rs");
|
||||
let RustInstallScriptFocMac = "";
|
||||
if (is_china) {
|
||||
RustInstallScriptFocMac =
|
||||
'export RUSTUP_DIST_SERVER="https://rsproxy.cn" && export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup" && curl --proto "=https" --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh';
|
||||
} else {
|
||||
RustInstallScriptFocMac =
|
||||
"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y";
|
||||
}
|
||||
const RustInstallScriptForWin = 'winget install --id Rustlang.Rustup';
|
||||
|
||||
export async function installRust() {
|
||||
const is_china = await isChinaDomain("sh.rustup.rs");
|
||||
let RustInstallScriptFocMac = "";
|
||||
if (is_china) {
|
||||
logger.info("it's in China, use rust cn mirror to install rust");
|
||||
RustInstallScriptFocMac =
|
||||
'export RUSTUP_DIST_SERVER="https://rsproxy.cn" && export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup" && curl --proto "=https" --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh';
|
||||
} else {
|
||||
RustInstallScriptFocMac =
|
||||
"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y";
|
||||
}
|
||||
const RustInstallScriptForWin = 'winget install --id Rustlang.Rustup';
|
||||
const spinner = ora('Downloading Rust').start();
|
||||
try {
|
||||
await shellExec(IS_WIN ? RustInstallScriptForWin : RustInstallScriptFocMac);
|
||||
|
||||
22
bin/utils/ip_addr.ts
vendored
22
bin/utils/ip_addr.ts
vendored
@@ -39,20 +39,16 @@ async function isChinaDomain(domain: string): Promise<boolean> {
|
||||
}
|
||||
|
||||
async function isChinaIP(ip: string, domain: string): Promise<boolean> {
|
||||
return new Promise((resolve, reject) => {
|
||||
// exec(`ping -c -w 1 ${ip}`, (error, stdout, stderr) => {
|
||||
ping(ip)
|
||||
.then((declay)=>{
|
||||
logger.info(`${domain} latency is ${declay} ms`);
|
||||
try {
|
||||
const delay = await ping(ip);
|
||||
logger.info(`${domain} latency is ${delay} ms`);
|
||||
// 判断延迟是否超过500ms
|
||||
resolve(declay > 500);
|
||||
})
|
||||
.catch((error)=>{
|
||||
return delay > 500;
|
||||
} catch (error) {
|
||||
// 命令执行出错,返回false
|
||||
logger.info(`ping ${domain} failed!, is not in China!`);
|
||||
resolve(false);
|
||||
})
|
||||
});
|
||||
logger.info(`ping ${domain} failed!, is not in China!`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export { isChinaDomain, isChinaIP };
|
||||
export { isChinaDomain, isChinaIP };
|
||||
|
||||
4606
dist/cli.js
vendored
4606
dist/cli.js
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "pake-cli",
|
||||
"version": "2.0.0-alpha8",
|
||||
"version": "2.0.0-alpha9",
|
||||
"description": "🤱🏻 Turn any webpage into a desktop app with Rust. 🤱🏻 很简单的用 Rust 打包网页生成很小的桌面 App。",
|
||||
"engines": {
|
||||
"node": ">=16.0.0"
|
||||
|
||||
Reference in New Issue
Block a user