Skip to content

Commit f872f28

Browse files
authored
Merge pull request #2 from r3d-shadow/dev
Non-interactive mode
2 parents 7b02883 + 6a72a57 commit f872f28

6 files changed

Lines changed: 24 additions & 14 deletions

File tree

example-template-dir/.git-pilot-state.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
"files": {
77
"override-example.yml.j2": {
88
"path": ".github/workflows/git-pilot/override-example.yml",
9-
"sha": "4cde61aa28e23a8846890a7ea6087212759b43ad5e7e4799245ad70e0dfd4eb8",
10-
"rendered": "name: scan\n\non:\n push:\n branches:\n - \"stage\"\n\njobs:\n sast:\n runs-on: ubuntu-latest\n steps:\n - name: Hello from stage!\n run: echo \"Hello6 sast!\"\n env:\n SUPER_SECRET: ${{ secrets.SuperSecret }}",
11-
"updated_at": "2025-05-30T04:07:52Z"
9+
"sha": "abc1247b5f842e4d2ceecc3b6c241ed50966203d52689b9a89bde68ce4aa325e",
10+
"rendered": "name: scan\n\non:\n push:\n branches:\n - \"stage\"\n\njobs:\n sast:\n runs-on: ubuntu-latest\n steps:\n - name: Hello from stage!\n run: echo \"Hello10 sast!\"\n env:\n SUPER_SECRET: ${{ secrets.SuperSecret }}",
11+
"updated_at": "2025-05-30T07:23:24Z"
1212
}
1313
}
1414
}
@@ -26,9 +26,9 @@
2626
},
2727
"override-example.yml.j2": {
2828
"path": ".github/workflows/override-example.yml",
29-
"sha": "1f0aa21d4fd0204c8cab77373601c23390e4b54f29e904ae07162a6d4af9dbb0",
30-
"rendered": "name: scan\n\non:\n push:\n branches:\n - \"test\"\n\njobs:\n container_scan1:\n runs-on: ubuntu-latest\n steps:\n - name: Hello from test!\n run: echo \"Hello6 container_scan1!\"\n env:\n SUPER_SECRET: ${{ secrets.SuperSecret }}",
31-
"updated_at": "2025-05-30T04:07:50Z"
29+
"sha": "74cafad8fc1d7b6bb3dcd3ad456605900ccd19b63e023532a7fed42b99ac6d7e",
30+
"rendered": "name: scan\n\non:\n push:\n branches:\n - \"test\"\n\njobs:\n container_scan1:\n runs-on: ubuntu-latest\n steps:\n - name: Hello from test!\n run: echo \"Hello10 container_scan1!\"\n env:\n SUPER_SECRET: ${{ secrets.SuperSecret }}",
31+
"updated_at": "2025-05-30T07:23:22Z"
3232
}
3333
}
3434
}

example-template-dir/override-example.yml.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- name: Hello from [[ env ]]!
13-
run: echo "Hello6 [[ job_id ]]!"
13+
run: echo "Hello10 [[ job_id ]]!"
1414
env:
1515
SUPER_SECRET: ${{ secrets.SuperSecret }}

src/cli/commands.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ def execute(self, args):
2121
template_dir=args.template_dir,
2222
state_file=args.state_file
2323
)
24-
facade.sync(config)
24+
facade.sync(config, interactive=not getattr(args, "non_interactive", False))

src/cli/parsers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ def with_sync_command(self):
1919
sync_parser.add_argument('--template-dir', required=True)
2020
sync_parser.add_argument('--values', required=True)
2121
sync_parser.add_argument('--state-file', default='.git-pilot-state.json')
22+
sync_parser.add_argument(
23+
"--non-interactive",
24+
action="store_true",
25+
help="Run sync in non-interactive mode (auto-approve all changes)"
26+
)
2227
sync_parser.set_defaults(command=SyncCommand())
2328
return self
2429

src/core/farcade.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ def __init__(self, provider_name, token, template_dir, state_file):
1111
self.template = JinjaTemplateEngine(template_dir)
1212
self.diff = RichDiffViewer()
1313

14-
def sync(self, config):
14+
def sync(self, config, interactive: bool = True):
1515
engine = SyncEngine(
1616
provider=self.provider,
1717
state_mgr=self.state,
1818
template_eng=self.template,
19-
diff_viewer=self.diff
19+
diff_viewer=self.diff,
20+
interactive=interactive
2021
)
2122
self.state.load()
2223
engine.sync(config)

src/core/sync_engine.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,20 @@
55
from src.utils.logger import Logger
66
from src.utils.hash import compute_sha
77

8-
98
class SyncEngine:
109
def __init__(
1110
self,
1211
provider: ProviderInterface,
1312
state_mgr: StateInterface,
1413
template_eng: TemplateInterface,
1514
diff_viewer: DiffViewerInterface,
15+
interactive: bool = True
1616
):
1717
self.provider = provider
1818
self.state_mgr = state_mgr
1919
self.template_eng = template_eng
2020
self.diff_viewer = diff_viewer
21+
self.interactive = interactive
2122

2223
def sync(self, config: Any) -> None:
2324
all_diffs = []
@@ -79,9 +80,12 @@ def sync(self, config: Any) -> None:
7980
Logger.get_logger().info("Nothing to do.")
8081
return
8182

82-
if not self.diff_viewer.show(all_diffs):
83-
Logger.get_logger().info("Aborted.")
84-
return
83+
if self.interactive:
84+
if not self.diff_viewer.show(all_diffs):
85+
Logger.get_logger().info("Aborted.")
86+
return
87+
else:
88+
Logger.get_logger().info("Non-interactive mode: Skipping diff viewer.")
8589

8690
for item in plan:
8791
if item["op"] == "delete":

0 commit comments

Comments
 (0)