-
Notifications
You must be signed in to change notification settings - Fork 4.6k
/
FileSystemOperations.java
141 lines (127 loc) · 5.31 KB
/
FileSystemOperations.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
* Copyright 2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gradle.api.file;
import org.gradle.api.Action;
import org.gradle.api.Incubating;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.WorkResult;
import org.gradle.internal.service.scopes.Scopes;
import org.gradle.internal.service.scopes.ServiceScope;
/**
* Operations on the file system.
*
* <p>An instance of this type can be injected into a task, plugin or other object by annotating a public constructor or property getter method with {@code javax.inject.Inject}.
*
* @since 6.0
*/
@ServiceScope({Scopes.Build.class, Scopes.Project.class})
public interface FileSystemOperations {
/**
* Creates a {@link CopySpec} which can later be used to copy files or create an archive. The given action is used
* to configure the {@link CopySpec} before it is returned by this method.
*
* @param action Action to configure the CopySpec
* @return The CopySpec
* @since 8.5
*/
@Incubating
CopySpec copySpec(Action<? super CopySpec> action);
/**
* Creates a {@link CopySpec} which can later be used to copy files or create an archive.
*
* @return a newly created copy spec
* @since 8.5
*/
@Incubating
CopySpec copySpec();
/**
* Copies the specified files.
* The given action is used to configure a {@link CopySpec}, which is then used to copy the files.
*
* @param action Action to configure the CopySpec
* @return {@link WorkResult} that can be used to check if the copy did any work.
*/
WorkResult copy(Action<? super CopySpec> action);
/**
* Synchronizes the contents of a destination directory with some source directories and files.
* The given action is used to configure a {@link CopySpec}, which is then used to synchronize the files.
*
* @param action action Action to configure the CopySpec.
* @return {@link WorkResult} that can be used to check if the sync did any work.
*/
WorkResult sync(Action<? super CopySpec> action);
/**
* Deletes the specified files.
* The given action is used to configure a {@link DeleteSpec}, which is then used to delete the files.
*
* @param action Action to configure the DeleteSpec
* @return {@link WorkResult} that can be used to check if delete did any work.
*/
WorkResult delete(Action<? super DeleteSpec> action);
/**
* Creates and configures file access permissions. Differs from directory permissions due to
* the default value the permissions start out with before the configuration is applied.
* For details see {@link ConfigurableFilePermissions}.
*
* @param configureAction The configuration that gets applied to the newly created {@code FilePermissions}.
*
* @since 8.3
*/
@Incubating
ConfigurableFilePermissions filePermissions(Action<? super ConfigurableFilePermissions> configureAction);
/**
* Creates and configures directory access permissions. Differs from file permissions due to
* the default value the permissions start out with before the configuration is applied.
* For details see {@link ConfigurableFilePermissions}.
*
* @param configureAction The configuration that gets applied to the newly created {@code FilePermissions}.
*
* @since 8.3
*/
@Incubating
ConfigurableFilePermissions directoryPermissions(Action<? super ConfigurableFilePermissions> configureAction);
/**
* Creates file/directory access permissions and initializes them via a Unix style permission string.
* For details see {@link ConfigurableFilePermissions#unix(String)}.
* <p>
* Doesn't have separate variants for files and directories, like other configuration methods,
* because the Unix style permission input completely overwrites the default values, so
* the distinction doesn't matter.
*
* @since 8.3
*/
@Incubating
ConfigurableFilePermissions permissions(String unixNumericOrSymbolic);
/**
* Creates file/directory access permissions and initializes them via a Unix style numeric permissions.
* For details see {@link ConfigurableFilePermissions#unix(int)}.
* <p>
* Doesn't have separate variants for files and directories, like other configuration methods,
* because the Unix style permission input completely overwrites the default values, so
* the distinction doesn't matter.
*
* @since 8.3
*/
@Incubating
ConfigurableFilePermissions permissions(int unixNumeric);
/**
* {@link Provider} based version of {@link #permissions(String)}, to facilitate wiring into property chains.
*
* @since 8.3
*/
@Incubating
Provider<ConfigurableFilePermissions> permissions(Provider<String> permissions);
}