fix(projects): introduce workspace API and remove 'Project' model

This commit is contained in:
Akash Yadav
2024-07-01 15:58:06 +05:30
parent dba601b71e
commit 1165f12ccb
51 changed files with 674 additions and 538 deletions
@@ -92,12 +92,12 @@ fun processXmlFile(file: File, expectedType: AaptResourceType): Pair<XmlProcesso
throw InflateException("File is not a layout file.")
}
if (IProjectManager.getInstance().rootProject == null) {
if (IProjectManager.getInstance().getWorkspace() == null) {
throw InflateException("GradleProject is not initialized!")
}
val module =
IProjectManager.getInstance().findModuleForFile(file, false) as? AndroidModule
IProjectManager.getInstance().getWorkspace()?.findModuleForFile(file, false) as? AndroidModule
?: throw InflateException("Cannot find module for given file. Is the project initialized?")
val resFile =
ResourceFile(
@@ -33,7 +33,7 @@ fun startParse(file: File) {
if (isParsing) {
return
}
(IProjectManager.getInstance().findModuleForFile(file, false) as? AndroidModule)?.let {
(IProjectManager.getInstance().getWorkspace()?.findModuleForFile(file, false) as? AndroidModule)?.let {
startParse(it)
}
}
@@ -27,6 +27,7 @@ import com.itsaky.androidide.projects.android.AndroidModule
import com.itsaky.androidide.projects.builder.BuildService
import com.itsaky.androidide.projects.util.findAppModule
import com.itsaky.androidide.testing.tooling.ToolingApiTestLauncher
import com.itsaky.androidide.testing.tooling.models.ToolingApiTestLauncherParams
import kotlinx.coroutines.runBlocking
import org.junit.Ignore
import org.robolectric.Robolectric
@@ -43,11 +44,17 @@ object XmlInflaterTest {
return
}
ToolingApiTestLauncher.launchServer {
val params = ToolingApiTestLauncherParams()
ToolingApiTestLauncher.launchServer(params) {
assertThat(result?.isSuccessful).isTrue()
Lookup.getDefault().register(BuildService.KEY_PROJECT_PROXY, project)
runBlocking { IProjectManager.getInstance().setupProject(project) }
val projectManager = IProjectManager.getInstance()
projectManager.openProject(params.projectDir.toFile())
runBlocking { projectManager.setupProject(project) }
init.set(true)
}
}