mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Use flutter_tools to generate build_script (#27277)
This commit is contained in:
parent
7765dd4c3c
commit
b06a709305
@ -9,7 +9,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -56,7 +56,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -68,4 +68,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: e195
|
||||
# PUBSPEC CHECKSUM: 25f2
|
||||
|
@ -40,7 +40,7 @@ dependencies:
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -74,7 +74,7 @@ dev_dependencies:
|
||||
source_maps: 0.10.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -85,4 +85,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: b266
|
||||
# PUBSPEC CHECKSUM: 39c3
|
||||
|
@ -40,7 +40,7 @@ dependencies:
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -74,7 +74,7 @@ dev_dependencies:
|
||||
source_maps: 0.10.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -82,4 +82,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: b266
|
||||
# PUBSPEC CHECKSUM: 39c3
|
||||
|
@ -13,7 +13,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
stocks:
|
||||
path: ../../../examples/stocks
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -64,7 +64,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +76,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 61eb
|
||||
# PUBSPEC CHECKSUM: fd49
|
||||
|
@ -13,7 +13,7 @@ dependencies:
|
||||
platform: 2.2.0
|
||||
http: 0.12.0+1
|
||||
http_parser: 3.1.3
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -55,7 +55,7 @@ dependencies:
|
||||
stream_channel: 1.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +67,4 @@ dev_dependencies:
|
||||
mockito: 4.0.0
|
||||
test_api: 0.2.2
|
||||
|
||||
# PUBSPEC CHECKSUM: 4e3a
|
||||
# PUBSPEC CHECKSUM: ca97
|
||||
|
@ -37,7 +37,7 @@ dependencies:
|
||||
|
||||
dev_dependencies:
|
||||
# See packages/flutter_test/pubspec.yaml for why we're pinning this version.
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -69,9 +69,9 @@ dev_dependencies:
|
||||
source_maps: 0.10.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: cf24
|
||||
# PUBSPEC CHECKSUM: bc81
|
||||
|
@ -6,7 +6,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -54,7 +54,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -66,4 +66,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 13de
|
||||
# PUBSPEC CHECKSUM: 7b3c
|
||||
|
@ -37,7 +37,7 @@ dependencies:
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -71,7 +71,7 @@ dev_dependencies:
|
||||
source_maps: 0.10.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -79,4 +79,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: eb90
|
||||
# PUBSPEC CHECKSUM: 1bed
|
||||
|
@ -10,7 +10,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -58,7 +58,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -70,4 +70,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 13de
|
||||
# PUBSPEC CHECKSUM: 7b3c
|
||||
|
@ -10,7 +10,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -58,7 +58,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -70,4 +70,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 13de
|
||||
# PUBSPEC CHECKSUM: 7b3c
|
||||
|
@ -10,7 +10,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -58,7 +58,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -70,4 +70,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 13de
|
||||
# PUBSPEC CHECKSUM: 7b3c
|
||||
|
@ -10,7 +10,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -58,7 +58,7 @@ dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -70,4 +70,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 13de
|
||||
# PUBSPEC CHECKSUM: 7b3c
|
||||
|
@ -11,7 +11,7 @@ dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
archive: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -60,7 +60,7 @@ dependencies:
|
||||
stream_channel: 1.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -80,4 +80,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 54f5
|
||||
# PUBSPEC CHECKSUM: e153
|
||||
|
@ -43,7 +43,7 @@ dependencies:
|
||||
yaml: 2.1.15 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
dev_dependencies:
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
boolean_selector: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http: 0.12.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -68,7 +68,7 @@ dev_dependencies:
|
||||
stack_trace: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stream_channel: 1.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
@ -101,4 +101,4 @@ executables:
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
web_socket_channel: 1.0.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 48f7
|
||||
# PUBSPEC CHECKSUM: bb55
|
||||
|
@ -20,7 +20,7 @@ dev_dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -66,7 +66,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +76,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: c6c7
|
||||
# PUBSPEC CHECKSUM: d225
|
||||
|
@ -10,7 +10,7 @@ dependencies:
|
||||
collection: 1.14.11
|
||||
device_info: 0.4.0
|
||||
intl: 0.15.7
|
||||
connectivity: 0.4.0
|
||||
connectivity: 0.4.0+1
|
||||
string_scanner: 1.0.4
|
||||
url_launcher: 5.0.0
|
||||
cupertino_icons: 0.1.2
|
||||
@ -36,7 +36,7 @@ dev_dependencies:
|
||||
sdk: flutter
|
||||
flutter_goldens:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -79,7 +79,7 @@ dev_dependencies:
|
||||
stack_trace: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stream_channel: 1.6.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -242,4 +242,4 @@ flutter:
|
||||
- asset: packages/flutter_gallery_assets/fonts/private/googlesans/GoogleSansDisplay-Regular.ttf
|
||||
weight: 400
|
||||
|
||||
# PUBSPEC CHECKSUM: 2c0e
|
||||
# PUBSPEC CHECKSUM: b3c7
|
||||
|
@ -18,7 +18,7 @@ dev_dependencies:
|
||||
sdk: flutter
|
||||
flutter_driver:
|
||||
sdk: flutter
|
||||
test: 1.5.2
|
||||
test: 1.5.3
|
||||
|
||||
analyzer: 0.33.6+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -65,7 +65,7 @@ dev_dependencies:
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_core: 0.2.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vm_service_client: 0.2.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -75,4 +75,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: c6c7
|
||||
# PUBSPEC CHECKSUM: d225
|
||||
|
@ -2,6 +2,8 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
// Note: this Builder does not run in the same process as the flutter_tool, so
|
||||
// the DI provided getters such as `fs` will not work.
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
@ -14,7 +16,6 @@ import 'package:path/path.dart' as path;
|
||||
|
||||
const String _kFlutterDillOutputExtension = '.app.dill';
|
||||
const String _kPackagesExtension = '.packages';
|
||||
const String multiRootScheme = 'org-dartlang-app';
|
||||
|
||||
/// A builder which creates a kernel and packages file for a Flutter app.
|
||||
///
|
||||
@ -235,39 +236,47 @@ class _StdoutHandler {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class _CompilerOutput {
|
||||
const _CompilerOutput(this.outputFilename, this.errorCount);
|
||||
|
||||
final String outputFilename;
|
||||
final int errorCount;
|
||||
}
|
||||
|
||||
/// Converts filesystem paths to package URIs.
|
||||
class _PackageUriMapper {
|
||||
_PackageUriMapper(String scriptPath, String packagesPath, this.fileSystemScheme, this.fileSystemRoots) {
|
||||
_PackageUriMapper(String scriptPath, String packagesPath, String fileSystemScheme, List<String> fileSystemRoots) {
|
||||
final List<int> bytes = File(path.absolute(packagesPath)).readAsBytesSync();
|
||||
final Map<String, Uri> packageMap = packages_file.parse(bytes, Uri.file(packagesPath, windows: Platform.isWindows));
|
||||
final String scriptUri = Uri.file(scriptPath, windows: Platform.isWindows).toString();
|
||||
|
||||
for (String packageName in packageMap.keys) {
|
||||
final String prefix = packageMap[packageName].toString();
|
||||
if (fileSystemScheme != null && fileSystemRoots != null && prefix.contains(fileSystemScheme)) {
|
||||
_packageName = packageName;
|
||||
_uriPrefix = fileSystemRoots.map((String name) => Uri.file('$name/lib/', windows: Platform.isWindows).toString()).toList();
|
||||
_uriPrefixes = fileSystemRoots
|
||||
.map((String name) => Uri.file('$name/lib/', windows: Platform.isWindows).toString())
|
||||
.toList();
|
||||
return;
|
||||
}
|
||||
if (scriptUri.startsWith(prefix)) {
|
||||
_packageName = packageName;
|
||||
_uriPrefix = <String>[prefix];
|
||||
_uriPrefixes = <String>[prefix];
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final String fileSystemScheme;
|
||||
final List<String> fileSystemRoots;
|
||||
|
||||
String _packageName;
|
||||
List<String> _uriPrefix;
|
||||
List<String> _uriPrefixes;
|
||||
|
||||
Uri map(String scriptPath) {
|
||||
if (_packageName == null) {
|
||||
return null;
|
||||
}
|
||||
final String scriptUri = Uri.file(scriptPath, windows: Platform.isWindows).toString();
|
||||
for (String uriPrefix in _uriPrefix) {
|
||||
for (String uriPrefix in _uriPrefixes) {
|
||||
if (scriptUri.startsWith(uriPrefix)) {
|
||||
return Uri.parse('package:$_packageName/${scriptUri.substring(uriPrefix.length)}');
|
||||
}
|
||||
@ -279,10 +288,3 @@ class _PackageUriMapper {
|
||||
return _PackageUriMapper(scriptPath, packagesPath, fileSystemScheme, fileSystemRoots).map(scriptPath);
|
||||
}
|
||||
}
|
||||
|
||||
class _CompilerOutput {
|
||||
const _CompilerOutput(this.outputFilename, this.errorCount);
|
||||
|
||||
final String outputFilename;
|
||||
final int errorCount;
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ environment:
|
||||
dependencies:
|
||||
# To update these, use "flutter update-packages --force-upgrade".
|
||||
build: 1.1.0
|
||||
build_modules: 1.0.4
|
||||
build_modules: 1.0.6
|
||||
package_config: 1.0.5
|
||||
path: 1.6.2
|
||||
|
||||
@ -33,7 +33,7 @@ dependencies:
|
||||
pedantic: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
plugin: 0.2.0+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pool: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
protobuf: 0.13.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
protobuf: 0.13.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pubspec_parse: 0.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
scratch_space: 0.0.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -50,4 +50,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: ec31
|
||||
# PUBSPEC CHECKSUM: 1f34
|
||||
|
@ -4,19 +4,22 @@
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:build_runner_core/build_runner_core.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
|
||||
import '../artifacts.dart';
|
||||
import '../base/context.dart';
|
||||
import '../base/file_system.dart';
|
||||
import '../base/io.dart';
|
||||
import '../base/logger.dart';
|
||||
import '../base/platform.dart';
|
||||
import '../base/process_manager.dart';
|
||||
import '../cache.dart';
|
||||
import '../convert.dart';
|
||||
import '../dart/package_map.dart';
|
||||
import '../dart/pub.dart';
|
||||
import '../globals.dart';
|
||||
import '../project.dart';
|
||||
import 'build_script_generator.dart';
|
||||
|
||||
/// The [BuildRunnerFactory] instance.
|
||||
BuildRunnerFactory get buildRunnerFactory => context[BuildRunnerFactory];
|
||||
@ -26,17 +29,8 @@ BuildRunnerFactory get buildRunnerFactory => context[BuildRunnerFactory];
|
||||
/// This requires both an experimental opt in via the environment variable
|
||||
/// 'FLUTTER_EXPERIMENTAL_BUILD' and that the project itself has a
|
||||
/// dependency on the package 'flutter_build' and 'build_runner.'
|
||||
FutureOr<bool> get experimentalBuildEnabled async {
|
||||
if (_experimentalBuildEnabled != null) {
|
||||
return _experimentalBuildEnabled;
|
||||
}
|
||||
final bool flagEnabled = platform.environment['FLUTTER_EXPERIMENTAL_BUILD']?.toLowerCase() == 'true';
|
||||
if (!flagEnabled) {
|
||||
return _experimentalBuildEnabled = false;
|
||||
}
|
||||
final FlutterProject flutterProject = await FlutterProject.current();
|
||||
final Map<String, Uri> packages = PackageMap(flutterProject.packagesFile.path).map;
|
||||
return _experimentalBuildEnabled = packages.containsKey('flutter_build') && packages.containsKey('build_runner');
|
||||
bool get experimentalBuildEnabled {
|
||||
return _experimentalBuildEnabled ??= platform.environment['FLUTTER_EXPERIMENTAL_BUILD']?.toLowerCase() == 'true';
|
||||
}
|
||||
bool _experimentalBuildEnabled;
|
||||
|
||||
@ -74,53 +68,69 @@ class BuildRunner {
|
||||
@required String mainPath,
|
||||
@required List<String> extraFrontEndOptions,
|
||||
}) async {
|
||||
await generateBuildScript();
|
||||
final FlutterProject flutterProject = await FlutterProject.current();
|
||||
final String frontendServerPath = artifacts.getArtifactPath(
|
||||
Artifact.frontendServerSnapshotForEngineDartSdk
|
||||
);
|
||||
final String pubExecutable = fs.path.join(Cache.flutterRoot, 'bin', 'cache', 'dart-sdk','bin', 'pub');
|
||||
final String sdkRoot = artifacts.getArtifactPath(Artifact.flutterPatchedSdkPath);
|
||||
final String engineDartBinaryPath = artifacts.getArtifactPath(Artifact.engineDartBinary);
|
||||
final String packagesPath = flutterProject.packagesFile.absolute.path;
|
||||
final Process process = await processManager.start(<String>[
|
||||
'$pubExecutable',
|
||||
'run',
|
||||
'build_runner',
|
||||
'build',
|
||||
'--define', 'flutter_build|kernel=disabled=false',
|
||||
'--define', 'flutter_build|kernel=aot=$aot',
|
||||
'--define', 'flutter_build|kernel=linkPlatformKernelIn=$linkPlatformKernelIn',
|
||||
'--define', 'flutter_build|kernel=trackWidgetCreation=$trackWidgetCreation',
|
||||
'--define', 'flutter_build|kernel=targetProductVm=$targetProductVm',
|
||||
'--define', 'flutter_build|kernel=mainPath=$mainPath',
|
||||
'--define', 'flutter_build|kernel=packagesPath=$packagesPath',
|
||||
'--define', 'flutter_build|kernel=sdkRoot=$sdkRoot',
|
||||
'--define', 'flutter_build|kernel=frontendServerPath=$frontendServerPath',
|
||||
'--define', 'flutter_build|kernel=engineDartBinaryPath=$engineDartBinaryPath',
|
||||
'--define', 'flutter_build|kernel=extraFrontEndOptions=${extraFrontEndOptions ?? const <String>[]}',
|
||||
]);
|
||||
process.stdout
|
||||
.transform(utf8.decoder)
|
||||
.transform(const LineSplitter())
|
||||
.listen(_handleOutput);
|
||||
process.stderr
|
||||
.transform(utf8.decoder)
|
||||
.transform(const LineSplitter())
|
||||
.listen(_handleError);
|
||||
final int exitCode = await process.exitCode;
|
||||
if (exitCode != 0) {
|
||||
throw Exception('build_runner exited with non-zero exit code: $exitCode');
|
||||
final String buildScript = flutterProject
|
||||
.dartTool
|
||||
.childDirectory('build')
|
||||
.childDirectory('entrypoint')
|
||||
.childFile('build.dart')
|
||||
.path;
|
||||
final String scriptPackagesPath = flutterProject
|
||||
.dartTool
|
||||
.childDirectory('flutter_tool')
|
||||
.childFile('.packages')
|
||||
.path;
|
||||
final String dartPath = fs.path.join(Cache.flutterRoot, 'bin', 'cache', 'dart-sdk', 'bin', 'dart');
|
||||
final Status status = logger.startProgress('running builders...', timeout: null);
|
||||
try {
|
||||
final Process buildProcess = await processManager.start(<String>[
|
||||
dartPath,
|
||||
'--packages=$scriptPackagesPath',
|
||||
buildScript,
|
||||
'build',
|
||||
'--define', 'flutter_build|kernel=disabled=false',
|
||||
'--define', 'flutter_build|kernel=aot=$aot',
|
||||
'--define', 'flutter_build|kernel=linkPlatformKernelIn=$linkPlatformKernelIn',
|
||||
'--define', 'flutter_build|kernel=trackWidgetCreation=$trackWidgetCreation',
|
||||
'--define', 'flutter_build|kernel=targetProductVm=$targetProductVm',
|
||||
'--define', 'flutter_build|kernel=mainPath=$mainPath',
|
||||
'--define', 'flutter_build|kernel=packagesPath=$packagesPath',
|
||||
'--define', 'flutter_build|kernel=sdkRoot=$sdkRoot',
|
||||
'--define', 'flutter_build|kernel=frontendServerPath=$frontendServerPath',
|
||||
'--define', 'flutter_build|kernel=engineDartBinaryPath=$engineDartBinaryPath',
|
||||
'--define', 'flutter_build|kernel=extraFrontEndOptions=${extraFrontEndOptions ?? const <String>[]}',
|
||||
]);
|
||||
buildProcess
|
||||
.stdout
|
||||
.transform(utf8.decoder)
|
||||
.transform(const LineSplitter())
|
||||
.listen(printStatus);
|
||||
buildProcess
|
||||
.stderr
|
||||
.transform(utf8.decoder)
|
||||
.transform(const LineSplitter())
|
||||
.listen(printError);
|
||||
await buildProcess.exitCode;
|
||||
} finally {
|
||||
status.stop();
|
||||
}
|
||||
/// We don't check for this above because it might be generated for the
|
||||
/// first time by invoking the build.
|
||||
final Directory dartTool = flutterProject.dartTool;
|
||||
final String projectName = flutterProject.manifest.appName;
|
||||
final Directory generatedDirectory = dartTool
|
||||
.absolute
|
||||
.childDirectory('build')
|
||||
.childDirectory('generated')
|
||||
.childDirectory(projectName);
|
||||
if (!await generatedDirectory.exists()) {
|
||||
.absolute
|
||||
.childDirectory('build')
|
||||
.childDirectory('generated')
|
||||
.childDirectory(projectName);
|
||||
if (!generatedDirectory.existsSync()) {
|
||||
throw Exception('build_runner cannot find generated directory');
|
||||
}
|
||||
final String relativeMain = fs.path.relative(mainPath, from: flutterProject.directory.path);
|
||||
@ -130,18 +140,66 @@ class BuildRunner {
|
||||
final File dillFile = fs.file(
|
||||
fs.path.join(generatedDirectory.path, fs.path.setExtension(relativeMain, '.app.dill'))
|
||||
);
|
||||
if (!await packagesFile.exists() || !await dillFile.exists()) {
|
||||
if (!packagesFile.existsSync() || !dillFile.existsSync()) {
|
||||
throw Exception('build_runner did not produce output at expected location: ${dillFile.path} missing');
|
||||
}
|
||||
return BuildResult(packagesFile, dillFile);
|
||||
}
|
||||
|
||||
void _handleOutput(String line) {
|
||||
printTrace(line);
|
||||
/// Invalidates a generated build script by deleting it.
|
||||
///
|
||||
/// Must be called any time a pubspec file update triggers a corresponding change
|
||||
/// in .packages.
|
||||
Future<void> invalidateBuildScript() async {
|
||||
final FlutterProject flutterProject = await FlutterProject.current();
|
||||
final File buildScript = flutterProject.dartTool
|
||||
.absolute
|
||||
.childDirectory('flutter_tool')
|
||||
.childFile('build.dart');
|
||||
if (!buildScript.existsSync()) {
|
||||
return;
|
||||
}
|
||||
await buildScript.delete();
|
||||
}
|
||||
|
||||
void _handleError(String line) {
|
||||
printError(line);
|
||||
// Generates a synthetic package under .dart_tool/flutter_tool which is in turn
|
||||
// used to generate a build script.
|
||||
Future<void> generateBuildScript() async {
|
||||
final FlutterProject flutterProject = await FlutterProject.current();
|
||||
final String generatedDirectory = fs.path.join(flutterProject.dartTool.path, 'flutter_tool');
|
||||
final String resultScriptPath = fs.path.join(flutterProject.dartTool.path, 'build', 'entrypoint', 'build.dart');
|
||||
if (fs.file(resultScriptPath).existsSync()) {
|
||||
return;
|
||||
}
|
||||
final Status status = logger.startProgress('generating build script...', timeout: null);
|
||||
try {
|
||||
fs.directory(generatedDirectory).createSync(recursive: true);
|
||||
|
||||
final File syntheticPubspec = fs.file(fs.path.join(generatedDirectory, 'pubspec.yaml'));
|
||||
final StringBuffer stringBuffer = StringBuffer();
|
||||
|
||||
stringBuffer.writeln('name: synthetic_example');
|
||||
stringBuffer.writeln('dependencies:');
|
||||
for (String builder in await flutterProject.builders) {
|
||||
stringBuffer.writeln(' $builder: any');
|
||||
}
|
||||
stringBuffer.writeln(' build_runner: any');
|
||||
stringBuffer.writeln(' flutter_build:');
|
||||
stringBuffer.writeln(' sdk: flutter');
|
||||
await syntheticPubspec.writeAsString(stringBuffer.toString());
|
||||
|
||||
await pubGet(
|
||||
context: PubContext.pubGet,
|
||||
directory: generatedDirectory,
|
||||
upgrade: false,
|
||||
checkLastModified: false,
|
||||
);
|
||||
final PackageGraph packageGraph = PackageGraph.forPath(syntheticPubspec.parent.path);
|
||||
final BuildScriptGenerator buildScriptGenerator = buildScriptGeneratorFactory.create(flutterProject, packageGraph);
|
||||
await buildScriptGenerator.generateBuildScript();
|
||||
} finally {
|
||||
status.stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,283 @@
|
||||
// Copyright 201 The Chromium 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:async';
|
||||
|
||||
import 'package:build_runner_core/build_runner_core.dart';
|
||||
import 'package:build/build.dart' show BuilderOptions;
|
||||
import 'package:build_config/build_config.dart';
|
||||
import 'package:code_builder/code_builder.dart';
|
||||
import 'package:dart_style/dart_style.dart';
|
||||
import 'package:graphs/graphs.dart';
|
||||
|
||||
import '../base/common.dart';
|
||||
import '../base/context.dart';
|
||||
import '../base/file_system.dart';
|
||||
import '../project.dart';
|
||||
|
||||
BuildScriptGeneratorFactory get buildScriptGeneratorFactory => context[BuildScriptGeneratorFactory];
|
||||
|
||||
class BuildScriptGeneratorFactory {
|
||||
const BuildScriptGeneratorFactory();
|
||||
|
||||
/// Creates a [BuildScriptGenerator] for the current flutter project.
|
||||
BuildScriptGenerator create(FlutterProject flutterProject, PackageGraph packageGraph) {
|
||||
return BuildScriptGenerator(flutterProject, packageGraph);
|
||||
}
|
||||
}
|
||||
|
||||
/// Generates a build_script for the current flutter project.
|
||||
class BuildScriptGenerator {
|
||||
const BuildScriptGenerator(this.flutterProject, this.packageGraph);
|
||||
|
||||
final FlutterProject flutterProject;
|
||||
final PackageGraph packageGraph;
|
||||
|
||||
/// Generate a build script for the curent flutter project.
|
||||
///
|
||||
/// Requires the project to have a pubspec.yaml.
|
||||
Future<void> generateBuildScript() async {
|
||||
final Iterable<Expression> builders = await _findBuilderApplications();
|
||||
final Library library = Library((LibraryBuilder libraryBuilder) => libraryBuilder.body.addAll(<Spec>[
|
||||
literalList(builders, refer('BuilderApplication', 'package:build_runner_core/build_runner_core.dart'))
|
||||
.assignFinal('_builders')
|
||||
.statement,
|
||||
_createMain()
|
||||
]));
|
||||
final DartEmitter emitter = DartEmitter(Allocator.simplePrefixing());
|
||||
try {
|
||||
final String location = fs.path.join(flutterProject.dartTool.path, 'build', 'entrypoint', 'build.dart');
|
||||
final String result = DartFormatter().format('''
|
||||
// ignore_for_file: directives_ordering
|
||||
${library.accept(emitter)}''');
|
||||
final File output = fs.file(location);
|
||||
await output.create(recursive: true);
|
||||
await fs.file(location).writeAsString(result);
|
||||
} on FormatterException {
|
||||
throwToolExit('Generated build script could not be parsed. '
|
||||
'This is likely caused by a misconfigured builder definition.');
|
||||
}
|
||||
}
|
||||
|
||||
/// Finds expressions to create all the `BuilderApplication` instances that
|
||||
/// should be applied packages in the build.
|
||||
///
|
||||
/// Adds `apply` expressions based on the BuildefDefinitions from any package
|
||||
/// which has a `build.yaml`.
|
||||
Future<Iterable<Expression>> _findBuilderApplications() async {
|
||||
final List<Expression> builderApplications = <Expression>[];
|
||||
final Iterable<PackageNode> orderedPackages = stronglyConnectedComponents<PackageNode>(
|
||||
<PackageNode>[packageGraph.root],
|
||||
(PackageNode node) => node.dependencies,
|
||||
equals: (PackageNode a, PackageNode b) => a.name == b.name,
|
||||
hashCode: (PackageNode n) => n.name.hashCode,
|
||||
).expand((List<PackageNode> nodes) => nodes);
|
||||
Future<BuildConfig> _packageBuildConfig(PackageNode package) async {
|
||||
try {
|
||||
return await BuildConfig.fromBuildConfigDir(package.name, package.dependencies.map((PackageNode node) => node.name), package.path);
|
||||
} on ArgumentError catch (_) {
|
||||
// During the build an error will be logged.
|
||||
return BuildConfig.useDefault(package.name, package.dependencies.map((PackageNode node) => node.name));
|
||||
}
|
||||
}
|
||||
|
||||
final Iterable<BuildConfig> orderedConfigs = await Future.wait(orderedPackages.map(_packageBuildConfig));
|
||||
final List<BuilderDefinition> builderDefinitions = orderedConfigs
|
||||
.expand((BuildConfig buildConfig) => buildConfig.builderDefinitions.values)
|
||||
.where((BuilderDefinition builderDefinition) {
|
||||
if (builderDefinition.import.startsWith('package:')) {
|
||||
return true;
|
||||
}
|
||||
return builderDefinition.package == packageGraph.root.name;
|
||||
})
|
||||
.toList();
|
||||
|
||||
final List<BuilderDefinition> orderedBuilders = _findBuilderOrder(builderDefinitions).toList();
|
||||
builderApplications.addAll(orderedBuilders.map(_applyBuilder));
|
||||
|
||||
final List<PostProcessBuilderDefinition> postProcessBuilderDefinitions = orderedConfigs
|
||||
.expand((BuildConfig buildConfig) => buildConfig.postProcessBuilderDefinitions.values)
|
||||
.where((PostProcessBuilderDefinition builderDefinition) {
|
||||
if (builderDefinition.import.startsWith('package:')) {
|
||||
return true;
|
||||
}
|
||||
return builderDefinition.package == packageGraph.root.name;
|
||||
})
|
||||
.toList();
|
||||
builderApplications.addAll(postProcessBuilderDefinitions.map(_applyPostProcessBuilder));
|
||||
|
||||
return builderApplications;
|
||||
}
|
||||
|
||||
/// A method forwarding to `run`.
|
||||
Method _createMain() {
|
||||
return Method((MethodBuilder b) => b
|
||||
..name = 'main'
|
||||
..modifier = MethodModifier.async
|
||||
..requiredParameters.add(Parameter((ParameterBuilder parameterBuilder) => parameterBuilder
|
||||
..name = 'args'
|
||||
..type = TypeReference((TypeReferenceBuilder typeReferenceBuilder) => typeReferenceBuilder
|
||||
..symbol = 'List'
|
||||
..types.add(refer('String')))))
|
||||
..optionalParameters.add(Parameter((ParameterBuilder parameterBuilder) => parameterBuilder
|
||||
..name = 'sendPort'
|
||||
..type = refer('SendPort', 'dart:isolate')))
|
||||
..body = Block.of(<Code>[
|
||||
refer('run', 'package:build_runner/build_runner.dart')
|
||||
.call(<Expression>[refer('args'), refer('_builders')])
|
||||
.awaited
|
||||
.assignVar('result')
|
||||
.statement,
|
||||
refer('sendPort')
|
||||
.nullSafeProperty('send')
|
||||
.call(<Expression>[refer('result')]).statement,
|
||||
]));
|
||||
}
|
||||
|
||||
/// An expression calling `apply` with appropriate setup for a Builder.
|
||||
Expression _applyBuilder(BuilderDefinition definition) {
|
||||
final Map<String, Expression> namedArgs = <String, Expression>{};
|
||||
if (definition.isOptional) {
|
||||
namedArgs['isOptional'] = literalTrue;
|
||||
}
|
||||
if (definition.buildTo == BuildTo.cache) {
|
||||
namedArgs['hideOutput'] = literalTrue;
|
||||
} else {
|
||||
namedArgs['hideOutput'] = literalFalse;
|
||||
}
|
||||
if (!identical(definition.defaults?.generateFor, InputSet.anything)) {
|
||||
final Map<String, Expression> inputSetArgs = <String, Expression>{};
|
||||
if (definition.defaults.generateFor.include != null) {
|
||||
inputSetArgs['include'] = literalConstList(definition.defaults.generateFor.include);
|
||||
}
|
||||
if (definition.defaults.generateFor.exclude != null) {
|
||||
inputSetArgs['exclude'] = literalConstList(definition.defaults.generateFor.exclude);
|
||||
}
|
||||
namedArgs['defaultGenerateFor'] =
|
||||
refer('InputSet', 'package:build_config/build_config.dart')
|
||||
.constInstance(<Expression>[], inputSetArgs);
|
||||
}
|
||||
if (!identical(definition.defaults?.options, BuilderOptions.empty)) {
|
||||
namedArgs['defaultOptions'] = _constructBuilderOptions(definition.defaults.options);
|
||||
}
|
||||
if (!identical(definition.defaults?.devOptions, BuilderOptions.empty)) {
|
||||
namedArgs['defaultDevOptions'] = _constructBuilderOptions(definition.defaults.devOptions);
|
||||
}
|
||||
if (!identical(definition.defaults?.releaseOptions, BuilderOptions.empty)) {
|
||||
namedArgs['defaultReleaseOptions'] = _constructBuilderOptions(definition.defaults.releaseOptions);
|
||||
}
|
||||
if (definition.appliesBuilders.isNotEmpty) {
|
||||
namedArgs['appliesBuilders'] = literalList(definition.appliesBuilders);
|
||||
}
|
||||
final String import = _buildScriptImport(definition.import);
|
||||
return refer('apply', 'package:build_runner_core/build_runner_core.dart')
|
||||
.call(<Expression>[
|
||||
literalString(definition.key),
|
||||
literalList(
|
||||
definition.builderFactories.map((String f) => refer(f, import)).toList()),
|
||||
_findToExpression(definition),
|
||||
], namedArgs);
|
||||
}
|
||||
|
||||
/// An expression calling `applyPostProcess` with appropriate setup for a
|
||||
/// PostProcessBuilder.
|
||||
Expression _applyPostProcessBuilder(PostProcessBuilderDefinition definition) {
|
||||
final Map<String, Expression> namedArgs = <String, Expression>{};
|
||||
if (definition.defaults?.generateFor != null) {
|
||||
final Map<String, Expression> inputSetArgs = <String, Expression>{};
|
||||
if (definition.defaults.generateFor.include != null) {
|
||||
inputSetArgs['include'] = literalConstList(definition.defaults.generateFor.include);
|
||||
}
|
||||
if (definition.defaults.generateFor.exclude != null) {
|
||||
inputSetArgs['exclude'] = literalConstList(definition.defaults.generateFor.exclude);
|
||||
}
|
||||
if (!identical(definition.defaults?.options, BuilderOptions.empty)) {
|
||||
namedArgs['defaultOptions'] = _constructBuilderOptions(definition.defaults.options);
|
||||
}
|
||||
if (!identical(definition.defaults?.devOptions, BuilderOptions.empty)) {
|
||||
namedArgs['defaultDevOptions'] = _constructBuilderOptions(definition.defaults.devOptions);
|
||||
}
|
||||
if (!identical(definition.defaults?.releaseOptions, BuilderOptions.empty)) {
|
||||
namedArgs['defaultReleaseOptions'] = _constructBuilderOptions(definition.defaults.releaseOptions);
|
||||
}
|
||||
namedArgs['defaultGenerateFor'] = refer('InputSet', 'package:build_config/build_config.dart').constInstance(<Expression>[], inputSetArgs);
|
||||
}
|
||||
final String import = _buildScriptImport(definition.import);
|
||||
return refer('applyPostProcess', 'package:build_runner_core/build_runner_core.dart')
|
||||
.call(<Expression>[
|
||||
literalString(definition.key),
|
||||
refer(definition.builderFactory, import),
|
||||
], namedArgs);
|
||||
}
|
||||
|
||||
/// Returns the actual import to put in the generated script based on an import
|
||||
/// found in the build.yaml.
|
||||
String _buildScriptImport(String import) {
|
||||
if (import.startsWith('package:')) {
|
||||
return import;
|
||||
}
|
||||
throwToolExit('non-package import syntax in build.yaml is not supported');
|
||||
return null;
|
||||
}
|
||||
|
||||
Expression _findToExpression(BuilderDefinition definition) {
|
||||
switch (definition.autoApply) {
|
||||
case AutoApply.none:
|
||||
return refer('toNoneByDefault',
|
||||
'package:build_runner_core/build_runner_core.dart')
|
||||
.call(<Expression>[]);
|
||||
case AutoApply.dependents:
|
||||
return refer('toDependentsOf',
|
||||
'package:build_runner_core/build_runner_core.dart')
|
||||
.call(<Expression>[literalString(definition.package)]);
|
||||
case AutoApply.allPackages:
|
||||
return refer('toAllPackages',
|
||||
'package:build_runner_core/build_runner_core.dart')
|
||||
.call(<Expression>[]);
|
||||
case AutoApply.rootPackage:
|
||||
return refer('toRoot', 'package:build_runner_core/build_runner_core.dart')
|
||||
.call(<Expression>[]);
|
||||
}
|
||||
throw ArgumentError('Unhandled AutoApply type: ${definition.autoApply}');
|
||||
}
|
||||
|
||||
/// An expression creating a [BuilderOptions] from a json string.
|
||||
Expression _constructBuilderOptions(BuilderOptions options) {
|
||||
return refer('BuilderOptions', 'package:build/build.dart').newInstance(<Expression>[literalMap(options.config)]);
|
||||
}
|
||||
|
||||
/// Put [builders] into an order such that any builder which specifies
|
||||
/// [BuilderDefinition.requiredInputs] will come after any builder which
|
||||
/// produces a desired output.
|
||||
///
|
||||
/// Builders will be ordered such that their `required_inputs` and `runs_before`
|
||||
/// constraints are met, but the rest of the ordering is arbitrary.
|
||||
Iterable<BuilderDefinition> _findBuilderOrder(Iterable<BuilderDefinition> builders) {
|
||||
Iterable<BuilderDefinition> dependencies(BuilderDefinition parent) {
|
||||
return builders.where((BuilderDefinition child) => _hasInputDependency(parent, child) || _mustRunBefore(parent, child));
|
||||
}
|
||||
final List<List<BuilderDefinition>> components = stronglyConnectedComponents<BuilderDefinition>(
|
||||
builders,
|
||||
dependencies,
|
||||
equals: (BuilderDefinition a, BuilderDefinition b) => a.key == b.key,
|
||||
hashCode: (BuilderDefinition b) => b.key.hashCode,
|
||||
);
|
||||
return components.map((List<BuilderDefinition> component) {
|
||||
if (component.length > 1) {
|
||||
throw ArgumentError('Required input cycle for ${component.toList()}');
|
||||
}
|
||||
return component.single;
|
||||
}).toList();
|
||||
}
|
||||
|
||||
/// Whether [parent] has a `required_input` that wants to read outputs produced
|
||||
/// by [child].
|
||||
bool _hasInputDependency(BuilderDefinition parent, BuilderDefinition child) {
|
||||
final Set<String> childOutputs = child.buildExtensions.values.expand((List<String> values) => values).toSet();
|
||||
return parent.requiredInputs.any((String input) => childOutputs.any((String output) => output.endsWith(input)));
|
||||
}
|
||||
|
||||
/// Whether [child] specifies that it wants to run before [parent].
|
||||
bool _mustRunBefore(BuilderDefinition parent, BuilderDefinition child) => child.runsBefore.contains(parent.key);
|
||||
}
|
@ -119,7 +119,7 @@ class UpdatePackagesCommand extends FlutterCommand {
|
||||
);
|
||||
}
|
||||
// Only retain flutter, flutter_test, flutter_driver, and flutter_localizations.
|
||||
const List<String> consumerPackages = <String>['flutter', 'flutter_test', 'flutter_driver', 'flutter_localizations', 'flutter_build'];
|
||||
const List<String> consumerPackages = <String>['flutter', 'flutter_test', 'flutter_driver', 'flutter_localizations'];
|
||||
// ensure we only get flutter/packages
|
||||
packages.retainWhere((Directory directory) {
|
||||
return consumerPackages.any((String package) {
|
||||
|
@ -22,6 +22,7 @@ import 'base/time.dart';
|
||||
import 'base/user_messages.dart';
|
||||
import 'base/utils.dart';
|
||||
import 'build_runner/build_runner.dart';
|
||||
import 'build_runner/build_script_generator.dart';
|
||||
import 'cache.dart';
|
||||
import 'compile.dart';
|
||||
import 'devfs.dart';
|
||||
@ -60,6 +61,7 @@ Future<T> runInContext<T>(
|
||||
Artifacts: () => CachedArtifacts(),
|
||||
AssetBundleFactory: () => AssetBundleFactory.defaultInstance,
|
||||
BotDetector: () => const BotDetector(),
|
||||
BuildScriptGeneratorFactory: () => const BuildScriptGeneratorFactory(),
|
||||
BuildRunnerFactory: () => const BuildRunnerFactory(),
|
||||
Cache: () => Cache(),
|
||||
CocoaPods: () => CocoaPods(),
|
||||
|
@ -4,7 +4,9 @@
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:build_runner_core/build_runner_core.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:yaml/yaml.dart';
|
||||
|
||||
import 'android/gradle.dart' as gradle;
|
||||
import 'base/common.dart';
|
||||
@ -144,6 +146,23 @@ class FlutterProject {
|
||||
await ios.ensureReadyForPlatformSpecificTooling();
|
||||
await injectPlugins(this);
|
||||
}
|
||||
|
||||
/// Return the build_runner [PackageGraph] for this package.
|
||||
Future<PackageGraph> get packageGraph async {
|
||||
return PackageGraph.forPath(directory.path);
|
||||
}
|
||||
|
||||
/// Return the set of builders used by this package.
|
||||
Future<List<String>> get builders async {
|
||||
final YamlMap pubspec = loadYaml(await pubspecFile.readAsString());
|
||||
final YamlList builders = pubspec['builders'];
|
||||
if (builders == null) {
|
||||
return <String>[];
|
||||
}
|
||||
return builders.map<String>((Object node) {
|
||||
return node.toString();
|
||||
}).toList();
|
||||
}
|
||||
}
|
||||
|
||||
/// Represents the iOS sub-project of a Flutter project.
|
||||
|
@ -23,7 +23,7 @@ dependencies:
|
||||
json_schema: 1.0.10
|
||||
linter: 0.1.74
|
||||
meta: 1.1.6
|
||||
mustache: 1.1.0
|
||||
mustache: 1.1.1
|
||||
package_config: 1.0.5
|
||||
platform: 2.2.0
|
||||
plugin: 0.2.0+3
|
||||
@ -39,23 +39,40 @@ dependencies:
|
||||
flutter_goldens_client:
|
||||
path: ../flutter_goldens_client
|
||||
|
||||
# build_runner depenencies needed for codegen.
|
||||
build: 1.1.0
|
||||
build_modules: 1.0.6
|
||||
|
||||
# We depend on very specific internal implementation details of the
|
||||
# 'test' package, which change between versions, so when upgrading
|
||||
# this, make sure the tests are still running correctly.
|
||||
test_api: 0.2.2
|
||||
test_core: 0.2.1
|
||||
test_core: 0.2.1+1
|
||||
|
||||
# Code generation dependencies
|
||||
build_runner_core: 2.0.1
|
||||
dart_style: 1.2.0
|
||||
code_builder: 3.2.0
|
||||
|
||||
async: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
bazel_worker: 0.1.18 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
build_config: 0.3.1+4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
build_resolvers: 0.2.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
built_collection: 4.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
built_value: 6.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.14.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
dart2_constant: 1.0.2+dart2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
fixnum: 0.10.9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.6+9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
graphs: 0.2.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.13.3+3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
io: 0.3.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
json_annotation: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
kernel: 0.3.6+9 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
logging: 0.11.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
matcher: 0.12.3+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -64,12 +81,17 @@ dependencies:
|
||||
pedantic: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
petitparser: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pool: 1.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
protobuf: 0.13.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pub_semver: 1.4.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pubspec_parse: 0.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
scratch_space: 0.0.3+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
source_map_stack_trace: 1.1.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
source_maps: 0.10.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
source_span: 1.5.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stream_transform: 0.0.14+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
timing: 0.1.1+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
utf: 0.9.0+5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
watcher: 0.9.7+10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -89,10 +111,10 @@ dev_dependencies:
|
||||
shelf_packages_handler: 1.0.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
shelf_static: 0.2.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
shelf_web_socket: 0.2.2+4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test: 1.5.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test: 1.5.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 8bcf
|
||||
# PUBSPEC CHECKSUM: 7930
|
||||
|
@ -2,103 +2,35 @@
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/base/platform.dart';
|
||||
import 'package:flutter_tools/src/build_runner/build_runner.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:process/process.dart';
|
||||
|
||||
import '../src/common.dart';
|
||||
import '../src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('experimentalBuildEnabled', () {
|
||||
final MockProcessManager mockProcessManager = MockProcessManager();
|
||||
final MockPlatform mockPlatform = MockPlatform();
|
||||
final MockFileSystem mockFileSystem = MockFileSystem();
|
||||
|
||||
setUp(() {
|
||||
experimentalBuildEnabled = null;
|
||||
});
|
||||
testUsingContext('is enabled if environment variable is enabled and project '
|
||||
'contains a dependency on flutter_build and build_runner', () async {
|
||||
final MockDirectory projectDirectory = MockDirectory();
|
||||
final MockDirectory exampleDirectory = MockDirectory();
|
||||
final MockFile packagesFile = MockFile();
|
||||
final MockFile pubspecFile = MockFile();
|
||||
final MockFile examplePubspecFile = MockFile();
|
||||
const String packages = r'''
|
||||
flutter_build:file:///Users/tester/.pub-cache/hosted/pub.dartlang.org/flutter_build/lib/
|
||||
build_runner:file:///Users/tester/.pub-cache/hosted/pub.dartlang.org/build_runner/lib/
|
||||
example:lib/
|
||||
''';
|
||||
when(mockPlatform.environment).thenReturn(<String, String>{'FLUTTER_EXPERIMENTAL_BUILD': 'true'});
|
||||
when(mockFileSystem.currentDirectory).thenReturn(projectDirectory);
|
||||
when(mockFileSystem.isFileSync(any)).thenReturn(false);
|
||||
when(projectDirectory.childFile('pubspec.yaml')).thenReturn(pubspecFile);
|
||||
when(projectDirectory.childFile('.packages')).thenReturn(packagesFile);
|
||||
when(projectDirectory.childDirectory('example')).thenReturn(exampleDirectory);
|
||||
when(exampleDirectory.childFile('pubspec.yaml')).thenReturn(examplePubspecFile);
|
||||
when(packagesFile.path).thenReturn('/test/.packages');
|
||||
when(pubspecFile.path).thenReturn('/test/pubspec.yaml');
|
||||
when(examplePubspecFile.path).thenReturn('/test/example/pubspec.yaml');
|
||||
when(mockFileSystem.file('/test/.packages')).thenReturn(packagesFile);
|
||||
when(packagesFile.readAsBytesSync()).thenReturn(utf8.encode(packages));
|
||||
|
||||
expect(await experimentalBuildEnabled, true);
|
||||
testUsingContext('is enabled if environment variable is enabled', () async {
|
||||
when(mockPlatform.environment).thenReturn(<String, String>{'FLUTTER_EXPERIMENTAL_BUILD': 'true'});
|
||||
expect(experimentalBuildEnabled, true);
|
||||
}, overrides: <Type, Generator>{
|
||||
ProcessManager: () => mockProcessManager,
|
||||
Platform: () => mockPlatform,
|
||||
FileSystem: () => mockFileSystem,
|
||||
});
|
||||
|
||||
testUsingContext('is not enabled if environment variable is enabled and project '
|
||||
'does not contain a dependency on flutter_build', () async {
|
||||
final MockDirectory projectDirectory = MockDirectory();
|
||||
final MockDirectory exampleDirectory = MockDirectory();
|
||||
final MockFile packagesFile = MockFile();
|
||||
final MockFile pubspecFile = MockFile();
|
||||
final MockFile examplePubspecFile = MockFile();
|
||||
const String packages = r'''
|
||||
build_runner:file:///Users/tester/.pub-cache/hosted/pub.dartlang.org/build_runner/lib/
|
||||
example:lib/
|
||||
''';
|
||||
when(mockPlatform.environment).thenReturn(<String, String>{'FLUTTER_EXPERIMENTAL_BUILD': 'true'});
|
||||
when(mockFileSystem.currentDirectory).thenReturn(projectDirectory);
|
||||
when(mockFileSystem.isFileSync(any)).thenReturn(false);
|
||||
when(projectDirectory.childFile('pubspec.yaml')).thenReturn(pubspecFile);
|
||||
when(projectDirectory.childFile('.packages')).thenReturn(packagesFile);
|
||||
when(projectDirectory.childDirectory('example')).thenReturn(exampleDirectory);
|
||||
when(exampleDirectory.childFile('pubspec.yaml')).thenReturn(examplePubspecFile);
|
||||
when(packagesFile.path).thenReturn('/test/.packages');
|
||||
when(pubspecFile.path).thenReturn('/test/pubspec.yaml');
|
||||
when(examplePubspecFile.path).thenReturn('/test/example/pubspec.yaml');
|
||||
when(mockFileSystem.file('/test/.packages')).thenReturn(packagesFile);
|
||||
when(packagesFile.readAsBytesSync()).thenReturn(utf8.encode(packages));
|
||||
|
||||
expect(await experimentalBuildEnabled, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
ProcessManager: () => mockProcessManager,
|
||||
Platform: () => mockPlatform,
|
||||
FileSystem: () => mockFileSystem,
|
||||
});
|
||||
|
||||
|
||||
testUsingContext('is not enabed if environment varable is not enabled', () async {
|
||||
when(mockPlatform.environment).thenReturn(<String, String>{});
|
||||
expect(await experimentalBuildEnabled, false);
|
||||
expect(experimentalBuildEnabled, false);
|
||||
}, overrides: <Type, Generator>{
|
||||
ProcessManager: () => mockProcessManager,
|
||||
Platform: () => mockPlatform,
|
||||
FileSystem: () => mockFileSystem,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
class MockProcessManager extends Mock implements ProcessManager {}
|
||||
class MockPlatform extends Mock implements Platform {}
|
||||
class MockFileSystem extends Mock implements FileSystem {}
|
||||
class MockDirectory extends Mock implements Directory {}
|
||||
class MockFile extends Mock implements File {}
|
||||
class MockPlatform extends Mock implements Platform {}
|
@ -10,8 +10,11 @@ void main() {
|
||||
final String flutterTools = fs.path.join(getFlutterRoot(), 'packages', 'flutter_tools');
|
||||
|
||||
test('no unauthorized imports of dart:io', () {
|
||||
final String whitelistedPath = fs.path.join(flutterTools, 'lib', 'src', 'base', 'io.dart');
|
||||
bool _isNotWhitelisted(FileSystemEntity entity) => entity.path != whitelistedPath;
|
||||
final List<String> whitelistedPaths = <String>[
|
||||
fs.path.join(flutterTools, 'lib', 'src', 'base', 'io.dart'),
|
||||
fs.path.join(flutterTools, 'lib', 'src', 'build_runner', 'kernel_builder.dart'),
|
||||
];
|
||||
bool _isNotWhitelisted(FileSystemEntity entity) => whitelistedPaths.every((String path) => path != entity.path);
|
||||
|
||||
for (String dirName in <String>['lib', 'bin']) {
|
||||
final Iterable<File> files = fs.directory(fs.path.join(flutterTools, dirName))
|
||||
@ -32,14 +35,17 @@ void main() {
|
||||
});
|
||||
|
||||
test('no unauthorized imports of package:path', () {
|
||||
final String whitelistedPath = fs.path.join(flutterTools, 'lib', 'src', 'build_runner', 'kernel_builder.dart');
|
||||
for (String dirName in <String>['lib', 'bin', 'test']) {
|
||||
final Iterable<File> files = fs.directory(fs.path.join(flutterTools, dirName))
|
||||
.listSync(recursive: true)
|
||||
.where(_isDartFile)
|
||||
.where((FileSystemEntity entity) => entity.path != whitelistedPath)
|
||||
.map(_asFile);
|
||||
for (File file in files) {
|
||||
for (String line in file.readAsLinesSync()) {
|
||||
if (line.startsWith(RegExp(r'import.*package:path/path.dart'))) {
|
||||
if (line.startsWith(RegExp(r'import.*package:path/path.dart')) &&
|
||||
!line.contains('ignore: package_path_import')) {
|
||||
final String relativePath = fs.path.relative(file.path, from:flutterTools);
|
||||
fail("$relativePath imports 'package:path/path.dart'; use 'fs.path' instead");
|
||||
}
|
||||
@ -49,8 +55,11 @@ void main() {
|
||||
});
|
||||
|
||||
test('no unauthorized imports of dart:convert', () {
|
||||
final String whitelistedPath = fs.path.join(flutterTools, 'lib', 'src', 'convert.dart');
|
||||
bool _isNotWhitelisted(FileSystemEntity entity) => entity.path != whitelistedPath;
|
||||
final List<String> whitelistedPaths = <String>[
|
||||
fs.path.join(flutterTools, 'lib', 'src', 'convert.dart'),
|
||||
fs.path.join(flutterTools, 'lib', 'src', 'build_runner', 'kernel_builder.dart'),
|
||||
];
|
||||
bool _isNotWhitelisted(FileSystemEntity entity) => whitelistedPaths.every((String path) => path != entity.path);
|
||||
|
||||
for (String dirName in <String>['lib']) {
|
||||
final Iterable<File> files = fs.directory(fs.path.join(flutterTools, dirName))
|
||||
|
Loading…
Reference in New Issue
Block a user