blob: e44350e76aa58eb377867045fb1dce7eac5d4d48 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:args/args.dart';
import 'package:path/path.dart' as path;
final ArgParser argParser = ArgParser()
..addOption('output-dir')
..addMultiOption('input');
const Pattern packageLibraryName = 'library ui;';
const Pattern packagePartName = 'part of ui;';
const Pattern coreLibraryName = 'library dart.ui;';
const Pattern corePartName = 'part of dart.ui;';
// Rewrites the "package"-style web ui library into a dart:ui implementation.
// So far this only requires a replace of the library declarations.
void main(List<String> arguments) {
final ArgResults results = argParser.parse(arguments);
final Directory directory = Directory(results['output-dir']);
if (!directory.existsSync()) {
directory.createSync(recursive: true);
}
for (String inputFilePath in results['input']) {
final File inputFile = File(inputFilePath);
final String fileName = path.split(inputFilePath).last;
final File outputFile = File(path.join(directory.path, fileName))
..createSync();
String source;
if (fileName == 'ui.dart') {
source = inputFile.readAsStringSync().replaceFirst(packageLibraryName, coreLibraryName);
outputFile.writeAsStringSync(source);
} else {
source = inputFile.readAsStringSync().replaceFirst(packagePartName, corePartName);
}
outputFile.writeAsStringSync(source);
}
}