7rikazhexde’s tech log

技術的な興味関心、備忘録、アウトプットなどを書いています。

a-Shellアプリでgitコマンドを使用する方法

本記事は2023/04/21時点の内容です。
最新情報はa-Shellの公式情報を確認してください。

経緯

  • iPhone/iPadPythonコードはa-Shellアプリを使用することで実行できますが、コードによってはPyPIに登録されてないケースがあるため、その場合はGitHubからzipをDLして使用していました。(a-Shellアプリはデフォルトではgitコマンドは使用できず、aptコマンドも使用できないため。)
  • しかし、GitHubからzipをDLする場合はバージョン確認が必要になります。また、そもそも移動が手間でした。そこで、gitを使える方法がないか調べたところ、a-Shell-commandsからgitコマンドを追加できることがわかりました。
  • 本記事ではgitコマンドの追加方法と使い方について実例を基に紹介します。

手順

  • 本記事ではcurlコマンドで取得する方法を紹介します。コマンドの追加方法についてはa-Shell公式のpurposeを確認ください。
  • 以下のコマンドをa-Shellアプリを起動して実行してください。gitコマンドを実行するシェルスクリプト(git)をa-ShellのbinフォルダにDLします。
mkdir ~/Documents/bin #binフォルダを作成済みの場合は不要
cd ~/Documents/bin
curl -L https://github.com/holzschu/a-Shell-commands/releases/download/0.1/git -o ~/Documents/bin/git
  • リンクが無効な場合はa-Shell-commandsにアクセスし、「Releases 1」> 「Show all 61 assets」> 「git」からURLをコピーして置き換えてください。
  • リンクが有効な場合はファイルを選択するとDLのポップアップが表示されるため手動でDL&ファイル移動することも可能です。

DLしたgitコマンドファイル(シェルスクリプト)について

  • gitコマンドファイルの中身を確認すると以下コードになっており、内部でlg2というシェルスクリプトを呼び出していました。
% cat git
#!/bin/sh
lg2 "$@"
  • twitterを見るとlibgit2ベースのlg2を追加しており、内部ではlibgit2のver1.1.0を使用してgit commandを実行していました。
  • a-Shellが公式のlibgit2を使用しているかまでは未確認ですが、2023/04/21時点ではlibgit2のlatestはver1.6.4でした。

gitコマンドの実行結果(左:DL前, 真ん中/右:DL後)

  • 使用できるコマンドは下記の通りです。
$ git help
usage: lg2 <cmd>...

Available commands:

        add
        apply
        rm
        blame
        branch
        cat-file
        checkout
        clone
        commit
        config
        describe
        diff
        fetch
        for-each-ref
        index-pack
        init
        log
        ls-files
        ls-remote
        merge
        push
        pull
        rebase
        remote
        reset
        rev-list
        rev-parse
        show-index
        self-test
        stash
        status
        submodule
        tag
        version
        help

まとめ

  • a-Shellアプリでgitコマンドを使用する方法を紹介しました。
  • 今回はgitコマンドファイルについて紹介しましたが、他にもシェルスクリプトとwasmファイルが格納されているので必要に応じて追加すると良いかと思います。
  • ffmpeg.wasm, tree.wasm, whichもDLしましたが、問題なく使用できました。(※DL後はアプリの再起動が必要です。)
  • wasmファイルについては同様にbinフォルダに追加すると実行時にWebAssembly JIT (Just-in-Time) コンパイラでブラウザで実行可能な形式にコンパイルされるようです。(この辺りは詳しくないので理解を深めたいところです。)
  • a-Shell公式はコンパイル済みのコマンドがあればプルリクエストを出すことで追加することもできるようです。(要承認確認)

以上です。