Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
4037e506
Unverified
Commit
4037e506
authored
Apr 06, 2020
by
Jonah Williams
Committed by
GitHub
Apr 06, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[flutter_tools] update asset manifest to use package_config instead of package_map (#53944)
parent
602475e5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
77 additions
and
44 deletions
+77
-44
asset.dart
packages/flutter_tools/lib/src/asset.dart
+45
-35
license_collector_test.dart
...tter_tools/test/general.shard/license_collector_test.dart
+32
-9
No files found.
packages/flutter_tools/lib/src/asset.dart
View file @
4037e506
...
...
@@ -5,6 +5,7 @@
import
'dart:async'
;
import
'package:meta/meta.dart'
;
import
'package:package_config/package_config.dart'
;
import
'package:yaml/yaml.dart'
;
import
'base/context.dart'
;
...
...
@@ -147,8 +148,16 @@ class _ManifestAssetBundle implements AssetBundle {
}
final
String
assetBasePath
=
globals
.
fs
.
path
.
dirname
(
globals
.
fs
.
path
.
absolute
(
manifestPath
));
final
PackageMap
packageMap
=
PackageMap
(
packagesPath
,
fileSystem:
globals
.
fs
);
final
PackageConfig
packageConfig
=
await
loadPackageConfigUri
(
globals
.
fs
.
file
(
packagesPath
).
absolute
.
uri
,
loader:
(
Uri
uri
)
{
final
File
file
=
globals
.
fs
.
file
(
uri
);
if
(!
file
.
existsSync
())
{
return
null
;
}
return
file
.
readAsBytes
();
},
);
final
List
<
Uri
>
wildcardDirectories
=
<
Uri
>[];
// The _assetVariants map contains an entry for each asset listed
...
...
@@ -156,7 +165,7 @@ class _ManifestAssetBundle implements AssetBundle {
// value of each image asset is a list of resolution-specific "variants",
// see _AssetDirectoryCache.
final
Map
<
_Asset
,
List
<
_Asset
>>
assetVariants
=
_parseAssets
(
package
Map
,
package
Config
,
flutterManifest
,
wildcardDirectories
,
assetBasePath
,
...
...
@@ -170,14 +179,14 @@ class _ManifestAssetBundle implements AssetBundle {
final
List
<
Map
<
String
,
dynamic
>>
fonts
=
_parseFonts
(
flutterManifest
,
includeDefaultFonts
,
package
Map
,
package
Config
,
);
// Add fonts and assets from packages.
for
(
final
String
packageName
in
packageMap
.
map
.
key
s
)
{
final
Uri
package
=
packageMap
.
map
[
packageName
]
;
if
(
package
!=
null
&&
package
.
scheme
==
'file'
)
{
final
String
packageManifestPath
=
globals
.
fs
.
path
.
fromUri
(
package
.
resolve
(
'../pubspec.yaml'
));
for
(
final
Package
package
in
packageConfig
.
package
s
)
{
final
Uri
package
Uri
=
package
.
packageUriRoot
;
if
(
package
Uri
!=
null
&&
packageUri
.
scheme
==
'file'
)
{
final
String
packageManifestPath
=
globals
.
fs
.
path
.
fromUri
(
package
Uri
.
resolve
(
'../pubspec.yaml'
));
final
FlutterManifest
packageFlutterManifest
=
FlutterManifest
.
createFromPath
(
packageManifestPath
);
if
(
packageFlutterManifest
==
null
)
{
continue
;
...
...
@@ -189,11 +198,11 @@ class _ManifestAssetBundle implements AssetBundle {
final
String
packageBasePath
=
globals
.
fs
.
path
.
dirname
(
packageManifestPath
);
final
Map
<
_Asset
,
List
<
_Asset
>>
packageAssets
=
_parseAssets
(
package
Map
,
package
Config
,
packageFlutterManifest
,
wildcardDirectories
,
packageBasePath
,
packageName:
package
N
ame
,
packageName:
package
.
n
ame
,
);
if
(
packageAssets
==
null
)
{
...
...
@@ -204,8 +213,8 @@ class _ManifestAssetBundle implements AssetBundle {
fonts
.
addAll
(
_parseFonts
(
packageFlutterManifest
,
includeDefaultFonts
,
package
Map
,
packageName:
package
N
ame
,
package
Config
,
packageName:
package
.
n
ame
,
));
}
}
...
...
@@ -253,7 +262,7 @@ class _ManifestAssetBundle implements AssetBundle {
entries
[
kFontManifestJson
]
=
DevFSStringContent
(
json
.
encode
(
fonts
));
// TODO(ianh): Only do the following line if we've changed packages or if our LICENSE file changed
final
LicenseResult
licenseResult
=
licenseCollector
.
obtainLicenses
(
package
Map
);
final
LicenseResult
licenseResult
=
licenseCollector
.
obtainLicenses
(
package
Config
);
entries
[
_license
]
=
DevFSStringContent
(
licenseResult
.
combinedLicenses
);
additionalDependencies
=
licenseResult
.
dependencies
;
...
...
@@ -383,18 +392,18 @@ class LicenseCollector {
/// Obtain licenses from the `packageMap` into a single result.
LicenseResult
obtainLicenses
(
Package
Map
packageMap
,
Package
Config
packageConfig
,
)
{
final
Map
<
String
,
Set
<
String
>>
packageLicenses
=
<
String
,
Set
<
String
>>{};
final
Set
<
String
>
allPackages
=
<
String
>{};
final
List
<
File
>
dependencies
=
<
File
>[];
for
(
final
String
packageName
in
packageMap
.
map
.
key
s
)
{
final
Uri
package
=
packageMap
.
map
[
packageName
]
;
if
(
package
==
null
||
package
.
scheme
!=
'file'
)
{
for
(
final
Package
package
in
packageConfig
.
package
s
)
{
final
Uri
package
Uri
=
package
.
packageUriRoot
;
if
(
package
Uri
==
null
||
packageUri
.
scheme
!=
'file'
)
{
continue
;
}
final
File
file
=
_fileSystem
.
file
(
package
.
resolve
(
'../LICENSE'
));
final
File
file
=
_fileSystem
.
file
(
package
Uri
.
resolve
(
'../LICENSE'
));
if
(!
file
.
existsSync
())
{
continue
;
}
...
...
@@ -414,7 +423,7 @@ class LicenseCollector {
}
}
if
(
licenseText
==
null
)
{
packageNames
=
<
String
>[
package
N
ame
];
packageNames
=
<
String
>[
package
.
n
ame
];
licenseText
=
rawLicense
;
}
packageLicenses
.
putIfAbsent
(
licenseText
,
()
=>
<
String
>{})
...
...
@@ -476,7 +485,7 @@ DevFSContent _createAssetManifest(Map<_Asset, List<_Asset>> assetVariants) {
List
<
Map
<
String
,
dynamic
>>
_parseFonts
(
FlutterManifest
manifest
,
bool
includeDefaultFonts
,
Package
Map
packageMap
,
{
Package
Config
packageConfig
,
{
String
packageName
,
})
{
return
<
Map
<
String
,
dynamic
>>[
...
...
@@ -488,7 +497,7 @@ List<Map<String, dynamic>> _parseFonts(
...
_createFontsDescriptor
(
_parsePackageFonts
(
manifest
,
packageName
,
package
Map
,
package
Config
,
)),
];
}
...
...
@@ -498,7 +507,7 @@ List<Map<String, dynamic>> _parseFonts(
List
<
Font
>
_parsePackageFonts
(
FlutterManifest
manifest
,
String
packageName
,
Package
Map
packageMap
,
Package
Config
packageConfig
,
)
{
final
List
<
Font
>
packageFonts
=
<
Font
>[];
for
(
final
Font
font
in
manifest
.
fonts
)
{
...
...
@@ -506,7 +515,8 @@ List<Font> _parsePackageFonts(
for
(
final
FontAsset
fontAsset
in
font
.
fontAssets
)
{
final
Uri
assetUri
=
fontAsset
.
assetUri
;
if
(
assetUri
.
pathSegments
.
first
==
'packages'
&&
!
globals
.
fs
.
isFileSync
(
globals
.
fs
.
path
.
fromUri
(
packageMap
.
map
[
packageName
].
resolve
(
'../
${assetUri.path}
'
))))
{
!
globals
.
fs
.
isFileSync
(
globals
.
fs
.
path
.
fromUri
(
packageConfig
[
packageName
].
packageUriRoot
.
resolve
(
'../
${assetUri.path}
'
))))
{
packageFontAssets
.
add
(
FontAsset
(
fontAsset
.
assetUri
,
weight:
fontAsset
.
weight
,
...
...
@@ -605,7 +615,7 @@ class _AssetDirectoryCache {
///
Map
<
_Asset
,
List
<
_Asset
>>
_parseAssets
(
Package
Map
packageMap
,
Package
Config
packageConfig
,
FlutterManifest
flutterManifest
,
List
<
Uri
>
wildcardDirectories
,
String
assetBase
,
{
...
...
@@ -618,11 +628,11 @@ Map<_Asset, List<_Asset>> _parseAssets(
for
(
final
Uri
assetUri
in
flutterManifest
.
assets
)
{
if
(
assetUri
.
toString
().
endsWith
(
'/'
))
{
wildcardDirectories
.
add
(
assetUri
);
_parseAssetsFromFolder
(
package
Map
,
flutterManifest
,
assetBase
,
_parseAssetsFromFolder
(
package
Config
,
flutterManifest
,
assetBase
,
cache
,
result
,
assetUri
,
excludeDirs:
excludeDirs
,
packageName:
packageName
);
}
else
{
_parseAssetFromFile
(
package
Map
,
flutterManifest
,
assetBase
,
_parseAssetFromFile
(
package
Config
,
flutterManifest
,
assetBase
,
cache
,
result
,
assetUri
,
excludeDirs:
excludeDirs
,
packageName:
packageName
);
}
...
...
@@ -632,7 +642,7 @@ Map<_Asset, List<_Asset>> _parseAssets(
for
(
final
Font
font
in
flutterManifest
.
fonts
)
{
for
(
final
FontAsset
fontAsset
in
font
.
fontAssets
)
{
final
_Asset
baseAsset
=
_resolveAsset
(
package
Map
,
package
Config
,
assetBase
,
fontAsset
.
assetUri
,
packageName
,
...
...
@@ -650,7 +660,7 @@ Map<_Asset, List<_Asset>> _parseAssets(
}
void
_parseAssetsFromFolder
(
Package
Map
packageMap
,
Package
Config
packageConfig
,
FlutterManifest
flutterManifest
,
String
assetBase
,
_AssetDirectoryCache
cache
,
...
...
@@ -675,14 +685,14 @@ void _parseAssetsFromFolder(
final
Uri
uri
=
Uri
.
file
(
relativePath
,
windows:
globals
.
platform
.
isWindows
);
_parseAssetFromFile
(
package
Map
,
flutterManifest
,
assetBase
,
cache
,
result
,
_parseAssetFromFile
(
package
Config
,
flutterManifest
,
assetBase
,
cache
,
result
,
uri
,
packageName:
packageName
);
}
}
}
void
_parseAssetFromFile
(
Package
Map
packageMap
,
Package
Config
packageConfig
,
FlutterManifest
flutterManifest
,
String
assetBase
,
_AssetDirectoryCache
cache
,
...
...
@@ -692,7 +702,7 @@ void _parseAssetFromFile(
String
packageName
,
})
{
final
_Asset
asset
=
_resolveAsset
(
package
Map
,
package
Config
,
assetBase
,
assetUri
,
packageName
,
...
...
@@ -718,7 +728,7 @@ void _parseAssetFromFile(
}
_Asset
_resolveAsset
(
Package
Map
packageMap
,
Package
Config
packageConfig
,
String
assetsBaseDir
,
Uri
assetUri
,
String
packageName
,
...
...
@@ -727,7 +737,7 @@ _Asset _resolveAsset(
if
(
assetUri
.
pathSegments
.
first
==
'packages'
&&
!
globals
.
fs
.
isFileSync
(
globals
.
fs
.
path
.
join
(
assetsBaseDir
,
assetPath
)))
{
// The asset is referenced in the pubspec.yaml as
// 'packages/PACKAGE_NAME/PATH/TO/ASSET .
final
_Asset
packageAsset
=
_resolvePackageAsset
(
assetUri
,
package
Map
);
final
_Asset
packageAsset
=
_resolvePackageAsset
(
assetUri
,
package
Config
);
if
(
packageAsset
!=
null
)
{
return
packageAsset
;
}
...
...
@@ -742,11 +752,11 @@ _Asset _resolveAsset(
);
}
_Asset
_resolvePackageAsset
(
Uri
assetUri
,
Package
Map
packageMap
)
{
_Asset
_resolvePackageAsset
(
Uri
assetUri
,
Package
Config
packageConfig
)
{
assert
(
assetUri
.
pathSegments
.
first
==
'packages'
);
if
(
assetUri
.
pathSegments
.
length
>
1
)
{
final
String
packageName
=
assetUri
.
pathSegments
[
1
];
final
Uri
packageUri
=
package
Map
.
map
[
packageName
]
;
final
Uri
packageUri
=
package
Config
[
packageName
]?.
packageUriRoot
;
if
(
packageUri
!=
null
&&
packageUri
.
scheme
==
'file'
)
{
return
_Asset
(
baseDir:
globals
.
fs
.
path
.
fromUri
(
packageUri
),
...
...
packages/flutter_tools/test/general.shard/license_collector_test.dart
View file @
4037e506
...
...
@@ -5,7 +5,9 @@
import
'package:file/memory.dart'
;
import
'package:flutter_tools/src/asset.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/dart/package_map.dart'
;
import
'package:flutter_tools/src/convert.dart'
;
import
'package:package_config/package_config.dart'
;
import
'package:package_config/package_config_types.dart'
;
import
'../src/common.dart'
;
...
...
@@ -246,7 +248,7 @@ void main() {
licenseCollector = LicenseCollector(fileSystem: fileSystem);
});
testWithoutContext('
processes
depend
ant
licenses
according
to
instructions
', ()
{
testWithoutContext('
processes
depend
ent
licenses
according
to
instructions
', () async
{
fileSystem.file('
foo
/
LICENSE
')
..createSync(recursive: true)
..writeAsStringSync(_kMitLicense);
...
...
@@ -257,13 +259,34 @@ void main() {
..createSync(recursive: true)
..writeAsStringSync(_kMitLicense); // intentionally a duplicate
final PackageMap packageMap = PackageMap.test(<String, Uri>{
'
foo
': Uri.parse('
file:
///foo/lib/'),
'bar'
:
Uri
.
parse
(
'file:///bar/lib/'
),
'fizz'
:
Uri
.
parse
(
'file:///fizz/lib/'
),
},
fileSystem:
fileSystem
);
final
LicenseResult
result
=
licenseCollector
.
obtainLicenses
(
packageMap
);
final File packageConfigFile = fileSystem.file('
package_config
.
json
')
..writeAsStringSync(json.encode(
<String, Object>{
'
configVersion
': 2,
'
packages
': <Object>[
<String, Object>{
'
name
': '
foo
',
'
rootUri
': '
file:
///foo/',
'packageUri'
:
'lib/'
,
'languageVersion'
:
'2.2'
},
<
String
,
Object
>{
'name'
:
'bar'
,
'rootUri'
:
'file:///bar/'
,
'packageUri'
:
'lib/'
,
'languageVersion'
:
'2.2'
},
<
String
,
Object
>{
'name'
:
'fizz'
,
'rootUri'
:
'file:///fizz/'
,
'packageUri'
:
'lib/'
,
'languageVersion'
:
'2.2'
},
],
}
));
final
PackageConfig
packageConfig
=
await
loadPackageConfig
(
packageConfigFile
.
absolute
);
final
LicenseResult
result
=
licenseCollector
.
obtainLicenses
(
packageConfig
);
// All included licenses are combined in the result.
expect
(
result
.
combinedLicenses
,
contains
(
_kApacheLicense
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment