mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-01-23 23:14:13 +08:00
Compare commits
1 Commits
ashwin/mul
...
ashwin/tes
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a39f0435dc |
11
README.md
11
README.md
@@ -347,15 +347,8 @@ Claude does **not** have access to execute arbitrary Bash commands by default. I
|
|||||||
```yaml
|
```yaml
|
||||||
- uses: anthropics/claude-code-action@beta
|
- uses: anthropics/claude-code-action@beta
|
||||||
with:
|
with:
|
||||||
allowed_tools: |
|
allowed_tools: "Bash(npm install),Bash(npm run test),Edit,Replace,NotebookEditCell"
|
||||||
Bash(npm install)
|
disallowed_tools: "TaskOutput,KillTask"
|
||||||
Bash(npm run test)
|
|
||||||
Edit
|
|
||||||
Replace
|
|
||||||
NotebookEditCell
|
|
||||||
disallowed_tools: |
|
|
||||||
TaskOutput
|
|
||||||
KillTask
|
|
||||||
# ... other inputs
|
# ... other inputs
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -52,8 +52,14 @@ export function parseGitHubContext(): ParsedGitHubContext {
|
|||||||
inputs: {
|
inputs: {
|
||||||
triggerPhrase: process.env.TRIGGER_PHRASE ?? "@claude",
|
triggerPhrase: process.env.TRIGGER_PHRASE ?? "@claude",
|
||||||
assigneeTrigger: process.env.ASSIGNEE_TRIGGER ?? "",
|
assigneeTrigger: process.env.ASSIGNEE_TRIGGER ?? "",
|
||||||
allowedTools: parseMultilineInput(process.env.ALLOWED_TOOLS ?? ""),
|
allowedTools: (process.env.ALLOWED_TOOLS ?? "")
|
||||||
disallowedTools: parseMultilineInput(process.env.DISALLOWED_TOOLS ?? ""),
|
.split(",")
|
||||||
|
.map((tool) => tool.trim())
|
||||||
|
.filter((tool) => tool.length > 0),
|
||||||
|
disallowedTools: (process.env.DISALLOWED_TOOLS ?? "")
|
||||||
|
.split(",")
|
||||||
|
.map((tool) => tool.trim())
|
||||||
|
.filter((tool) => tool.length > 0),
|
||||||
customInstructions: process.env.CUSTOM_INSTRUCTIONS ?? "",
|
customInstructions: process.env.CUSTOM_INSTRUCTIONS ?? "",
|
||||||
directPrompt: process.env.DIRECT_PROMPT ?? "",
|
directPrompt: process.env.DIRECT_PROMPT ?? "",
|
||||||
baseBranch: process.env.BASE_BRANCH,
|
baseBranch: process.env.BASE_BRANCH,
|
||||||
@@ -110,14 +116,6 @@ export function parseGitHubContext(): ParsedGitHubContext {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function parseMultilineInput(s: string): string[] {
|
|
||||||
return s
|
|
||||||
.split(/,|[\n\r]+/)
|
|
||||||
.map((tool) => tool.replace(/#.+$/, ""))
|
|
||||||
.map((tool) => tool.trim())
|
|
||||||
.filter((tool) => tool.length > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function isIssuesEvent(
|
export function isIssuesEvent(
|
||||||
context: ParsedGitHubContext,
|
context: ParsedGitHubContext,
|
||||||
): context is ParsedGitHubContext & { payload: IssuesEvent } {
|
): context is ParsedGitHubContext & { payload: IssuesEvent } {
|
||||||
|
|||||||
@@ -45,9 +45,16 @@ export async function setupBranch(
|
|||||||
|
|
||||||
const branchName = prData.headRefName;
|
const branchName = prData.headRefName;
|
||||||
|
|
||||||
// Execute git commands to checkout PR branch (shallow fetch for performance)
|
// Determine optimal fetch depth based on PR commit count, with a minimum of 20
|
||||||
// Fetch the branch with a depth of 20 to avoid fetching too much history, while still allowing for some context
|
const commitCount = prData.commits.totalCount;
|
||||||
await $`git fetch origin --depth=20 ${branchName}`;
|
const fetchDepth = Math.max(commitCount, 20);
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
`PR #${entityNumber}: ${commitCount} commits, using fetch depth ${fetchDepth}`,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Execute git commands to checkout PR branch (dynamic depth based on PR size)
|
||||||
|
await $`git fetch origin --depth=${fetchDepth} ${branchName}`;
|
||||||
await $`git checkout ${branchName}`;
|
await $`git checkout ${branchName}`;
|
||||||
|
|
||||||
console.log(`Successfully checked out PR branch for PR #${entityNumber}`);
|
console.log(`Successfully checked out PR branch for PR #${entityNumber}`);
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
import { describe, it, expect } from "bun:test";
|
|
||||||
import { parseMultilineInput } from "../../src/github/context";
|
|
||||||
|
|
||||||
describe("parseMultilineInput", () => {
|
|
||||||
it("should parse a comma-separated string", () => {
|
|
||||||
const input = `Bash(bun install),Bash(bun test:*),Bash(bun typecheck)`;
|
|
||||||
const result = parseMultilineInput(input);
|
|
||||||
expect(result).toEqual([
|
|
||||||
"Bash(bun install)",
|
|
||||||
"Bash(bun test:*)",
|
|
||||||
"Bash(bun typecheck)",
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should parse multiline string", () => {
|
|
||||||
const input = `Bash(bun install)
|
|
||||||
Bash(bun test:*)
|
|
||||||
Bash(bun typecheck)`;
|
|
||||||
const result = parseMultilineInput(input);
|
|
||||||
expect(result).toEqual([
|
|
||||||
"Bash(bun install)",
|
|
||||||
"Bash(bun test:*)",
|
|
||||||
"Bash(bun typecheck)",
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should parse comma-separated multiline line", () => {
|
|
||||||
const input = `Bash(bun install),Bash(bun test:*)
|
|
||||||
Bash(bun typecheck)`;
|
|
||||||
const result = parseMultilineInput(input);
|
|
||||||
expect(result).toEqual([
|
|
||||||
"Bash(bun install)",
|
|
||||||
"Bash(bun test:*)",
|
|
||||||
"Bash(bun typecheck)",
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should ignore comments", () => {
|
|
||||||
const input = `Bash(bun install),
|
|
||||||
Bash(bun test:*) # For testing
|
|
||||||
# For type checking
|
|
||||||
Bash(bun typecheck)
|
|
||||||
`;
|
|
||||||
const result = parseMultilineInput(input);
|
|
||||||
expect(result).toEqual([
|
|
||||||
"Bash(bun install)",
|
|
||||||
"Bash(bun test:*)",
|
|
||||||
"Bash(bun typecheck)",
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should parse an empty string", () => {
|
|
||||||
const input = "";
|
|
||||||
const result = parseMultilineInput(input);
|
|
||||||
expect(result).toEqual([]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user