diff --git a/README.md b/README.md index 2a6e601..c9ca236 100644 --- a/README.md +++ b/README.md @@ -15,29 +15,26 @@ A modern Java library for navigating GitHub repository commits programmatically ```xml - edu.stanford.protege.commitnavigator + edu.stanford.protege github-commit-navigator - 2.0.0 + 2.0.2 ``` ### Basic Usage ```java -import edu.stanford.protege.commitnavigator.GitHubRepository; import edu.stanford.protege.commitnavigator.GitHubRepositoryBuilderFactory; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import edu.stanford.protege.commitnavigator.CommitNavigatorBuilder; -import edu.stanford.protege.commitnavigator.utils.CommitNavigator; -import edu.stanford.protege.commitnavigator.model.CommitMetadata; // Create repository coordinate from URL -var coordinate = RepositoryCoordinates.createFromUrl("https://github.com/example/repo"); +var coordinate = BranchCoordinates.createFromUrl("https://github.com/example/repo"); // Create repository using factory pattern var repository = GitHubRepositoryBuilderFactory.create(coordinate) - .withPersonalAccessToken("your-token-here") - .build(); + .withPersonalAccessToken("your-token-here") + .build(); // Initialize the repository repository.initialize(); @@ -73,7 +70,7 @@ repository.close(); ```java // Create repository coordinate for the repository and branch -var coordinate = RepositoryCoordinates.createFromUrl("https://github.com/example/repo", "develop"); +var coordinate = BranchCoordinates.createFromUrl("https://github.com/example/repo", "develop"); // Configure repository with advanced options var repository = GitHubRepositoryBuilderFactory.create(coordinate) @@ -108,7 +105,7 @@ For public repositories, authentication is optional: ```java // Create coordinate for public repository -var coordinates = RepositoryCoordinates.createFromUrl("https://github.com/public/repo"); +var coordinates = BranchCoordinates.createFromUrl("https://github.com/public/repo"); // Create repository without authentication var repository = GitHubRepositoryBuilderFactory.create(coordinates) @@ -121,17 +118,17 @@ Filter commits to only include those that modified specific files using CommitNa ```java // Configure file filters using List -var commitNavigator = CommitNavigatorBuilder.forWorkingDirectory("/path/to/local/directory") +var commitNavigator = CommitNavigatorBuilder.forWorkingDirectory(workingDirectory) .fileFilters(List.of("src/main/java/Main.java", "README.md")) // Exact file paths .build(); // Or using convenient varargs syntax -var commitNavigator = CommitNavigatorBuilder.forWorkingDirectory("/path/to/local/directory") +var commitNavigator = CommitNavigatorBuilder.forWorkingDirectory(workingDirectory) .fileFilters("*.java", "**/*.md", "src/**/*.xml") // Glob patterns .build(); // Or mixed patterns with varargs -var commitNavigator = CommitNavigatorBuilder.forWorkingDirectory("/path/to/local/directory") +var commitNavigator = CommitNavigatorBuilder.forWorkingDirectory(workingDirectory) .fileFilters("pom.xml", "*.java", "docs/**/*.md") // Mixed patterns .build(); ``` @@ -155,10 +152,10 @@ The library includes a CLI for quick repository analysis: ```bash # Basic usage -java -jar github-commit-navigator-2.0.0.jar https://github.com/user/repo +java -jar github-commit-navigator-2.0.2.jar https://github.com/user/repo # With authentication and filters -java -jar github-commit-navigator-2.0.0.jar \ +java -jar github-commit-navigator-2.0.2.jar \ --token your-token \ --file-filter "*.java,*.md" \ --branch develop \ diff --git a/pom.xml b/pom.xml index 15be834..dad8e35 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ edu.stanford.protege github-commit-navigator - 2.0.3 + 2.1.0 jar GitHub Commit Navigator Library diff --git a/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilder.java b/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilder.java index 33def28..64054df 100644 --- a/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilder.java +++ b/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilder.java @@ -3,7 +3,7 @@ import edu.stanford.protege.commitnavigator.config.AuthenticationConfig; import edu.stanford.protege.commitnavigator.config.RepositoryConfig; import edu.stanford.protege.commitnavigator.impl.GitHubRepositoryImpl; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import edu.stanford.protege.commitnavigator.utils.AuthenticationManager; import java.nio.file.Path; import java.nio.file.Paths; @@ -37,8 +37,8 @@ public class GitHubRepositoryBuilder { private final AuthenticationManager authManager; public GitHubRepositoryBuilder( - RepositoryCoordinates repositoryCoordinates, AuthenticationManager authManager) { - this.configBuilder = RepositoryConfig.builder(repositoryCoordinates); + BranchCoordinates branchCoordinates, AuthenticationManager authManager) { + this.configBuilder = RepositoryConfig.builder(branchCoordinates); this.authManager = Objects.requireNonNull(authManager, "Authentication manager cannot be null"); } diff --git a/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderFactory.java b/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderFactory.java index 8fd68f3..d96ea2a 100644 --- a/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderFactory.java +++ b/src/main/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderFactory.java @@ -1,6 +1,6 @@ package edu.stanford.protege.commitnavigator; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import edu.stanford.protege.commitnavigator.utils.AuthenticationManager; import edu.stanford.protege.commitnavigator.utils.impl.AuthenticationManagerImpl; import java.util.Objects; @@ -33,15 +33,15 @@ public class GitHubRepositoryBuilderFactory { *

The returned builder includes default implementations of {@link AuthenticationManager} and * the supplied repository coordinates. * - * @param repositoryCoordinates the repository coordinate containing owner, repo, and branch + * @param branchCoordinates the repository coordinate containing owner, repo, and branch * @return a pre-configured {@link GitHubRepositoryBuilder} for public repository access * @throws NullPointerException if repositoryCoordinates is null */ - public static GitHubRepositoryBuilder create(RepositoryCoordinates repositoryCoordinates) { - Objects.requireNonNull(repositoryCoordinates, "Repository coordinate cannot be null"); + public static GitHubRepositoryBuilder create(BranchCoordinates branchCoordinates) { + Objects.requireNonNull(branchCoordinates, "Repository coordinate cannot be null"); var authManager = new AuthenticationManagerImpl(); - return new GitHubRepositoryBuilder(repositoryCoordinates, authManager); + return new GitHubRepositoryBuilder(branchCoordinates, authManager); } } diff --git a/src/main/java/edu/stanford/protege/commitnavigator/cli/GitHubNavigatorCli.java b/src/main/java/edu/stanford/protege/commitnavigator/cli/GitHubNavigatorCli.java index 7e5a4c6..21cf7e3 100644 --- a/src/main/java/edu/stanford/protege/commitnavigator/cli/GitHubNavigatorCli.java +++ b/src/main/java/edu/stanford/protege/commitnavigator/cli/GitHubNavigatorCli.java @@ -2,7 +2,7 @@ import edu.stanford.protege.commitnavigator.CommitNavigatorBuilder; import edu.stanford.protege.commitnavigator.GitHubRepositoryBuilderFactory; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import java.util.concurrent.Callable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -90,7 +90,7 @@ public static void main(String[] args) { public Integer call() throws Exception { try { // Extract repository coordinate from URL - var coordinate = RepositoryCoordinates.createFromUrl(repositoryUrl, branch); + var coordinate = BranchCoordinates.createFromUrl(repositoryUrl, branch); // Create repositoryBuilder using factory pattern var repositoryBuilder = GitHubRepositoryBuilderFactory.create(coordinate); diff --git a/src/main/java/edu/stanford/protege/commitnavigator/config/RepositoryConfig.java b/src/main/java/edu/stanford/protege/commitnavigator/config/RepositoryConfig.java index a29cc5d..2338605 100644 --- a/src/main/java/edu/stanford/protege/commitnavigator/config/RepositoryConfig.java +++ b/src/main/java/edu/stanford/protege/commitnavigator/config/RepositoryConfig.java @@ -1,6 +1,6 @@ package edu.stanford.protege.commitnavigator.config; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import java.nio.file.Path; import java.util.Objects; import java.util.Optional; @@ -108,15 +108,15 @@ public Optional getAuthConfig() { /** * Creates a new builder instance for the specified repository URL. * - * @param repositoryCoordinates the repository coordinate containing owner, repo, and branch + * @param branchCoordinates the repository coordinate containing owner, repo, and branch * @return a new {@link Builder} instance * @throws NullPointerException if repositoryUrl is null */ - public static Builder builder(RepositoryCoordinates repositoryCoordinates) { + public static Builder builder(BranchCoordinates branchCoordinates) { return new Builder( - repositoryCoordinates.repositoryUrl(), - repositoryCoordinates.repositoryName(), - repositoryCoordinates.branchName()); + branchCoordinates.repositoryUrl(), + branchCoordinates.repositoryName(), + branchCoordinates.branchName()); } /** Builder class for constructing {@link RepositoryConfig} instances. */ diff --git a/src/main/java/edu/stanford/protege/commitnavigator/impl/GitHubRepositoryImpl.java b/src/main/java/edu/stanford/protege/commitnavigator/impl/GitHubRepositoryImpl.java index a0ee35f..8865e9a 100644 --- a/src/main/java/edu/stanford/protege/commitnavigator/impl/GitHubRepositoryImpl.java +++ b/src/main/java/edu/stanford/protege/commitnavigator/impl/GitHubRepositoryImpl.java @@ -42,7 +42,7 @@ * var coordinates = RepositoryCoordinates.create("owner", "repository"); * var repository = GitHubRepositoryBuilderFactory.create(coordinates) * .withPersonalAccessToken("ghp_xxxxxxxxxxxx") - * .localCloneDirectory(Paths.get("/tmp/my-repo")) + * .localWorkingDirectory("/tmp/my-repo") * .build(); * * repository.initialize(); diff --git a/src/main/java/edu/stanford/protege/commitnavigator/model/RepositoryCoordinates.java b/src/main/java/edu/stanford/protege/commitnavigator/model/BranchCoordinates.java similarity index 68% rename from src/main/java/edu/stanford/protege/commitnavigator/model/RepositoryCoordinates.java rename to src/main/java/edu/stanford/protege/commitnavigator/model/BranchCoordinates.java index 0f75834..5e25242 100644 --- a/src/main/java/edu/stanford/protege/commitnavigator/model/RepositoryCoordinates.java +++ b/src/main/java/edu/stanford/protege/commitnavigator/model/BranchCoordinates.java @@ -1,19 +1,19 @@ package edu.stanford.protege.commitnavigator.model; -public record RepositoryCoordinates(String ownerName, String repositoryName, String branchName) { +public record BranchCoordinates(String ownerName, String repositoryName, String branchName) { public static final String DEFAULT_BRANCH = "main"; - public static RepositoryCoordinates create( + public static BranchCoordinates create( String ownerName, String repositoryName, String branchName) { - return new RepositoryCoordinates(ownerName, repositoryName, branchName); + return new BranchCoordinates(ownerName, repositoryName, branchName); } - public static RepositoryCoordinates create(String ownerName, String repositoryName) { + public static BranchCoordinates create(String ownerName, String repositoryName) { return create(ownerName, repositoryName, DEFAULT_BRANCH); } - public static RepositoryCoordinates createFromUrl(String repositoryUrl, String branchName) { + public static BranchCoordinates createFromUrl(String repositoryUrl, String branchName) { // Remove protocol if present var url = repositoryUrl.replaceFirst("^https?://github\\.com/", ""); // Remove .git suffix if present @@ -32,7 +32,7 @@ public static RepositoryCoordinates createFromUrl(String repositoryUrl, String b return create(ownerName, repositoryName, branchName); } - public static RepositoryCoordinates createFromUrl(String repositoryUrl) { + public static BranchCoordinates createFromUrl(String repositoryUrl) { return createFromUrl(repositoryUrl, DEFAULT_BRANCH); } diff --git a/src/test/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderTest.java b/src/test/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderTest.java index 777d128..96e65d8 100644 --- a/src/test/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderTest.java +++ b/src/test/java/edu/stanford/protege/commitnavigator/GitHubRepositoryBuilderTest.java @@ -3,14 +3,14 @@ import static org.junit.jupiter.api.Assertions.*; import edu.stanford.protege.commitnavigator.config.AuthenticationConfig; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import java.nio.file.Paths; import org.junit.jupiter.api.Test; class GitHubRepositoryBuilderTest { - private static final RepositoryCoordinates TEST_COORDINATE = - RepositoryCoordinates.create("example", "repo"); + private static final BranchCoordinates TEST_COORDINATE = + BranchCoordinates.create("example", "repo"); @Test void testBuilderWithPersonalAccessToken() { @@ -72,7 +72,7 @@ void testBuilderWithAllOptions() { var token = "test-token"; var localPath = "/tmp/test-repo"; var branch = "develop"; - var coordinate = RepositoryCoordinates.create("example", "repo", branch); + var coordinate = BranchCoordinates.create("example", "repo", branch); var navigator = GitHubRepositoryBuilderFactory.create(coordinate) @@ -92,7 +92,7 @@ void testBuilderWithAllOptions() { @Test void testBuilderWithoutAuthentication() { - var publicRepoCoordinate = RepositoryCoordinates.create("example", "public-repo"); + var publicRepoCoordinate = BranchCoordinates.create("example", "public-repo"); var navigator = GitHubRepositoryBuilderFactory.create(publicRepoCoordinate).build(); diff --git a/src/test/java/edu/stanford/protege/commitnavigator/config/RepositoryConfigTest.java b/src/test/java/edu/stanford/protege/commitnavigator/config/RepositoryConfigTest.java index 53caeb8..bf55f35 100644 --- a/src/test/java/edu/stanford/protege/commitnavigator/config/RepositoryConfigTest.java +++ b/src/test/java/edu/stanford/protege/commitnavigator/config/RepositoryConfigTest.java @@ -2,7 +2,7 @@ import static org.junit.jupiter.api.Assertions.*; -import edu.stanford.protege.commitnavigator.model.RepositoryCoordinates; +import edu.stanford.protege.commitnavigator.model.BranchCoordinates; import java.nio.file.Paths; import org.junit.jupiter.api.Test; @@ -10,7 +10,7 @@ class RepositoryConfigTest { @Test void testBuilderPattern() { - var coordinate = RepositoryCoordinates.create("example", "repo", "develop"); + var coordinate = BranchCoordinates.create("example", "repo", "develop"); var config = RepositoryConfig.builder(coordinate) @@ -27,7 +27,7 @@ void testBuilderPattern() { @Test void testDefaultValues() { - var coordinate = RepositoryCoordinates.create("example", "repo"); + var coordinate = BranchCoordinates.create("example", "repo"); var config = RepositoryConfig.builder(coordinate).build(); @@ -41,7 +41,7 @@ void testDefaultValues() { @Test void testAuthenticationConfig() { - var coordinate = RepositoryCoordinates.create("example", "repo"); + var coordinate = BranchCoordinates.create("example", "repo"); var authConfig = AuthenticationConfig.personalAccessToken("token").build(); var config = RepositoryConfig.builder(coordinate).authConfig(authConfig).build();