#!/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');
cli(process.argv);
addTs('end');
