github-sync-agent 0.1.0__py3-none-any.whl → 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- github_sync/__init__.py +1 -1
- github_sync_agent-0.1.1.dist-info/METADATA +108 -0
- {github_sync_agent-0.1.0.dist-info → github_sync_agent-0.1.1.dist-info}/RECORD +6 -6
- github_sync_agent-0.1.0.dist-info/METADATA +0 -132
- {github_sync_agent-0.1.0.dist-info → github_sync_agent-0.1.1.dist-info}/WHEEL +0 -0
- {github_sync_agent-0.1.0.dist-info → github_sync_agent-0.1.1.dist-info}/entry_points.txt +0 -0
- {github_sync_agent-0.1.0.dist-info → github_sync_agent-0.1.1.dist-info}/top_level.txt +0 -0
github_sync/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.1.
|
|
1
|
+
__version__ = "0.1.1"
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: github-sync-agent
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Sync all your local projects to GitHub automatically
|
|
5
|
+
License: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/yuvalavni/Agents
|
|
7
|
+
Project-URL: Repository, https://github.com/yuvalavni/Agents
|
|
8
|
+
Project-URL: Bug Tracker, https://github.com/yuvalavni/Agents/issues
|
|
9
|
+
Keywords: github,git,sync,backup,automation,cli
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
15
|
+
Requires-Python: >=3.10
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
Requires-Dist: pyyaml>=6.0
|
|
18
|
+
Requires-Dist: click>=8.0
|
|
19
|
+
|
|
20
|
+
# GitHub Sync Agent
|
|
21
|
+
|
|
22
|
+
Automatically syncs every local project directory to its own GitHub repository.
|
|
23
|
+
|
|
24
|
+
For each project it will:
|
|
25
|
+
1. `git init` if not already a repo
|
|
26
|
+
2. Create the GitHub repo if it doesn't exist yet
|
|
27
|
+
3. Ensure the remote uses SSH
|
|
28
|
+
4. Stage + commit any uncommitted changes
|
|
29
|
+
5. Push to `origin`
|
|
30
|
+
|
|
31
|
+
Runs daily via a systemd user timer, and on-demand via CLI.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install github-sync-agent
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## First-time setup
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
github-sync init
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The wizard will:
|
|
48
|
+
- Check `git` and `gh` are installed
|
|
49
|
+
- Authenticate with GitHub (`gh auth login`)
|
|
50
|
+
- Ask which folder to scan for projects
|
|
51
|
+
- Set up your SSH key automatically
|
|
52
|
+
- Write a config file to `~/.config/github-sync/config.yaml`
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Sync all projects
|
|
60
|
+
github-sync sync
|
|
61
|
+
|
|
62
|
+
# Sync a single project
|
|
63
|
+
github-sync sync --project my-project
|
|
64
|
+
|
|
65
|
+
# Preview without making changes
|
|
66
|
+
github-sync sync --dry-run
|
|
67
|
+
|
|
68
|
+
# Show status of all projects
|
|
69
|
+
github-sync status
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Configuration (`~/.config/github-sync/config.yaml`)
|
|
75
|
+
|
|
76
|
+
Generated by `github-sync init`. You can edit it at any time.
|
|
77
|
+
|
|
78
|
+
| Key | Default | Description |
|
|
79
|
+
|-----|---------|-------------|
|
|
80
|
+
| `github_user` | _(detected from gh auth)_ | Your GitHub username |
|
|
81
|
+
| `projects_root` | `~/projects` | Scans all subdirectories here |
|
|
82
|
+
| `schedule_time` | `02:00` | Daily run time |
|
|
83
|
+
| `default_visibility` | `private` | `private` or `public` for new repos |
|
|
84
|
+
| `auto_commit_message` | `chore: auto-sync` | Commit message for auto-commits |
|
|
85
|
+
| `exclude` | `[]` | Directory names to skip |
|
|
86
|
+
| `log_file` | `~/.local/share/github-sync/github-sync.log` | Log file path |
|
|
87
|
+
| `log_level` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
88
|
+
|
|
89
|
+
### Excluding a project
|
|
90
|
+
|
|
91
|
+
```yaml
|
|
92
|
+
exclude:
|
|
93
|
+
- SomeProjectToSkip
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Requirements
|
|
99
|
+
|
|
100
|
+
- Python 3.10+
|
|
101
|
+
- `git` installed
|
|
102
|
+
- `gh` (GitHub CLI) installed — [installation guide](https://cli.github.com)
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## License
|
|
107
|
+
|
|
108
|
+
MIT
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
github_sync/__init__.py,sha256=
|
|
1
|
+
github_sync/__init__.py,sha256=rnObPjuBcEStqSO0S6gsdS_ot8ITOQjVj_-P1LUUYpg,22
|
|
2
2
|
github_sync/agent.py,sha256=E21j6AoXXnmtEWKV6LjECMhyfQ78PY9ifyWBKUga3Xk,6391
|
|
3
3
|
github_sync/cli.py,sha256=GFakiYck02S7ZxsKfVqO_bi2Gc427B87kAgzvMUpKLs,9004
|
|
4
4
|
github_sync/config.py,sha256=zywBw0AkDzk1wHamyJ-sbss3DMAXWq7fZeoDKR1fE_s,1306
|
|
5
5
|
github_sync/setup.py,sha256=keV0bBTgADASGBOCmd6Jv8eXqIg_g0uxbBIYpCHaMxA,4461
|
|
6
|
-
github_sync_agent-0.1.
|
|
7
|
-
github_sync_agent-0.1.
|
|
8
|
-
github_sync_agent-0.1.
|
|
9
|
-
github_sync_agent-0.1.
|
|
10
|
-
github_sync_agent-0.1.
|
|
6
|
+
github_sync_agent-0.1.1.dist-info/METADATA,sha256=ZRT3bRa67CNfojl4tY4yED3xqxviAbEmPVOCvktWQOU,2644
|
|
7
|
+
github_sync_agent-0.1.1.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
8
|
+
github_sync_agent-0.1.1.dist-info/entry_points.txt,sha256=-LmJUTvRzj5cvyS-dEWdipouBj3dgkW6hqrTz1GmyGw,53
|
|
9
|
+
github_sync_agent-0.1.1.dist-info/top_level.txt,sha256=fPYTA83USK1N4JwfouV8zcejgWfWmqRAKQVDCAT8a5I,12
|
|
10
|
+
github_sync_agent-0.1.1.dist-info/RECORD,,
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: github-sync-agent
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Sync all your local projects to GitHub automatically
|
|
5
|
-
Author: yuvalavni
|
|
6
|
-
License: MIT
|
|
7
|
-
Project-URL: Homepage, https://github.com/yuvalavni/Agents
|
|
8
|
-
Project-URL: Repository, https://github.com/yuvalavni/Agents
|
|
9
|
-
Keywords: github,git,sync,backup,automation,cli
|
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
|
11
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
13
|
-
Classifier: Environment :: Console
|
|
14
|
-
Classifier: Topic :: Software Development :: Version Control :: Git
|
|
15
|
-
Requires-Python: >=3.10
|
|
16
|
-
Description-Content-Type: text/markdown
|
|
17
|
-
Requires-Dist: pyyaml>=6.0
|
|
18
|
-
Requires-Dist: click>=8.0
|
|
19
|
-
|
|
20
|
-
# GitHub Sync Agent
|
|
21
|
-
|
|
22
|
-
Automatically syncs every project under `/home/yuval/projects` to GitHub (`github.com/yuvalavni`).
|
|
23
|
-
|
|
24
|
-
For each project it will:
|
|
25
|
-
1. `git init` if not already a repo
|
|
26
|
-
2. Create the GitHub repo if it doesn't exist yet
|
|
27
|
-
3. Ensure the remote uses SSH
|
|
28
|
-
4. Stage + commit any uncommitted changes
|
|
29
|
-
5. Push to `origin`
|
|
30
|
-
|
|
31
|
-
Runs daily at **02:00** via a systemd user timer, and on-demand via CLI.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Directory layout
|
|
36
|
-
|
|
37
|
-
```
|
|
38
|
-
agents/github-sync/
|
|
39
|
-
├── github_sync_agent.py # Main script
|
|
40
|
-
├── config.yaml # GitHub user, projects root, schedule, exclusions
|
|
41
|
-
├── requirements.txt
|
|
42
|
-
├── install.sh # One-time setup
|
|
43
|
-
├── systemd/
|
|
44
|
-
│ ├── github-sync.service
|
|
45
|
-
│ └── github-sync.timer
|
|
46
|
-
└── logs/
|
|
47
|
-
└── github-sync.log
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Quick start
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
cd /home/yuval/projects/Agents/agents/github-sync
|
|
56
|
-
|
|
57
|
-
# 1. Install (once)
|
|
58
|
-
bash install.sh
|
|
59
|
-
|
|
60
|
-
# 2. Dry run
|
|
61
|
-
.venv/bin/python github_sync_agent.py --dry-run
|
|
62
|
-
|
|
63
|
-
# 3. Sync for real
|
|
64
|
-
.venv/bin/python github_sync_agent.py
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## Configuration (`config.yaml`)
|
|
70
|
-
|
|
71
|
-
| Key | Default | Description |
|
|
72
|
-
|-----|---------|-------------|
|
|
73
|
-
| `github_user` | `yuvalavni` | GitHub username |
|
|
74
|
-
| `projects_root` | `/home/yuval/projects` | Scans all subdirectories here |
|
|
75
|
-
| `schedule_time` | `02:00` | Daily run time |
|
|
76
|
-
| `default_visibility` | `private` | `private` or `public` for new repos |
|
|
77
|
-
| `auto_commit_message` | `chore: auto-sync` | Commit message for auto-commits |
|
|
78
|
-
| `exclude` | `[]` | Directory names to skip |
|
|
79
|
-
| `log_file` | `logs/github-sync.log` | Log file path |
|
|
80
|
-
| `log_level` | `INFO` | `DEBUG` / `INFO` / `WARNING` / `ERROR` |
|
|
81
|
-
|
|
82
|
-
### Excluding a project
|
|
83
|
-
|
|
84
|
-
```yaml
|
|
85
|
-
exclude:
|
|
86
|
-
- SomePrivateProject
|
|
87
|
-
- TempExperiment
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
---
|
|
91
|
-
|
|
92
|
-
## CLI reference
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
# Sync all projects
|
|
96
|
-
.venv/bin/python github_sync_agent.py
|
|
97
|
-
|
|
98
|
-
# Sync a single project
|
|
99
|
-
.venv/bin/python github_sync_agent.py --project Agents
|
|
100
|
-
|
|
101
|
-
# Preview without making any changes
|
|
102
|
-
.venv/bin/python github_sync_agent.py --dry-run
|
|
103
|
-
|
|
104
|
-
# Show status of all projects (git, remote, changes, GitHub)
|
|
105
|
-
.venv/bin/python github_sync_agent.py --status
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## Systemd
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
# Trigger immediately
|
|
114
|
-
systemctl --user start github-sync.service
|
|
115
|
-
|
|
116
|
-
# Check next scheduled run
|
|
117
|
-
systemctl --user list-timers github-sync.timer
|
|
118
|
-
|
|
119
|
-
# View live logs
|
|
120
|
-
journalctl --user -u github-sync.service -f
|
|
121
|
-
|
|
122
|
-
# Disable daily timer
|
|
123
|
-
systemctl --user disable --now github-sync.timer
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Prerequisites
|
|
129
|
-
|
|
130
|
-
- `git` installed
|
|
131
|
-
- `gh` installed and authenticated (`gh auth status`)
|
|
132
|
-
- SSH key added to GitHub (`gh ssh-key list`)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|