1 /*
2  * Copyright 2021 Google LLC
3  * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
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 @file:Suppress("DataClassPrivateConstructor")
18 
19 package com.google.devtools.ksp.gradle.testing
20 
21 /**
22  * Value class to declare dependencies between test projects.
23  * See builder methods in the companion to create an instance of this.
24  */
25 data class DependencyDeclaration private constructor(
26     val configuration: String,
27     val dependency: String
28 ) {
toCodenull29     fun toCode() = "$configuration($dependency)"
30 
31     companion object {
32         /**
33          * Creates a module dependency for the given configuration.
34          */
35         fun module(configuration: String, module: TestModule) =
36             DependencyDeclaration(configuration, "project(\":${module.name}\")")
37 
38         /**
39          * Create an artifact dependency for the given configuration.
40          */
41         fun artifact(configuration: String, coordinates: String) =
42             DependencyDeclaration(configuration, "\"$coordinates\"")
43 
44         /**
45          * Creates a files dependency for the given configuration.
46          */
47         fun files(configuration: String, path: String) =
48             DependencyDeclaration(configuration, "files(\"$path\")")
49     }
50 }
51