Skip to content

Commit 4d45cbe

Browse files
committed
Merged in experiment (pull request #2)
Experiment
2 parents 132b7cb + fed9f8f commit 4d45cbe

File tree

5 files changed

+148
-10
lines changed

5 files changed

+148
-10
lines changed

.gitignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,26 @@
1414
.cxx
1515
local.properties
1616
.idea
17+
# Unit test reports
18+
TEST*.xml
19+
20+
# Generated by MacOS
21+
.DS_Store
22+
23+
# Generated by Windows
24+
Thumbs.db
25+
26+
# Applications
27+
*.app
28+
*.exe
29+
*.war
30+
31+
# Large media files
32+
*.mp4
33+
*.tiff
34+
*.avi
35+
*.flv
36+
*.mov
37+
*.wmv
38+
39+

YTemplate.sh

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
#!/bin/bash
2+
#
3+
# Copyright (C) 2022 The Android Open Source Project
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
18+
# Verify bash version. macOS comes with bash 3 preinstalled.
19+
if [[ ${BASH_VERSINFO[0]} -lt 4 ]]
20+
then
21+
echo "You need at least bash 4 to run this script."
22+
exit 1
23+
fi
24+
25+
# exit when any command fails
26+
set -e
27+
28+
if [[ $# -lt 2 ]]; then
29+
echo "Usage: bash customizer.sh my.new.package MyNewDataModel [ApplicationName]" >&2
30+
exit 2
31+
fi
32+
33+
PACKAGE=$1
34+
DATAMODEL=$2
35+
APPNAME=$3
36+
SUBDIR=${PACKAGE//.//} # Replaces . with /
37+
38+
for n in $(find . -type d \( -path '*/app/src/androidTest' -or -path '*/app/src/main' -or -path '*/app/src/test' \) )
39+
do
40+
echo "Creating $n/java/$SUBDIR"
41+
mkdir -p $n/java/$SUBDIR
42+
echo "Moving files to $n/java/$SUBDIR"
43+
mv $n/java/ytemplate/android/* $n/java/$SUBDIR
44+
echo "Removing old $n/java/ytemplate/android/"
45+
rm -rf mv $n/java/ytemplate
46+
done
47+
48+
# Jacoco Dependancies
49+
echo "Creating buildSrc/src/main/java/$SUBDIR/build"
50+
mkdir -p buildSrc/src/main/java/$SUBDIR/build
51+
echo "Moving files to buildSrc/src/main/java/$SUBDIR/build"
52+
mv buildSrc/src/main/java/ytemplate/android/build/* buildSrc/src/main/java/$SUBDIR/build
53+
echo "Removing old buildSrc/src/main/java/ytemplate/android"
54+
rm -rf mv buildSrc/src/main/java/ytemplate
55+
56+
# Rename package and imports
57+
echo "Renaming packages to $PACKAGE"
58+
find ./ -type f -name "*.kt" -exec sed -i.bak "s/package ytemplate.android/package $PACKAGE/g" {} \;
59+
find ./ -type f -name "*.kt" -exec sed -i.bak "s/import ytemplate.android/import $PACKAGE/g" {} \;
60+
61+
# Gradle files
62+
find ./ -type f -name "*.kts" -exec sed -i.bak "s/ytemplate.android/$PACKAGE/g" {} \;
63+
64+
# Manifest files
65+
find ./ -type f -name "*.xml" -exec sed -i.bak "s/ytemplate.android/$PACKAGE/g" {} \;
66+
67+
# Rename model
68+
echo "Renaming model to $DATAMODEL"
69+
find ./ -type f -name "*.kt" -exec sed -i.bak "s/MyModel/${DATAMODEL^}/g" {} \; # First upper case
70+
find ./ -type f -name "*.kt" -exec sed -i.bak "s/myModel/${DATAMODEL,}/g" {} \; # First lower case
71+
find ./ -type f -name "*.kt*" -exec sed -i.bak "s/mymodel/${DATAMODEL,,}/g" {} \; # All lowercase
72+
73+
echo "Cleaning up"
74+
find . -name "*.bak" -type f -delete
75+
76+
# Rename files
77+
echo "Renaming files to $DATAMODEL"
78+
find ./ -name "*MyModel*.kt" | sed "p;s/MyModel/${DATAMODEL^}/" | tr '\n' '\0' | xargs -0 -n 2 mv
79+
# module names
80+
if [[ -n $(find ./ -name "*-mymodel") ]]
81+
then
82+
echo "Renaming modules to $DATAMODEL"
83+
find ./ -name "*-mymodel" -type d | sed "p;s/mymodel/${DATAMODEL,,}/" | tr '\n' '\0' | xargs -0 -n 2 mv
84+
fi
85+
# directories
86+
echo "Renaming directories to $DATAMODEL"
87+
find ./ -name "mymodel" -type d | sed "p;s/mymodel/${DATAMODEL,,}/" | tr '\n' '\0' | xargs -0 -n 2 mv
88+
89+
# Renaming YTemplateTheme
90+
echo "Renaming YTemplateTheme to $APPNAME"
91+
find ./ -type f -name "*.kt" -exec sed -i.bak "s/YTemplateTheme/${APPNAME}Theme/g" {} \;
92+
93+
# Rename app
94+
if [[ $APPNAME ]]
95+
then
96+
echo "Renaming app to $APPNAME"
97+
find ./ -type f \( -name "YTemplate.kt" -or -name "settings.gradle.kts" -or -name "*.xml" \) -exec sed -i.bak "s/YTemplate/$APPNAME/g" {} \;
98+
find ./ -name "YTemplate.kt" | sed "p;s/YTemplate/$APPNAME/" | tr '\n' '\0' | xargs -0 -n 2 mv
99+
find . -name "*.bak" -type f -delete
100+
fi
101+
102+
# Remove additional files
103+
echo "Removing additional files"
104+
rm -rf .google/
105+
# rm -rf .github/
106+
# rm -rf CONTRIBUTING.md LICENSE README.md customizer.sh
107+
# rm -rf .git/
108+
echo "Done!"

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
android:label="@string/app_name"
1111
android:roundIcon="@mipmap/ic_launcher_round"
1212
android:supportsRtl="true"
13-
android:name="ytemplate.android.YTemplateApp"
13+
android:name="ytemplate.android.YTemplate"
1414
android:theme="@style/Theme.YTemplate"
1515
tools:targetApi="31">
1616
<activity

app/src/main/java/ytemplate/android/YTemplateApp.kt renamed to app/src/main/java/ytemplate/android/YTemplate.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ import android.app.Application
44
import dagger.hilt.android.HiltAndroidApp
55

66
@HiltAndroidApp
7-
class YTemplateApp : Application(){
7+
class YTemplate : Application(){
88

99
}

buildSrc/src/main/java/ytemplate/android/build/JacocoTestReportPlugin.kt

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,20 +117,22 @@ class JacocoTestReportPlugin : Plugin<Project> {
117117
sourcePath = "${flavorName}/${buildTypeName}"
118118
}
119119
val testTaskName = "test${sourceName.capitalized()}UnitTest"
120-
addTestCoverageTask(testTaskName, sourceName, sourcePath, flavorName, buildTypeName)
120+
val androidTestTaskName = "create${sourceName.capitalized()}CoverageReport"
121+
addTestCoverageTask(testTaskName, androidTestTaskName, sourceName, sourcePath, flavorName, buildTypeName)
121122
}
122123
}
123124
}
124125

125126
private fun Project.addTestCoverageTask(
126127
taskName: String,
128+
androidTestTaskName: String,
127129
sourceName: String,
128130
sourcePath: String,
129131
flavorName: String,
130132
buildTypeName: String
131133
) {
132-
tasks.register<JacocoReport>("${taskName}Coverage", ) {
133-
dependsOn(taskName)
134+
tasks.register<JacocoReport>("create${sourceName.capitalized()}JacocoReport" ) {
135+
dependsOn(taskName,androidTestTaskName)
134136
group = "Reporting"
135137
description = "Generate test coverage reports on the ${sourceName.capitalized()} build"
136138
val javaDirectories =
@@ -141,9 +143,9 @@ class JacocoTestReportPlugin : Plugin<Project> {
141143
exclude(excludedFiles)
142144
}
143145
val coverageDirectories = listOf(
144-
"src/main/java",
145-
"src/$flavorName/java",
146-
"src/$buildTypeName/java")
146+
"src/main/java",
147+
"src/$flavorName/java",
148+
"src/$buildTypeName/java")
147149

148150
classDirectories.setFrom(files(javaDirectories, kotlinDirectories))
149151
additionalClassDirs.setFrom(files(coverageDirectories))
@@ -153,14 +155,19 @@ class JacocoTestReportPlugin : Plugin<Project> {
153155
xml.required.set(true)
154156
html.required.set(true)
155157
}
158+
val androidTestsData =
159+
fileTree("${project.buildDir}/outputs/code_coverage/debugAndroidTest/connected/") {
160+
include(listOf("**/*.ec"))
161+
}
156162
val executionDataFiles = fileTree(project.buildDir) {
157163
setIncludes(listOf("**/${taskName}.exec"))
158164
}
159165
executionData.setFrom(
160-
executionDataFiles.files
166+
executionDataFiles.files,
167+
androidTestsData.files
161168
)
162169
doLast {
163-
jacocoTestReport("${taskName}Coverage")
170+
jacocoTestReport("create${sourceName.capitalized()}JacocoReport")
164171
}
165172
}
166173
}

0 commit comments

Comments
 (0)