Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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" ] );
    }
}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away