これだからwindowsは

これだから Windows はという出来事が 2 回も連続したので切れた

その 1、 powershell とかいうやつ

始まったらここにも詳細を書こうと思ってるんだけど、 ソニーパークでやるオーディオゲームセンターの企画 の準備をしていた。

今回は、東京ゲームショウのと木と違って、私がずっといられるわけじゃないので、なにかあったときに遠隔からバイナリをごっそり入れ替えるような裏口を作りたかった。デスクトップからアイコンをクリックしたら、どっかから zip を落としてきて全部上書き!みたいなの。

で、それぐらいならべつにバッチファイルでできるんじゃねーかと考えた。

だがしかし、コマンドプロンプトでは zip の解凍ができなかった!!!!!!!!!あっちょんぶりけー!!!!!!!!!!!!!

もちろん、unzip とかをリポジトリに突っ込んでそのまま配布しちゃえばできるんですが、なんか、ねぇ。

これだから Windows は。

で、 powershell とかいうわけわからんやつを使ったらできるらしいというので、やってみた。こんな感じ。

echo 最新のデータを取得しています...
Invoke-WebRequest -Uri zipがある場所 -OutFile ローカルのファイル名.zip
echo データを更新しています...
Expand-Archive -Path ローカルのファイル名 -DestinationPath . -Force
echo 更新が完了しました。
pause

やってみたんだけど、そのままだとだめだった。 powershell のファイルは ps1 なんだけど、これをそのまま開くと実行できなくて、バッチ経由でやらないといけない。

@echo off
cd %~dp0
powershell -ExecutionPolicy RemoteSigned .\update.ps1

で、まあ、できたんですが、なんで普通のシェルじゃなくて、俺たちはもちょっとイケイケなんだぜどやーみたいになって、 powershell とかいうのを作ってしまったのか。これだから Windows は。もっとみんななかよくしようぜ。

その 2、なぜか CI だけで落ちる linter

dfg-simulator に github actions で CI を作ろうとしていた。

で、できたんだけど、なぜか CI 上だけ linter がこける。しかも、普通のこけかたじゃない。

Error:   327:19  error  Unsafe call of an `any` typed value                              @typescript-eslint/no-unsafe-call
Error:   356:7   error  Unsafe assignment of an `any` value                              @typescript-eslint/no-unsafe-assignment
Error:   356:19  error  Unsafe member access .createDefaultRuleConfig on an `any` value  @typescript-eslint/no-unsafe-member-access

おいおいおいおい。なんやねん。これだけ型が読めてない?

で、じーっと見てたら、テストファイルの先頭にある import がこうなってた。

import * as Rule from "../src/Rule";

で、ファイル名は ../src/rule.ts になってた。

Windows だとファイル名の大文字と小文字を勝手に同一視しちゃうから、怒られてなかったんだね。

これだから Windows は。