LoginSignup
22
22

More than 5 years have passed since last update.

Haxe/Nekoでコマンドラインツール制作入門

Last updated at Posted at 2013-07-28

Haxeでは制作できるのは、JavaScriptや、Flash、スマホアプリだけではありません。Neko出力を使うことで簡単にコマンドラインツールを制作することが出来ます。

FlashDevelopにはHaxe/Nekoのプロジェクトがあるので、これを選択することで簡単にHaxe/Nekoのツールを制作することができます

こんにちは!!

srcフォルダに以下のようなHaxeファイルを書きます。

src/Main.hx
class Main {
    static function main(){
        Sys.println( "こんにちは!!" );
    }
}

HaxeからNekoへコンパイルする。

コマンドラインからコンパイルする場合、以下のようなコマンドを使います

haxe -cp [ソースの入ったフォルダ] -main [メインクラス] -neko [出力ファイル(*.n) ]

例:

haxe -cp src -main Main -neko test.n

生成したNekoファイルを実行する。

さきほどの例で生成したtest.nファイルは以下のコマンドで実行できます。

neko test.n
こんにちは!!

基本的な使い方

標準出力

class Main {
    static function main() {
        Sys.print( "Hello, " ); //Helloを出力
        Sys.println( "World" ); //Worldを出力して改行
    }
}

パラメータを取得

Sys.args()関数を使うことで、パラメータとして与えられた文字列を取得することが出来ます。

class Main {
    static function main() {
        var args = Sys.args();
        Sys.println( args[0] + ", " + args[1] );
    }
}

コマンドを実行すると

neko Test.n -hoge fuga

以下のような出力がされます

-hoge, fuga

標準入力

import haxe.io.Input;

class Main {
    static function main() {
        var input:Input = Sys.stdin();

        input.readLine(); //標準入力を一行読み込み
        input.readAll();  //標準入力を最後まで読み込み
    }
}

ファイル操作

import haxe.io.Output;
import sys.FileSystem;
import sys.io.File;

class Main {
    static function main() {
        if ( FileSystem.exists( "tmp" ) ) { //ファイルの有無を調べる
            if (! FileSystem.isDirectory( "tmp" ) ) { //ディレクトリかどうかを調べる。
                FileSystem.deleteFile( "tmp" ); //ファイルを消去
                FileSystem.createDirectory( "tmp" ); //ディレクトリを作成
            }
        }else{
            FileSystem.createDirectory( "tmp" ); //ディレクトリを作成
        }

        var file:Output = File.write( "tmp/Main.hx" ); //ファイルへの書き込みを開始。

        //ファイルへの書き込み
        file.writeString( 
            "class Main{ static function main(){ Sys.println( \"hello\" ); } }"
        );

        file.close(); //ファイルへの書き込みを終了

        //コマンドを実行
        Sys.command( "haxe", ["-cp","tmp","-main","Main","-neko","tmp/Hello.n" ] );
    }
}
22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22