main
Kay 2023-01-17 18:34:28 +01:00
commit 5e93c4663c
3 changed files with 189 additions and 0 deletions

1
.README.template.md Normal file
View File

@ -0,0 +1 @@
just some scripts i wrote don't expect much documentation

59
README.md Normal file
View File

@ -0,0 +1,59 @@
# [scripts](https://code.juke.fr/kay/scripts)
various scripts i wrote that i felt needed to be committed for some reason
just some scripts i wrote don't expect much documentation
## License
Most all of my work is now licensed under **a modified** [CC-BY-NC-SA 4.0 AFEdit](https://code.juke.fr/kay/license/raw/branch/main/LICENSE) plus accounting for states existing in our world on top of capitalism.
This is a weird choice for code right?
Here are a few key reasons:
- my definition of "open" involves being able to share and modify, you are able to do such things, just not make money off of it, or oppress people
- my definition of "free" involves being able to share and modify, you are able to do such things, not just make money off of it, or oppressing people
So no, amongst other things, this list is not exhaustive,
- you cannot have somebody work on my tool and redistribute it to your employees
- you cannot resell copies of this because in this age distribution is not done with floppy disks and the internet is a thing
- you cannot use it to generate revenue yourself
- you cannot use it to "generate value" in a capitalistic sense
- you cannot use it in any military capacity
- you cannot use it in any law enforcement capacity
- you cannot use it in any state backed capacity
- you cannot use it in any surveillance capacity
- you cannot use it if you represent the interests of a state
- you cannot use it to oppress, spy, control in any capacity
- you cannot use it to injure, harm, kill, whether physically or psychologically
You can, however,
- change it to do whatever you please
- share it to anyone you please with attribution and under the same license
- use it as much as you please
- and probably a bunch of other cool things that are possible outside of a capitalistic, imperialistic frame of reference that permeates the tech scene
Most of the "arguments" for how "free" and "open" source licenses are done still to this day stem from archaic concepts that might not even be relevant these days and I fail to see the issue with this license not being "interoperable" with a bunch of what I deem to be "bad" licenses, as they all allow for commercial usage.
I also will not make any attempts to monetize these works and will at most ever offer the possibility to donate to me directly if you enjoy what I do.
Thank you that is all.
## Development
To clone the repository locally:
```bash
$ git clone https://code.juke.fr/kay/scripts.git
```
## Contributing
More to come later.
### Issues
Open new issues by mailing [eutychia.gitlab+scripts-issue@gmail.com](mailto:eutychia.gitlab+scripts-issue@gmail.com)
---
beep boop

View File

@ -0,0 +1,129 @@
// git is very cringe sometimes
import { encode, decode } from "https://deno.land/std/encoding/base64.ts";
let reps;
const username =
Deno.env.get("GITEA_USERNAME") ||
(() => {
throw new Error("GITEA_USERNAME required");
})();
const password =
Deno.env.get("GITEA_PASSWORD") ||
(() => {
throw new Error("GITEA_PASSWORD required");
})();
const instance =
Deno.env.get("GITEA_INSTANCE") ||
(() => {
throw new Error("GITEA_INSTANCE required");
})();
console.log("0. Instance Healthcheck...");
try {
await fetch(instance);
} catch (e) {
console.error(e);
throw new Error("Healthcheck failed");
}
console.log("1. Getting all repos...");
try {
const repos = await (
await fetch(`${instance}/api/v1/user/repos?limit=100`, {
method: "GET",
headers: {
Authorization: "Basic " + encode(`${username}:${password}`),
},
})
).json();
reps = repos.map(({ name }) => {
console.log(`- ${username}/${name}`);
return name;
});
console.log(`Found ${reps.length} repos.`);
} catch (e) {
console.error(e);
throw new Error("Getting repos failed");
}
console.log("2. Getting all repos infos...");
try {
const tempreps = [];
for (const name of reps) {
const repo = await (
await fetch(`${instance}/api/v1/repos/${username}/${name}`, {
method: "GET",
headers: {
Authorization: "Basic " + encode(`${username}:${password}`),
},
})
).json();
const { topics } = await (
await fetch(`${instance}/api/v1/repos/${username}/${name}/topics`, {
method: "GET",
headers: {
Authorization: "Basic " + encode(`${username}:${password}`),
},
})
).json();
tempreps.push({ name, description: repo.description.trim(), topics });
}
reps = tempreps;
console.log(reps);
await Deno.writeTextFile("./repos.json", JSON.stringify(reps, 0, 2));
} catch (e) {
console.error(e);
throw new Error("Getting repos infos failed");
}
console.log("2. Deleting all repos...");
try {
for (const rep of reps) {
await fetch(`${instance}/api/v1/repos/${username}/${rep.name}`, {
method: "DELETE",
headers: {
Authorization: "Basic " + encode(`${username}:${password}`),
},
});
console.log(`Deleted ${username}/${rep.name}`);
}
} catch (e) {
console.error(e);
throw new Error("Deleting repos failed");
}
console.log("2. Creating all repos...");
try {
for (const rep of reps) {
await fetch(`${instance}/api/v1/user/repos`, {
method: "POST",
headers: {
Authorization: "Basic " + encode(`${username}:${password}`),
"Content-Type": "application/json",
},
body: JSON.stringify({
name: rep.name,
description: rep.description,
private: false,
}),
});
console.log(`Created ${username}/${rep.name}`);
await fetch(`${instance}/api/v1/repos/${username}/${rep.name}/topics`, {
method: "PUT",
headers: {
Authorization: "Basic " + encode(`${username}:${password}`),
"Content-Type": "application/json",
},
body: JSON.stringify({
topics: rep.topics,
}),
});
console.log(`Topicced ${username}/${rep.name}`);
}
} catch (e) {
console.error(e);
throw new Error("Creating repos failed");
}