#!/usr/bin/env node
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
// 
// http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//  KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//

// Set this to 1 to enable timestamp collection via addTs().
if (0) {
    var ts = [];
    addTs = function(name) {
        ts.push([name, new Date]);
    }
    process.on('exit', function() {
        for (var i = 0; i < ts.length - 1; ++i) {
          var e1 = ts[i];
          var e2 = ts[i+1];
          console.log(e1[0] + ' -> ' + e2[0] + ' = ' + (e2[1] - e1[1]));
        }
        console.log('total: ' + (ts[ts.length-1][1] - ts[0][1]));
    });
} else {
    addTs = function() {};
}

addTs('start');
var CLI = require('../src/cli');
new CLI(process.argv);
addTs('end');
