kohkimakimoto/altax — pull request #35 by ngyuki (2014-05-18 01:35:17+00:00)
Title: Fix replace tilde in ssh key

hi.

Unable to read ssh key if contains tilde in path.

For example.

```php
"your",
"key" => "/tmp/key~/deploy.key",
], ["web"]);

Task::register('hello', function($task){
$task->exec(function($process){
$process->run("uname -n");
}, ["web"]);
});
```

```console
$ cat /tmp/key~/deploy.key
-----BEGIN RSA PRIVATE KEY-----
:
:
:
-----END RSA PRIVATE KEY-----

$ php altax.phar hello

Warning: file_get_contents(/tmp/key/home/your/deploy.key): failed to open stream: No such file or directory in phar:///.../altax.phar/src/Altax/Module/Server/Resource/Node.php on line 187
:
:
:
```

See bash spec.

- [Man page of BASH](http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html#lbBA "Man page of BASH")

I write later more information in Japanese.

---

Bash の仕様では先頭のチルダだけが特殊な意味を持ちます。そのためパスの途中のチルダは展開されません。他のシェルはわかりませんが、概ね同じだと思います。

```console
$ echo $HOME
/home/your

$ echo ~/key/deploy.key
/home/your/key/deploy.key

$ echo /tmp/key~/deploy.key
/home/your/key~/deploy.key
```

また、先頭のチルダからスラッシュまでの文字はユーザー名と解釈されます。

```console
$ echo ~your/key/deploy.key
/home/your/key/deploy.key
```

後者はあまり使われることが無いと思いますので、前者のケースのみに対応するよう修正してみました。

ご確認いただいてよろしいでしょうか？