Skip to content

Commit

Permalink
Merge branch 'main' into wip-音声書き出しe2eテスト
Browse files Browse the repository at this point in the history
  • Loading branch information
Hiroshiba committed Jan 25, 2025
2 parents 9ab5b02 + 39d2948 commit a78b3f6
Show file tree
Hide file tree
Showing 51 changed files with 1,054 additions and 662 deletions.
2 changes: 1 addition & 1 deletion src/backend/browser/fileImpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { openDB } from "./browserConfig";
import { createFakePath, FakePath, isFakePath } from "./fakePath";
import { SandboxKey } from "@/type/preload";
import { failure, success } from "@/type/result";
import { createLogger } from "@/domain/frontend/log";
import { createLogger } from "@/helpers/log";
import { normalizeError } from "@/helpers/normalizeError";
import path from "@/helpers/path";
import { ExhaustiveError } from "@/type/utility";
Expand Down
6 changes: 4 additions & 2 deletions src/backend/electron/engineAndVvppController.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import path from "path";
import fs from "fs";
import { ReadableStream } from "node:stream/web";
import log from "electron-log/main";
import { dialog } from "electron";

import { getConfigManager } from "./electronConfig";
Expand All @@ -10,7 +9,6 @@ import { getEngineProcessManager } from "./manager/engineProcessManager";
import { getRuntimeInfoManager } from "./manager/RuntimeInfoManager";
import { getVvppManager } from "./manager/vvppManager";
import { getWindowManager } from "./manager/windowManager";
import { ProgressCallback } from "./type";
import {
EngineId,
EngineInfo,
Expand All @@ -24,6 +22,10 @@ import {
} from "@/domain/defaultEngine/latetDefaultEngine";
import { loadEnvEngineInfos } from "@/domain/defaultEngine/envEngineInfo";
import { UnreachableError } from "@/type/utility";
import { ProgressCallback } from "@/helpers/progressHelper";
import { createLogger } from "@/helpers/log";

const log = createLogger("EngineAndVvppController");

/**
* エンジンとVVPP周りの処理の流れを制御するクラス。
Expand Down
13 changes: 6 additions & 7 deletions src/backend/electron/fileHelper.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import fs from "fs";
import log from "electron-log/main";
import { moveFileSync } from "move-file";
import { uuid4 } from "@/helpers/random";
import { createLogger } from "@/helpers/log";

const log = createLogger("fileHelper");

/**
* 書き込みに失敗したときにファイルが消えないように、
Expand All @@ -12,15 +13,13 @@ export function writeFileSafely(
data: string | NodeJS.ArrayBufferView,
) {
const tmpPath = `${path}-${uuid4()}.tmp`;
fs.writeFileSync(tmpPath, data, { flag: "wx" });

try {
moveFileSync(tmpPath, path, {
overwrite: true,
});
fs.writeFileSync(tmpPath, data, { flag: "wx" });
fs.renameSync(tmpPath, path);
} catch (error) {
if (fs.existsSync(tmpPath)) {
fs.promises.unlink(tmpPath).catch((reason) => {
void fs.promises.unlink(tmpPath).catch((reason) => {
log.warn("Failed to remove %s\n %o", tmpPath, reason);
});
}
Expand Down
4 changes: 3 additions & 1 deletion src/backend/electron/ipc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@ import {
IpcMainInvokeEvent,
IpcRendererEvent,
} from "electron";
import log from "electron-log/main";
import { IpcIHData, IpcSOData } from "@/type/ipc";
import { createLogger } from "@/helpers/log";

const log = createLogger("ipc");

export type IpcRendererInvoke = {
[K in keyof IpcIHData]: (
Expand Down
17 changes: 10 additions & 7 deletions src/backend/electron/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { pathToFileURL } from "url";
import { app, dialog, Menu, nativeTheme, net, protocol, shell } from "electron";
import installExtension, { VUEJS_DEVTOOLS } from "electron-devtools-installer";

import log from "electron-log/main";
import electronLog from "electron-log/main";
import dayjs from "dayjs";
import { hasSupportedGpu } from "./device";
import {
Expand Down Expand Up @@ -39,6 +39,7 @@ import {
TextAsset,
} from "@/type/preload";
import { isMac } from "@/helpers/platform";
import { createLogger } from "@/helpers/log";

type SingleInstanceLockData = {
filePath: string | undefined;
Expand Down Expand Up @@ -88,16 +89,18 @@ if (!isDevelopment) {
configMigration014({ fixedUserDataDir, beforeUserDataDir }); // 以前のファイルがあれば持ってくる
}

log.initialize({ preload: false });
electronLog.initialize({ preload: false });
// silly以上のログをコンソールに出力
log.transports.console.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}";
log.transports.console.level = "silly";
electronLog.transports.console.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}";
electronLog.transports.console.level = "silly";

// warn以上のログをファイルに出力
const prefix = dayjs().format("YYYYMMDD_HHmmss");
log.transports.file.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}";
log.transports.file.level = "warn";
log.transports.file.fileName = `${prefix}_error.log`;
electronLog.transports.file.format = "[{h}:{i}:{s}.{ms}] [{level}] {text}";
electronLog.transports.file.level = "warn";
electronLog.transports.file.fileName = `${prefix}_error.log`;

const log = createLogger("main");

if (errorForRemoveBeforeUserDataDir != undefined) {
log.error(errorForRemoveBeforeUserDataDir);
Expand Down
4 changes: 3 additions & 1 deletion src/backend/electron/manager/RuntimeInfoManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
*/

import AsyncLock from "async-lock";
import log from "electron-log/main";
import type { AltPortInfos } from "@/store/type";
import { EngineId, EngineInfo } from "@/type/preload";
import { writeFileSafely } from "@/backend/electron/fileHelper";
import { createEngineUrl } from "@/domain/url";
import { createLogger } from "@/helpers/log";

const log = createLogger("RuntimeInfoManager");

/**
* ランタイム情報書き出しに必要なEngineInfo
Expand Down
11 changes: 6 additions & 5 deletions src/backend/electron/manager/engineInfoManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ import shlex from "shlex";

import { dialog } from "electron"; // FIXME: ここでelectronをimportするのは良くない

import log from "electron-log/main";

import { getConfigManager } from "../electronConfig";
import {
EngineInfo,
Expand All @@ -17,6 +15,9 @@ import {
import { AltPortInfos } from "@/store/type";
import { loadEnvEngineInfos } from "@/domain/defaultEngine/envEngineInfo";
import { failure, Result, success } from "@/type/result";
import { createLogger } from "@/helpers/log";

const log = createLogger("EngineInfoManager");

/** 利用可能なエンジンの情報を管理するクラス */
export class EngineInfoManager {
Expand Down Expand Up @@ -109,15 +110,15 @@ export class EngineInfoManager {
for (const dirName of fs.readdirSync(this.vvppEngineDir)) {
const engineDir = path.join(this.vvppEngineDir, dirName);
if (!fs.statSync(engineDir).isDirectory()) {
log.log(`${engineDir} is not directory`);
log.info(`${engineDir} is not directory`);
continue;
}
if (dirName === ".tmp") {
continue;
}
const result = this.loadEngineInfo(engineDir, "vvpp");
if (!result.ok) {
log.log(`Failed to load engine: ${result.code}, ${engineDir}`);
log.info(`Failed to load engine: ${result.code}, ${engineDir}`);
continue;
}
engineInfos.push(result.value);
Expand All @@ -135,7 +136,7 @@ export class EngineInfoManager {
for (const engineDir of configManager.get("registeredEngineDirs")) {
const result = this.loadEngineInfo(engineDir, "path");
if (!result.ok) {
log.log(`Failed to load engine: ${result.code}, ${engineDir}`);
log.error(`Failed to load engine: ${result.code}, ${engineDir}`);
// 動かないエンジンは追加できないので削除
// FIXME: エンジン管理UIで削除可能にする
dialog.showErrorBox(
Expand Down
4 changes: 3 additions & 1 deletion src/backend/electron/manager/engineProcessManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import treeKill from "tree-kill";

import { app, dialog } from "electron"; // FIXME: ここでelectronをimportするのは良くない

import log from "electron-log/main";
import {
findAltPort,
getPidFromPort,
Expand All @@ -16,6 +15,9 @@ import {
import { getConfigManager } from "../electronConfig";
import { getEngineInfoManager } from "./engineInfoManager";
import { EngineId, EngineInfo } from "@/type/preload";
import { createLogger } from "@/helpers/log";

const log = createLogger("EngineProcessManager");

type EngineProcessContainer = {
willQuitEngine: boolean;
Expand Down
Loading

0 comments on commit a78b3f6

Please sign in to comment.