やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

rangerの設定(ソースコードをビルド&実行する)

 rangerはTUIファイラ。

ソースコードをビルド&実行する

 JavaC#(Mono)の単一ファイルをビルド&実行する設定をする。

~/.config/ranger/rifle.conf

...
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php = ${VISUAL:-${EDITOR:-sensible-editor}} -- "$@"
!mime ^text, label pager,  ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
...
ext py  = python -- "$1"
ext pl  = perl -- "$1"
ext rb  = ruby -- "$1"
ext js  = node -- "$1"
ext sh  = sh -- "$1"
ext php = php -- "$1"
...

 これを適切に設定すれば追加できる。

Java

~/.config/ranger/rifle.conf

...
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php|java = ${VISUAL:-${EDITOR:-sensible-editor}} -- "$@"
!mime ^text, label pager,  ext xml|json|csv|tex|py|pl|rb|js|sh|php|java = "$PAGER" -- "$@"
...
ext java = { javac "$1"; java $(basename "$1" .java); } | "${PAGER}"
...

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!!");
    }
}
  1. rangerでHelloWorld.javaファイルにカーソルを合わせる
  2. r+(rifle.confで設定したコマンドの番号)+<Enter>キー押下でビルド&実行する
  3. 何も表示されない画面が出る(ビルド中)
  4. 少し待つとHello World!!と出る(実行結果)
  5. qキー押下でrangerに戻る

 ちなみに、JavaのREPLはJDK9から実装されたらしい。jshellというコマンド名。

C#(MONO)

~/.config/ranger/rifle.conf

...
!mime ^text, label editor, ext xml|json|csv|tex|py|pl|rb|js|sh|php|java|cs = ${VISUAL:-${EDITOR:-sensible-editor}} -- "$@"
!mime ^text, label pager,  ext xml|json|csv|tex|py|pl|rb|js|sh|php|java|cs = "$PAGER" -- "$@"
...
ext cs = { mcs "$1"; ./$(basename "$1" .cs)'.exe'; } | "${PAGER}"
...

a.cs

using System;
public class Sample {
    public static void Main() {
        Console.WriteLine("Hello World!");
    }
}
  1. rangerでa.csファイルにカーソルを合わせる
  2. r+(rifle.confで設定したコマンドの番号)+<Enter>キー押下でビルド&実行する
  3. 何も表示されない画面が出る(ビルド中)
  4. 少し待つとHello World!!と出る(実行結果)
  5. qキー押下でrangerに戻る

 ちなみにC#(MONO)のREPLはcsharpというコマンド名。GUI版はgsharpapt search gsharpで検索してインストールする。mono-tools-gui/stable-raspbianstretch 4.2-2xamarin12+raspbian9b1 allという名前が出た。バージョンが古い。

 他にも以下のような要件がある。

  • MONO
    • プロジェクト・ソリューション
      • ビルド msbuild(xbuildは非推奨)
        • .sln, .csprojをどう作成するか
  • .NET Core(dotnet)
    • ファイル
      • ビルド
    • プロジェクト・ソリューション

 実装には少し骨が折れそうなので省略。

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
  • python 2.7.13, pip 9.0.1
  • python3 3.5.3, pip3 9.0.1
  • ranger 1.9.2
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux