@cj-ways/orgclone 0.1.0 → 0.1.2
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.
- package/README.md +119 -0
- package/package.json +31 -3
package/README.md
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# orgclone
|
|
2
|
+
|
|
3
|
+
Clone entire GitHub organizations or GitLab groups with one command.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@cj-ways/orgclone)
|
|
6
|
+
[](https://github.com/cj-ways/orgclone/blob/master/LICENSE)
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install -g @cj-ways/orgclone
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Clone a GitHub org (public — no token needed)
|
|
18
|
+
orgclone clone github my-org
|
|
19
|
+
|
|
20
|
+
# Clone a GitLab group
|
|
21
|
+
orgclone clone gitlab my-group --token glpat_xxx
|
|
22
|
+
|
|
23
|
+
# Preview what would be cloned
|
|
24
|
+
orgclone clone github my-org --dry-run
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Repos land in `~/Desktop/my-org/` by default. Run it again on the same folder and it `git pull`s everything — no re-cloning.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
| Method | Command |
|
|
34
|
+
|--------|---------|
|
|
35
|
+
| **npm** | `npm install -g @cj-ways/orgclone` |
|
|
36
|
+
| **pip** | `pip install orgclone` |
|
|
37
|
+
| **Go** | `go install github.com/cj-ways/orgclone@latest` |
|
|
38
|
+
| **Binary** | [Download from Releases](https://github.com/cj-ways/orgclone/releases) |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## All Options
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
orgclone clone <platform> <name> [options]
|
|
46
|
+
|
|
47
|
+
platform github or gitlab
|
|
48
|
+
name org name (GitHub) or group path (GitLab)
|
|
49
|
+
|
|
50
|
+
Options:
|
|
51
|
+
-t, --token API token — or set GITHUB_TOKEN / GITLAB_TOKEN env var
|
|
52
|
+
-d, --dest Destination folder (default: ~/Desktop/<name>)
|
|
53
|
+
-e, --exclude Comma-separated repo names to skip
|
|
54
|
+
--skip-archived Skip archived repositories
|
|
55
|
+
--ssh Use SSH URLs instead of HTTPS
|
|
56
|
+
--gitlab-url Self-hosted GitLab URL (default: https://gitlab.com)
|
|
57
|
+
--dry-run List repos without cloning
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## No token? No problem
|
|
63
|
+
|
|
64
|
+
For **public repos**, no token needed — orgclone calls `git clone` the same way you would manually. If you already have SSH keys or a credential manager set up (you can `git push` without a password), **private repos work too** with no extra config.
|
|
65
|
+
|
|
66
|
+
A token only adds value when you want auth to work automatically on a fresh machine or in CI.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Why orgclone over alternatives?
|
|
71
|
+
|
|
72
|
+
| Feature | orgclone | others |
|
|
73
|
+
|---------|----------|--------|
|
|
74
|
+
| GitHub support | ✓ | ✓ |
|
|
75
|
+
| GitLab support | ✓ | ✗ |
|
|
76
|
+
| Self-hosted GitLab | ✓ | ✗ |
|
|
77
|
+
| Auto-update on re-run | ✓ | some |
|
|
78
|
+
| Config file | ✓ | ✗ |
|
|
79
|
+
| Dry run | ✓ | ✗ |
|
|
80
|
+
| Skip archived | ✓ | ✗ |
|
|
81
|
+
| npm + pip + Go install | ✓ | ✗ |
|
|
82
|
+
| No runtime dependency | ✓ (single binary) | ✗ |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Config file
|
|
87
|
+
|
|
88
|
+
Run `orgclone init` to generate `~/.orgclone.yml`:
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
default_dest: ~/Desktop
|
|
92
|
+
|
|
93
|
+
github:
|
|
94
|
+
token: ghp_xxx # or: export GITHUB_TOKEN=ghp_xxx
|
|
95
|
+
|
|
96
|
+
gitlab:
|
|
97
|
+
token: glpat_xxx
|
|
98
|
+
url: https://gitlab.com # change for self-hosted
|
|
99
|
+
|
|
100
|
+
orgs:
|
|
101
|
+
my-org:
|
|
102
|
+
exclude:
|
|
103
|
+
- old-repo
|
|
104
|
+
- scratch
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
CLI flags always override config file values.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Links
|
|
112
|
+
|
|
113
|
+
- [GitHub Repository](https://github.com/cj-ways/orgclone)
|
|
114
|
+
- [Report an Issue](https://github.com/cj-ways/orgclone/issues)
|
|
115
|
+
- [Releases & Binaries](https://github.com/cj-ways/orgclone/releases)
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cj-ways/orgclone",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Clone entire GitHub
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Clone entire GitHub organizations or GitLab groups with one command. Supports public and private repos, SSH, token auth, and config files.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"author": "cj-ways",
|
|
7
|
+
"homepage": "https://github.com/cj-ways/orgclone#readme",
|
|
8
|
+
"bugs": {
|
|
9
|
+
"url": "https://github.com/cj-ways/orgclone/issues"
|
|
10
|
+
},
|
|
6
11
|
"repository": {
|
|
7
12
|
"type": "git",
|
|
8
13
|
"url": "git+https://github.com/cj-ways/orgclone.git"
|
|
9
14
|
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"github",
|
|
17
|
+
"gitlab",
|
|
18
|
+
"clone",
|
|
19
|
+
"organization",
|
|
20
|
+
"org",
|
|
21
|
+
"group",
|
|
22
|
+
"git",
|
|
23
|
+
"repos",
|
|
24
|
+
"repositories",
|
|
25
|
+
"bulk-clone",
|
|
26
|
+
"cli",
|
|
27
|
+
"devtools",
|
|
28
|
+
"github-org",
|
|
29
|
+
"gitlab-group",
|
|
30
|
+
"clone-repos",
|
|
31
|
+
"git-clone",
|
|
32
|
+
"developer-tools",
|
|
33
|
+
"automation",
|
|
34
|
+
"github-organization",
|
|
35
|
+
"sync"
|
|
36
|
+
],
|
|
10
37
|
"scripts": {
|
|
11
38
|
"postinstall": "node install.js"
|
|
12
39
|
},
|
|
@@ -15,6 +42,7 @@
|
|
|
15
42
|
},
|
|
16
43
|
"files": [
|
|
17
44
|
"bin/",
|
|
18
|
-
"install.js"
|
|
45
|
+
"install.js",
|
|
46
|
+
"README.md"
|
|
19
47
|
]
|
|
20
48
|
}
|