127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis/*
2ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlis * Copyright 2018 The Android Open Source Project
327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis *
427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * Licensed under the Apache License, Version 2.0 (the "License");
527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * you may not use this file except in compliance with the License.
627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * You may obtain a copy of the License at
727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis *
84a360e3a3af230badc847867c117f605367170aaFilip Pavlis *      http://www.apache.org/licenses/LICENSE-2.0
927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis *
1027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * Unless required by applicable law or agreed to in writing, software
1127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * distributed under the License is distributed on an "AS IS" BASIS,
1227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * See the License for the specific language governing permissions and
144a360e3a3af230badc847867c117f605367170aaFilip Pavlis * limitations under the License.
1527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis */
1627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
17ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlispackage com.android.tools.build.jetifier.core
1827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
19ba381a314edcd57963ed1ac5910595e04faf29ccFilip Pavlisimport com.android.tools.build.jetifier.core.type.PackageName
2027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
2127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis/**
2227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * Package map to be used to rewrite packages. The rewrite rules allow duplicities where the
2327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * artifact name prefix defined in a rule determines if such rule should be used or skipped.
2427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * The priority is determined only by the order (top to bottom). Having a rule with no file prefix
2527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * as first means that it is always applied.
2627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis *
2727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis * We use this only for the support library rewriting to rewrite packages in manifest files.
2827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis */
2927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlisclass PackageMap(private val rules: List<PackageRule>) {
3027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
3127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    companion object {
3227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        val DEFAULT_RULES = listOf(
3327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
3427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/exifinterface",
3549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/exifinterface"
3649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
3749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
3849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/heifwriter",
3949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/heifwriter"
4027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
4127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
4227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/graphics/drawable",
4349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/vectordrawable"
4427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
4527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
4627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/graphics/drawable/animated",
4749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/vectordrawable"
4827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
4927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
5049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/media/tv",
5149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/tvprovider"
5227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
5327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
5449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/textclassifier",
5549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/textclassifier"
5627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
5727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
5849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/recyclerview/selection",
5949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/recyclerview/selection"),
6027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
6127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v4",
6249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/legacy/v4"
6349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
6449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
6549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/print",
6649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/print"
6749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
6849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
6949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/documentfile",
7049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/documentfile"
7149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
7249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
7349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/coordinatorlayout",
7449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/coordinatorlayout"
7549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
7649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
7749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/swiperefreshlayout",
7849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/swiperefreshlayout"
7949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
8049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
8149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/slidingpanelayout",
8249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/slidingpanelayout"
8349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
8449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
8549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/asynclayoutinflater",
8649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/asynclayoutinflater"
8749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
8849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
8949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/interpolator",
9049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/interpolator"
9127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
9227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
9327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/palette",
9449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/palette"
9527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
9627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
9727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/cardview",
9849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/cardview"
9949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
10049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
10149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/customview",
10249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/customview"
10349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
10449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
10549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/loader",
10649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/loader"
10749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
10849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
10949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/cursoradapter",
11049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/cursoradapter"
11127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
11227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
11327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/mediarouter",
11449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/mediarouter"
11527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
11627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
11727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/appcompat",
11849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/appcompat"
11927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
12027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
12127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/recyclerview",
12249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/recyclerview"
12349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
12449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
12549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/v7/viewpager",
12649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/viewpager"
12749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
12849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
12949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/percent",
13049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/percentlayout"
13127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
13227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
13327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/gridlayout",
13449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/gridlayout"
13527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
13627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
13727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v13",
13849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/legacy/v13"
13927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
14027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
14127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v7/preference",
14249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/preference"
14327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
14427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
14527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v14/preference",
14649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/legacy/preference"
14727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
14827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
14949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/v17/leanback",
15027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                to = "androidx/leanback"
15127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
15227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
15327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/v17/preference",
15427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                to = "androidx/leanback/preference"
15527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
15627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
15727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/compat",
15849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/core"
15927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
16027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
16127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/mediacompat",
16249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/media"
16327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
16427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
16527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/fragment",
16649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/fragment"
16727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
16827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
16927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/coreutils",
17049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/legacy/coreutils"
17127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
17227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
17327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/dynamicanimation",
17449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/dynamicanimation"
17527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
17627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
17727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/customtabs",
17849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/browser"
17927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
18027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
18127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/coreui",
18249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/legacy/coreui"
18327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
18427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
18527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/content",
18649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/contentpager"
18727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
18827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
18927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/transition",
19027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                to = "androidx/transition"
19127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
19227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
19349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/recommendation",
19449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/recommendation"
19527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
19627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
19749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/drawerlayout",
19849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/drawerlayout"
19927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
20027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
20127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/wear",
20227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                to = "androidx/wear"
20327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
20427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
20527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "android/support/design",
206be27f81ab9b2d07ec348ba3f14b86d1aaa6604f9Filip Pavlis                to = "com/google/android/material"
20727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
20827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
20949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/text/emoji/appcompat",
21049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/emoji/appcompat"
21149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
21249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
21349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/text/emoji/bundled",
21449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/emoji/bundled"
21527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
21627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
21749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/text/emoji",
21849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/emoji"
21927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            ),
22027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            PackageRule(
22127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                from = "androidx/text/emoji/bundled",
22227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis                to = "androidx/text/emoji/bundled"
22349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
22449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
22549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "android/support/localbroadcastmanager",
22649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/localbroadcastmanager"
22749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
22849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
22949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/text/emoji/bundled",
23049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/text/emoji/bundled"
23149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
23249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
23349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/webkit",
23449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/webkit"
23549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
23649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
23749f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/slice/view",
23849f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/slice/view"
23949f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
24049f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
24149f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/slice/core",
24249f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/slice/core"
24349f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            ),
24449f7010e84f8819274924817443b26fc3a117e22Filip Pavlis            PackageRule(
24549f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                from = "androidx/slice/builders",
24649f7010e84f8819274924817443b26fc3a117e22Filip Pavlis                to = "androidx/slice/builders"
247759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
248759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
249759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/paging/runtime",
250759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/paging/runtime"
251759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
252759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
253759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/core/testing",
254759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/arch/core/testing"
255759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
256759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
257759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/core",
258759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/arch/core"
259759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
260759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
261759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/persistence/db/framework",
262759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/sqlite/db/framework"
263759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
264759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
265759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/persistence/db",
266759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/sqlite/db"
267759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
268759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
269759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/persistence/room/rxjava2",
270759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/room/rxjava2"
271759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
272759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
273759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/persistence/room/guava",
274759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/room/guava"
275759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
276759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
277759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/persistence/room/testing",
278759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/room/testing"
279759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
280759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
281759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/persistence/room",
282759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/room"
283759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
284759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
285759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/lifecycle/extensions",
286759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/lifecycle/extensions"
287759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
288759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
289759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/lifecycle/livedata/core",
290759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/lifecycle/livedata/core"
291759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
292759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
293759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/lifecycle",
294759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/lifecycle"
295759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
296759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
297759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/lifecycle/viewmodel",
298759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/lifecycle/viewmodel"
299759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
300759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
301759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/lifecycle/livedata",
302759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/lifecycle/livedata"
303759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            ),
304759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis            PackageRule(
305759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                from = "android/arch/lifecycle/reactivestreams",
306759c21ec9502e7d505681922f0c5c75da62963d6Filip Pavlis                to = "androidx/lifecycle/reactivestreams"
30724d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis            ),
30824d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis            PackageRule(
30924d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis                from = "android/support/multidex/instrumentation",
31024d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis                to = "androidx/multidex/instrumentation"
31124d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis            ),
31224d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis            PackageRule(
31324d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis                from = "android/support/multidex",
31424d459643edb72f7783dd9c5b766ae4912876f6dFilip Pavlis                to = "androidx/multidex"
31527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            )
31627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        )
31727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
31827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        val EMPTY = PackageMap(emptyList())
31927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    }
32027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
32127abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    /**
32227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis     * Creates reversed version of this map (from becomes to and vice versa).
32327abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis     */
32427abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    fun reverse(): PackageMap {
32527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        return PackageMap(rules
3264e29091e542d87269447fdc8b3254ce86af06845Filip Pavlis            .map { PackageRule(from = it.to, to = it.from) }
32727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            .toList())
32827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    }
32927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
33027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    /**
3314e29091e542d87269447fdc8b3254ce86af06845Filip Pavlis     * Returns a new package name for the given [fromPackage].
33227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis     */
3334e29091e542d87269447fdc8b3254ce86af06845Filip Pavlis    fun getPackageFor(fromPackage: PackageName): PackageName? {
3344e29091e542d87269447fdc8b3254ce86af06845Filip Pavlis        val rule = rules.find { it.from == fromPackage.fullName }
33527abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        if (rule != null) {
33627abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis            return PackageName(rule.to)
33727abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        }
33827abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis        return null
33927abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis    }
34027abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis
3414e29091e542d87269447fdc8b3254ce86af06845Filip Pavlis    data class PackageRule(val from: String, val to: String)
34227abf7a13cdf3ad9beba1af844c7df2de9ed1c0cFilip Pavlis}