Skip to content

Commit 4ae71ca

Browse files
committed
Manually entered repository source
1 parent f6c4832 commit 4ae71ca

4 files changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package org.jenkinsci.plugins.github.status.sources;
2+
3+
import com.cloudbees.jenkins.GitHubRepositoryName;
4+
import hudson.Extension;
5+
import hudson.model.Descriptor;
6+
import hudson.model.Run;
7+
import hudson.model.TaskListener;
8+
import org.jenkinsci.plugins.github.extension.status.GitHubReposSource;
9+
import org.jenkinsci.plugins.github.util.misc.NullSafeFunction;
10+
import org.kohsuke.github.GHRepository;
11+
import org.kohsuke.stapler.DataBoundConstructor;
12+
13+
import javax.annotation.Nonnull;
14+
import java.util.Collections;
15+
import java.util.List;
16+
17+
import static org.jenkinsci.plugins.github.util.FluentIterableWrapper.from;
18+
19+
public class ManuallyEnteredRepositorySource extends GitHubReposSource {
20+
private String url;
21+
22+
@DataBoundConstructor
23+
public ManuallyEnteredRepositorySource(String url) {
24+
this.url = url;
25+
}
26+
27+
public String getUrl() {
28+
return url;
29+
}
30+
31+
@Override
32+
public List<GHRepository> repos(@Nonnull Run<?, ?> run, @Nonnull final TaskListener listener) {
33+
List<String> urls = Collections.singletonList(url);
34+
return from(urls).transformAndConcat(new NullSafeFunction<String, Iterable<GHRepository>>() {
35+
@Override
36+
protected Iterable<GHRepository> applyNullSafe(@Nonnull String url) {
37+
GitHubRepositoryName name = GitHubRepositoryName.create(url);
38+
if (name != null) {
39+
return name.resolve();
40+
} else {
41+
listener.getLogger().println("Unable to match " + url + " with a GitHub repository.");
42+
return Collections.emptyList();
43+
}
44+
}
45+
}).toList();
46+
}
47+
48+
@Extension
49+
public static class ManuallyEnteredRepositorySourceDescriptor extends Descriptor<GitHubReposSource> {
50+
@Override
51+
public String getDisplayName() {
52+
return "Manually entered repository";
53+
}
54+
}
55+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package org.jenkinsci.plugins.github.status.sources.AnyDefinedRepositorySource
2+
3+
4+
def f = namespace(lib.FormTagLib);
5+
6+
f.entry(title: _('Repository URL'), field: 'url') {
7+
f.textbox()
8+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div>
2+
A GitHub repository URL.
3+
</div>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div>
2+
A manually entered repository URL.
3+
</div>

0 commit comments

Comments
 (0)