設定ファイル

:::note info
新規構文についての記事を書いている途中ですが、アドベントカレンダーの予定に穴が空いてしまったため急遽設定ファイルの話をねじ込んでいます。
:::

UWSCRの設定ファイルはUWSCとは互換性が一切ありません。ファイル構成も大きく異なり、UWSCではiniファイルでしたがUWSCRではjsonファイルになっています。
設定ファイルは以下に保存されます。

```
%APPDATA%\UWSCR\settings.json
```

設定ファイルのバージョンに応じたjsonスキーマが公開されているため、Visual Studio Code等のjsonスキーマ対応エディタで編集することをおすすめします。

# 設定ファイルの作り方

初期状態では設定ファイルが作成されません。設定ファイルが存在しない場合、UWSCRはすべての設定のデフォルト値を適用します。
以下のコマンドを実行することで初めて設定ファイルが作成され、それを標準のエディタで開きます。

```console:powershell
PS> uwscr --settings
```

# 設定ファイルの初期状態

バージョン`0.14.0`では以下のようになっています。

```json
{
  "options": {
    "opt_finally": false,
    "explicit": false,
    "dlg_title": null,
    "log_file": 1,
    "log_lines": 400,
    "log_path": null,
    "position": {
      "left": 0,
      "top": 0
    },
    "default_font": {
      "name": "Yu Gothic UI",
      "size": 20
    },
    "fix_balloon": false,
    "no_stop_hot_key": false,
    "short_circuit": true,
    "opt_public": false,
    "same_str": false,
    "gui_print": false,
    "force_bool": false
  },
  "browser": {
    "chrome": null,
    "msedge": null
  },
  "chkimg": {
    "save_ss": false
  },
  "logfont": {
    "name": "MS Gothic",
    "size": 15
  },
  "$schema": "https://github.com/stuncloud/UWSCR/releases/download/0.14.0/uwscr-settings-schema.json"
}
```

# 設定項目詳細

設定項目が省略された場合は既定値が適用されます。

## options

`OPTION`構文を予め設定しておくことができます。

:::note warn
##### 一部の設定は適用されません。
`0.14.0`では一部の`OPTION`が実装されていません。そのため対応する設定項目も動作に影響しません。
:::

### opt_finally

`OPTION OPTFINALLY`の初期値を設定します。既定値は`false`です。

### explicit

`OPTION EXPLICIT`の初期値を設定します。既定値は`false`です。

### dlg_title

`OPTION DLGTITLE`の初期値を設定します。既定値は`null`です。

### LOGFILE

`OPTION LOGFILE`の初期値を設定します。既定値は`1`です。

### log_lines

`OPTION LOGLINES`の初期値を設定します。既定値は`400`です。
`0.14.0`時点では未実装のため機能しません。

### log_path

`OPTION LOGPATH`の初期値を設定します。既定値は`null`です。
`0.14.0`時点では未実装のため機能しません。

### position

`OPTION POSITION`の初期値を設定します。既定値は`{"left": 0, "top": 0}`です。
メインGUIが存在しないため、この項目は機能しません。

### default_font

`OPTION DEFAULTFONT`の初期値を設定します。

#### name

`OPTION DEFAULTFONT`のフォント名を設定します。既定値は`"Yu Gothic UI"`です。

#### size

`OPTION DEFAULTFONT`のフォントサイズを設定します。既定値は`20`です。

### fix_balloon

`OPTION FIXBALLOON`の初期値を設定します。既定値は`false`です。
`0.14.0`時点では未実装のため機能しません。

### no_stop_hot_key

`OPTION NOSTOPHOTKEY`の初期値を設定します。既定値は`false`です。
`0.14.0`時点では未実装のため機能しません。

### short_circuit

`OPTION SHORTCIRCUIT`の初期値を設定します。既定値は`true`です。
`0.14.0`時点では未実装のため機能しません。

### opt_public

`OPTION OPTPUBLIC`の初期値を設定します。既定値は`false`です。
`0.14.0`時点では未実装のため機能しません。

### same_str

`OPTION SAMESTR`の初期値を設定します。既定値は`false`です。
`0.14.0`時点では未実装のため機能しません。

### gui_print

`OPTION GUIPRINT`の初期値を設定します。既定値は`false`です。
これはUWSCRの新機能で、`true`にした場合print文の出力先をコンソールではなくLogPrintウィンドウに対して行います。

### force_bool

`OPTION FORCEBOOL`の初期値を設定します。既定値は`false`です。
これはUWSCRの新機能で、`true`にした場合if文などの条件式にて`TRUE`または`FALSE`を示す式のみ受け付けるようになります。

### browser

ブラウザ操作に関する設定です。

#### chrome

Google Chromeの実行ファイル(chrome.exe)のフルパスを指定します。既定値は`null`です。nullが指定された場合は実行ファイルのパスの自動取得を試みます。自動取得による実行ができない場合はこの項目を設定してください。この値が正しく設定されている場合、設定されたパスのchrome.exeを起動します。

#### msedge

Microsoft Edgeの実行ファイル(msegde.exe)のフルパスを指定します。既定値は`null`です。nullが指定された場合は実行ファイルのパスの自動取得を試みます。自動取得による実行ができない場合はこの項目を設定してください。この値が正しく設定されている場合、設定されたパスのmsegde.exeを起動します。

### chkimg

chkimgに関する設定です。

#### save_ss

chkimg実行時に取得するスクリーンショットを保存するかどうかを設定します。既定値は`false`です。trueにした場合、実行スクリプトと同じフォルダにchkimg_ss.pngが保存されます。

### logfont

print文を出力するLogPrintウィンドウのフォントの設定を行います。`options.gui_print`設定、または`OPTION GUIPRINT`をスクリプト内でTRUEにした場合のみ適用されます。

#### name

フォント名を設定します。既定値は`MS Gothic`です。

#### size

フォントサイズを設定します。既定値は`15`です。

### $schema

設定ファイルのjsonスキーマのURLです。**この項目は変更しないでください**。jsonスキーマに対応しているエディタ(例: VSCode)で設定ファイルを開いた場合に各設定項目の説明の表示や入力補助が行われます。

# 設定ファイルの更新

UWSCRは開発中であるためバージョン更新の際に設定項目が変更されたり、新たに追加されたりする場合があります。このような場合に設定ファイルを更新するためのコマンドが存在しています。

## 旧設定を引き継ぎつつ新設定を反映

現存する設定ファイルの内容をなるべく保持したまま新たな設定項目を設定ファイルに追加します。

```console:powershell
PS> uwscr --settings merge
```

## 設定ファイルを初期化

設定ファイルを初期化します。既存の設定ファイルの内容は破棄されます。

```console:powershell
PS> uwscr --settings init
```

# jsonスキーマファイルの出力

以下のコマンドで指定したディレクトリにスキーマファイル(`uwscr-settings-schema.json`)が出力されます。

```console:powershell
PS> uwscr --schema C:\path\to\schema\
```

設定ファイルにはスキーマファイルのURLが記載されているためオフライン環境では利用できません。この場合は上記コマンドでスキーマファイルを出力し、その絶対パスを設定ファイルに記述してください。

```powershell:出力例
uwscr --schema C:\uwscr\schema\
```

```jsonc:記入例
{
  // 他項目は省略

  // jsonなので \ はエスケープする必要あり
  "$schema": "C:\\uwscr\\schema\\uwscr-settings-schema.json"
}
```