blob: bdfbc43c82ba40216db53a16b459e80d9caaccc1 [file] [log] [blame]
Dan Albert30c9d6e2017-03-28 14:54:55 -07001// Copyright 2017 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package android
16
17import (
18 "encoding/json"
Dan Albert30c9d6e2017-03-28 14:54:55 -070019)
20
21func init() {
22 RegisterSingletonType("api_levels", ApiLevelsSingleton)
23}
24
Colin Cross0875c522017-11-28 17:34:01 -080025func ApiLevelsSingleton() Singleton {
Dan Albert30c9d6e2017-03-28 14:54:55 -070026 return &apiLevelsSingleton{}
27}
28
29type apiLevelsSingleton struct{}
30
Colin Cross0875c522017-11-28 17:34:01 -080031func createApiLevelsJson(ctx SingletonContext, file WritablePath,
Dan Albert30c9d6e2017-03-28 14:54:55 -070032 apiLevelsMap map[string]int) {
33
34 jsonStr, err := json.Marshal(apiLevelsMap)
35 if err != nil {
36 ctx.Errorf(err.Error())
37 }
38
Colin Cross0875c522017-11-28 17:34:01 -080039 ctx.Build(pctx, BuildParams{
Colin Cross67a5c132017-05-09 13:45:28 -070040 Rule: WriteFile,
Colin Cross0875c522017-11-28 17:34:01 -080041 Description: "generate " + file.Base(),
42 Output: file,
Dan Albert30c9d6e2017-03-28 14:54:55 -070043 Args: map[string]string{
44 "content": string(jsonStr[:]),
45 },
46 })
47}
48
Colin Cross0875c522017-11-28 17:34:01 -080049func GetApiLevelsJson(ctx PathContext) WritablePath {
Dan Albert30c9d6e2017-03-28 14:54:55 -070050 return PathForOutput(ctx, "api_levels.json")
51}
52
Colin Cross0875c522017-11-28 17:34:01 -080053func (a *apiLevelsSingleton) GenerateBuildActions(ctx SingletonContext) {
Dan Albert30c9d6e2017-03-28 14:54:55 -070054 baseApiLevel := 9000
Dan Albert15102712017-07-28 12:31:28 -070055 apiLevelsMap := map[string]int{
56 "G": 9,
57 "I": 14,
58 "J": 16,
59 "J-MR1": 17,
60 "J-MR2": 18,
61 "K": 19,
62 "L": 21,
63 "L-MR1": 22,
64 "M": 23,
65 "N": 24,
66 "N-MR1": 25,
Dan Alberte3e4fc82017-08-29 11:50:34 -070067 "O": 26,
Dan Albert15102712017-07-28 12:31:28 -070068 }
Dan Albert31384de2017-07-28 12:39:46 -070069 for i, codename := range ctx.Config().(Config).PlatformVersionCombinedCodenames() {
Dan Albert30c9d6e2017-03-28 14:54:55 -070070 apiLevelsMap[codename] = baseApiLevel + i
71 }
72
73 apiLevelsJson := GetApiLevelsJson(ctx)
Colin Cross0875c522017-11-28 17:34:01 -080074 createApiLevelsJson(ctx, apiLevelsJson, apiLevelsMap)
Dan Albert30c9d6e2017-03-28 14:54:55 -070075}