// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

library usage.grind;

import 'dart:io';

import 'package:grinder/grinder.dart';

final Directory _buildExampleDir = new Directory('build/example');

main(List<String> args) => grind(args);

@Task()
void init() => _buildExampleDir.createSync(recursive: true);

@Task()
@Depends(init)
void build() {
  // Compile `test/web_test.dart` to the `build/test` dir; measure its size.
  File srcFile = new File('example/example.dart');
  Dart2js.compile(srcFile,
      outDir: _buildExampleDir,
      minify: true,
      extraArgs: ['--conditional-directives']);
  File outFile = joinFile(_buildExampleDir, ['example.dart.js']);

  log('${outFile.path} compiled to ${_printSize(outFile)}');
}

@Task()
void clean() => delete(buildDir);

String _printSize(File file) => '${(file.lengthSync() + 1023) ~/ 1024}k';
