|  | # Copyright 2018 The Fuchsia Authors. All rights reserved. | 
|  | # Use of this source code is governed by a BSD-style license that can be | 
|  | # found in the LICENSE file. | 
|  |  | 
|  | load(":dart.bzl", "DartLibraryInfo", "produce_package_info") | 
|  |  | 
|  | def _dart_library_impl(context): | 
|  | return [ | 
|  | produce_package_info(context.attr.package_name, | 
|  | context.files.source_dir[0], | 
|  | context.attr.deps), | 
|  | ] | 
|  |  | 
|  | dart_library = rule( | 
|  | implementation = _dart_library_impl, | 
|  | attrs = { | 
|  | "package_name": attr.string( | 
|  | doc = "The name of the Dart package", | 
|  | mandatory = True, | 
|  | ), | 
|  | "source_dir": attr.label( | 
|  | # TODO(pylaligand): set a default value to "lib". | 
|  | doc = "The directory containing the library sources", | 
|  | mandatory = True, | 
|  | allow_single_file = True, | 
|  | ), | 
|  | "deps": attr.label_list( | 
|  | doc = "The list of libraries this library depends on", | 
|  | mandatory = False, | 
|  | providers = [DartLibraryInfo], | 
|  | ), | 
|  | }, | 
|  | provides = [ | 
|  | DartLibraryInfo, | 
|  | ], | 
|  | ) |