Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

開発版と製品版でユーザー辞書のディレクトリを変更できるようにする #472

Closed
sabonerune opened this issue Sep 15, 2022 · 5 comments · Fixed by #474

Comments

@sabonerune
Copy link
Contributor

内容

現状ユーザー辞書は開発版と製品版で同じディレクトリを利用しています。
そのため開発版で行った辞書の操作が製品版にも反映されてしまいます。
これでは不便なので変更できるようにするべきだと思います。

Pros 良くなる点

開発しやすくなる。

Cons 悪くなる点

ないはず。

実現方法

user_dict側では辞書のファイルパスが指定ができるはずなのでgenerate_appで辞書ディレクトリを指定できるようにすればいい?
実行時に切り替えるいい方法が思いつかない。(起動コマンドで指定?)

その他

現状はあまり問題になりませんがrun.pyのテストの障害になると思います。

@Hiroshiba
Copy link
Member

issue作成ありがとうございます!!

実行時に切り替えるいい方法が思いつかない。(起動コマンドで指定?)

こちらですが、Nuitka/Pyinstallerでコンパイル済みのときは製品版、そうじゃないときは開発版にするのはどうでしょう。
そのif判定はこちらに実装例がありそうです!

# nuitkaビルドをした際はグローバルに__compiled__が含まれる
if "__compiled__" in globals():
root_dir = Path(sys.argv[0]).parent
# pyinstallerでビルドをした際はsys.frozenが設定される
elif getattr(sys, "frozen", False):
root_dir = Path(sys.argv[0]).parent

@sabonerune
Copy link
Contributor Author

では取り掛かってみるとします。

@sabonerune
Copy link
Contributor Author

path_utility確認して気づいたのですが開発版と製品版の保存場所を切り替えるだけならget_save_dir()を切り替えてしまうのがいいような気がしました。

def get_save_dir():
# FIXME: ファイル保存場所をエンジン固有のIDが入ったものにする
# FIXME: Windowsは`voicevox-engine/voicevox-engine`ディレクトリに保存されているので
# `VOICEVOX/voicevox-engine`に変更する
return Path(user_data_dir("voicevox-engine"))

ただ、テストという点ではgenerate_app()の引数でもユーザー辞書のディレクトリを指定できる方がいいような気もしますが。

@Hiroshiba
Copy link
Member

ありがとうございます!!!

get_save_dir()を切り替えるというのは、例えば開発版だったらPath(user_data_dir("voicevox-engine-dev"))を返し、製品版だったらPath(user_data_dir("voicevox-engine"))を返す、というような感じでしょうか。
でしたら、たしかエディタがそうなっているので、エンジン側も合わせてそうするのが良さそうに思います。

引数で指定可能にする機能は、その機能がどうしても必要になってから実装を考えるのが良いのかなと思いました!

@sabonerune
Copy link
Contributor Author

分かりました。そのようにしていきます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
2 participants