Initial Commit for scripts
A dumping ground for dumb scripts.
This commit is contained in:
commit
713358505e
3 changed files with 109 additions and 0 deletions
0
.gitignore
vendored
Normal file
0
.gitignore
vendored
Normal file
3
README.md
Normal file
3
README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# scripts
|
||||||
|
|
||||||
|
A dumping ground for dumb scripts.
|
||||||
106
newrepo
Executable file
106
newrepo
Executable file
|
|
@ -0,0 +1,106 @@
|
||||||
|
#!/usr/bin/env -S uv run --quiet --script
|
||||||
|
# /// script
|
||||||
|
# requires-python = ">=3.12"
|
||||||
|
# dependencies = ["typer",'httpx']
|
||||||
|
# ///
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import httpx
|
||||||
|
import typer
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
app = typer.Typer()
|
||||||
|
|
||||||
|
DEFAULT_REPO = Path.cwd().name
|
||||||
|
|
||||||
|
|
||||||
|
@app.command()
|
||||||
|
def create(
|
||||||
|
name: str = typer.Option(DEFAULT_REPO, help="Name of the repo", prompt=True),
|
||||||
|
description: str = typer.Option(
|
||||||
|
..., "--description", "-d", help="Description for the repo", prompt=True
|
||||||
|
),
|
||||||
|
remote: str = typer.Option("https://git.wayl.one", help="Base remote URL"),
|
||||||
|
org: str = typer.Option("waylon", help="Organization or username"),
|
||||||
|
branch: str = typer.Option("main", help="Branch to push"),
|
||||||
|
dry_run: bool = typer.Option(False, help="Dry run"),
|
||||||
|
):
|
||||||
|
typer.echo(f"Creating repo {name} on Forgejo...")
|
||||||
|
|
||||||
|
cmd = ["tea", "repo", "create", "--name", name, "--description", description]
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
|
||||||
|
else:
|
||||||
|
subprocess.run(
|
||||||
|
cmd,
|
||||||
|
check=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
remote_url = f"{remote}/{org}/{name}.git"
|
||||||
|
typer.echo(f"Adding remote: {remote_url}")
|
||||||
|
if not Path(".gitignore").exists():
|
||||||
|
cmd = [
|
||||||
|
"curl",
|
||||||
|
"-L",
|
||||||
|
"https://www.gitignore.io/api/vim,node,data,emacs,python,pycharm,executable,sublimetext,visualstudio,visualstudiocode",
|
||||||
|
">",
|
||||||
|
".gitignore",
|
||||||
|
]
|
||||||
|
typer.echo("Creating .gitignore")
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
else:
|
||||||
|
gitignore = httpx.get("https://www.gitignore.io/api/vim,node,data,emacs,python,pycharm,executable,sublimetext,visualstudio,visualstudiocode")
|
||||||
|
Path(".gitignore").write_text(gitignore.text)
|
||||||
|
|
||||||
|
if not Path("README.md").exists():
|
||||||
|
readme = f"""# {name}
|
||||||
|
|
||||||
|
{description}
|
||||||
|
"""
|
||||||
|
typer.echo("Creating README.md")
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(readme)
|
||||||
|
else:
|
||||||
|
Path("README.md").write_text(readme)
|
||||||
|
|
||||||
|
if not Path(".git").exists():
|
||||||
|
cmd = ["git", "init"]
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
else:
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
cmd = ["git", "add", "."]
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
else:
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
typer.echo("Added files")
|
||||||
|
cmd = ["git", "commit", "-m", f"Initial Commit for {name}\n\n{description}"]
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
else:
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
typer.echo("Created .git")
|
||||||
|
|
||||||
|
cmd = ["git", "remote", "add", "origin", remote_url]
|
||||||
|
typer.echo("Adding remote")
|
||||||
|
if dry_run:
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
else:
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
|
||||||
|
typer.echo(f"Pushing branch {branch} to origin...")
|
||||||
|
cmd = ["git", "push", "-u", "origin", branch]
|
||||||
|
if dry_run:
|
||||||
|
cmd = ["git", "push", "-u", "origin", branch]
|
||||||
|
typer.echo(" ".join(cmd))
|
||||||
|
else:
|
||||||
|
subprocess.run(cmd, check=True)
|
||||||
|
|
||||||
|
typer.echo("✅ Done!")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue