func main(args)
{
    var dd = new Tesses.CrossLang.Args(args);
    if(dd.Arguments.Count > 0)
    {

        switch(dd.Arguments[0])
        {
            case "args":
                each(var arg : dd.Arguments)
                {
                    Console.WriteLine(arg);
                }
                break;
            case "build":
                return Tesses.CrossLang.Shell.Build(dd);
                break;
            case "run":
                return Tesses.CrossLang.Shell.Run(dd);
                break;
            case "debug":
                 return Tesses.CrossLang.Shell.Debug(dd);
                 break;
            case "new":
                return Tesses.CrossLang.Shell.New(dd);
                break;
            case "install-console":
                return Tesses.CrossLang.Shell.InstallConsole(dd);
                break;
            case "install-app":
                return Tesses.CrossLang.Shell.InstallApp(dd);
                break;
            case "install-template":
                return Tesses.CrossLang.Shell.InstallTemplate(dd);
                break;
            case "install-tool":
                return Tesses.CrossLang.Shell.InstallTool(dd);
                break;
            case "install-webapp":
                return Tesses.CrossLang.Shell.InstallWebApp(dd);
                break;
            case "console":
                return Tesses.CrossLang.Shell.Console(dd);
                break;
            case "tool":
                return Tesses.CrossLang.Shell.Tool(dd);
                break;
            case "webapp":
                return Tesses.CrossLang.Shell.WebApp(dd);
            case "tool-test":
                return Tesses.CrossLang.Shell.ToolTest(dd);
                break;
            case "webapp-test":
                return Tesses.CrossLang.Shell.WebAppTest(dd);
                break;
            case "add-project":
                return Tesses.CrossLang.Shell.AddProject(dd);
                break;
            case "add-dependency":
                return Tesses.CrossLang.Shell.AddDependency(dd);
                break;
            case "upload-package":
                return Tesses.CrossLang.Shell.UploadPackage(dd);
                break;
            case "token":
                return Tesses.CrossLang.Shell.Token(dd);
                break;
            case "login":
                return Tesses.CrossLang.Shell.Login(dd);
                break;
            case "logout":
                return Tesses.CrossLang.Shell.Logout(dd);
                break;
            case "configdir":
                return Tesses.CrossLang.Shell.ConfigDir(dd);
                break;
            case "docs":
                return Tesses.CrossLang.Shell.Docs(dd);
                break;
            case "publish":
                return Tesses.CrossLang.Shell.Publish(dd);
                break;
            case "test":
                return Tesses.CrossLang.Shell.Test(dd);
                break;
            default:
                return Tesses.CrossLang.Shell.Default(dd);
        }
        
    
    } else return Tesses.CrossLang.Shell.Default(dd);
    return 0;
}
