actions(ci/cd): Add release and sync workflows

This commit is contained in:
marked 2024-11-12 18:59:29 +01:00
parent 6a08d8d7f4
commit ccd4990154
7 changed files with 433 additions and 120 deletions

View file

@ -0,0 +1,25 @@
name: Release
on:
workflow_dispatch:
jobs:
release:
name: Release
runs-on: docker
container:
image: ghcr.io/catthehacker/ubuntu:act-22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Rokit
uses: https://github.com/CompeyDev/setup-rokit@v0.1.2
with:
token: ${{ secrets.githubtoken }}
- name: Authorize
run: pesde auth login --token "${{ secrets.pesde_auth_token }}"
- name: Publish
run: pesde publish -y

View file

@ -0,0 +1,42 @@
name: Sync
on:
workflow_dispatch:
schedule:
- cron: "10 0 * * *" # Runs at 00:10 UTC every day
jobs:
release:
name: Release
runs-on: docker
container:
image: ghcr.io/catthehacker/ubuntu:act-22.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Install Rokit
uses: https://github.com/CompeyDev/setup-rokit@v0.1.2
with:
token: ${{ secrets.githubtoken }}
- name: Pull Newest Jecs
run: lune run pull.luau
- name: Read Jecs Version
id: read_jecs_version
run: |
version=$(lune run read_version | tr '\n' ' ')
echo "JECS_VERSION=$version" >> $GITHUB_OUTPUT
- name: Create Pull Request
uses: https://github.com/peter-evans/create-pull-request@v7
with:
title: Sync to upstream Jecs ${{ steps.read_jecs_version.outputs.JECS_VERSION }}
body: |
Sync to upstream Jecs ${{ steps.read_jecs_version.outputs.JECS_VERSION }}
- This pull request is **auto-generated**
branch: auto/update-jecs
commit-message: Sync to upstream Jecs ${{ steps.read_jecs_version.outputs.JECS_VERSION }}
base: main
token: ${{ secrets.privileged_forgejo_token }}

View file

@ -1,5 +1,4 @@
--!strict
local task = require("@lune/task")
local process = require("@lune/process")
local fs = require("@lune/fs")
local net = require("@lune/net")
@ -22,6 +21,77 @@ type wally_manifest = {
},
}
type environment = "luau" | "lune" | "roblox" | "roblox_server"
type pesde_dependency = {
name: string,
version: string,
index: string?,
target: environment?,
} | {
wally: string,
version: string,
index: string?,
} | {
repo: string,
rev: string,
path: string?,
}
type pesde_manifest = {
name: string,
version: string,
description: string?,
license: string?,
authors: { string }?,
repository: string?,
private: boolean?,
includes: { string }?,
pesde_version: string?,
workspace_members: { string }?,
target: {
environment: environment,
lib: string,
bin: string?,
build_files: { string }?,
},
scripts: {
roblox_sync_config_generator: string?,
sourcemap_generator: string?,
[string]: string,
}?,
indices: {
default: string,
[string]: string,
},
wally_indices: {
default: string,
[string]: string,
}?,
overrides: {
[string]: pesde_dependency,
}?,
patches: {
[string]: { [string]: string },
}?,
dependencies: {
[string]: pesde_dependency,
}?,
peer_dependencies: {
[string]: pesde_dependency,
}?,
dev_dependencies: {
[string]: pesde_dependency,
}?,
}
print("🟧 Fetching github token...")
local github_token: string = process.args[1]
@ -103,11 +173,44 @@ download_list({
{ path = "README.md", output = "README.md" },
})
print("🟧 Writing pesde manifest...")
local pesde_manifest =
`name = "marked/jecs_pesde"\ndescription = "A minimal copy of jecs intended for adding as a Luau git dependency on pesde projects"\nversion = "{jecs_version}"\nrepository = "https://git.devmarked.win/marked/jecs-pesde"\n\nincludes = ["init.luau", "pesde.toml", "README.md", "LICENSE", ".luaurc"]\n\n[target]\nenvironment = "luau"\nlib = "init.luau"\n\n[indices]\ndefault = "https://github.com/daimond113/pesde-index"`
print(`🟧 Modifying README.md to include repo info...`)
local readme_contents = fs.readFile("README.md")
local new_readme_contents = [[
An unofficial pesde package for [jecs](https://github.com/ukendio/jecs).
fs.writeFile("pesde.toml", pesde_manifest)
]] .. readme_contents
fs.writeFile("README.md", new_readme_contents)
print(`✅ Modified README.md.`)
local pesde_manifest: pesde_manifest = {
name = "mark_marks/jecs_pesde",
description = "A minimal copy of jecs published on the official pesde registry",
version = jecs_version,
authors = { "jecs authors" },
repository = "https://git.devmarked.win/marked/jecs-pesde",
license = "MIT",
includes = {
"init.luau",
"pesde.toml",
"README.md",
"LICENSE",
".luaurc",
},
target = {
environment = "luau",
lib = "init.luau",
},
indices = {
default = "https://github.com/daimond113/pesde-index",
},
}
print("🟧 Writing pesde manifest...")
local serialized_manifest = serde.encode("toml", pesde_manifest, true)
fs.writeFile("pesde.toml", serialized_manifest)
print("✅ Wrote pesde manifest.")
print("-- ✅ Finished pulling latest release.")

80
.lune/read_version.luau Normal file
View file

@ -0,0 +1,80 @@
--!strict
local fs = require("@lune/fs")
local serde = require("@lune/serde")
type environment = "luau" | "lune" | "roblox" | "roblox_server"
type pesde_dependency = {
name: string,
version: string,
index: string?,
target: environment?,
} | {
wally: string,
version: string,
index: string?,
} | {
repo: string,
rev: string,
path: string?,
}
type pesde_manifest = {
name: string,
version: string,
description: string?,
license: string?,
authors: { string }?,
repository: string?,
private: boolean?,
includes: { string }?,
pesde_version: string?,
workspace_members: { string }?,
target: {
environment: environment,
lib: string,
bin: string?,
build_files: { string }?,
},
scripts: {
roblox_sync_config_generator: string?,
sourcemap_generator: string?,
[string]: string,
}?,
indices: {
default: string,
[string]: string,
},
wally_indices: {
default: string,
[string]: string,
}?,
overrides: {
[string]: pesde_dependency,
}?,
patches: {
[string]: { [string]: string },
}?,
dependencies: {
[string]: pesde_dependency,
}?,
peer_dependencies: {
[string]: pesde_dependency,
}?,
dev_dependencies: {
[string]: pesde_dependency,
}?,
}
local manifest_contents = fs.readFile("pesde.toml")
local manifest: pesde_manifest = serde.decode("toml", manifest_contents) or error("Couldn't decode manifest.")
local jecs_version = manifest.version
print(jecs_version)

53
.zed/settings.json Normal file
View file

@ -0,0 +1,53 @@
{
"lsp": {
"luau-lsp": {
"settings": {
"luau-lsp": {
"completion": {
"imports": {
"enabled": true,
"separateGroupsWithLine": true,
"suggestServices": true,
"suggestRequires": false
}
},
"require": {
"mode": "relativeToFile",
"directoryAliases": {
"@lune/": "~/.lune/.typedefs/0.8.9/"
}
},
"inlayHints": {
"parameterNames": "all"
}
},
"ext": {
"roblox": {
"enabled": false,
"security_level": "roblox_script"
},
"fflags": {
"enable_by_default": false,
"sync": true
},
"binary": {
"ignore_system_version": false
}
}
}
}
},
"languages": {
"Luau": {
"formatter": {
"external": {
"command": "stylua",
"arguments": ["-"]
}
}
}
},
"file_types": {
"Luau": ["lua"]
}
}

View file

@ -1,3 +1,6 @@
An unofficial pesde package for [jecs](https://github.com/ukendio/jecs).
<p align="center">
<img src="jecs_darkmode.svg#gh-dark-mode-only" width=50%/>

View file

@ -1,13 +1,20 @@
name = "marked/jecs_pesde"
description = "A minimal copy of jecs intended for adding as a Luau git dependency on pesde projects"
version = "0.3.2"
authors = ["jecs authors"]
description = "A minimal copy of jecs published on the official pesde registry"
includes = [
"init.luau",
"pesde.toml",
"README.md",
"LICENSE",
".luaurc",
]
license = "MIT"
name = "mark_marks/jecs_pesde"
repository = "https://git.devmarked.win/marked/jecs-pesde"
version = "0.3.2"
includes = ["init.luau", "pesde.toml", "README.md", "LICENSE", ".luaurc"]
[indices]
default = "https://github.com/daimond113/pesde-index"
[target]
environment = "luau"
lib = "init.luau"
[indices]
default = "https://github.com/daimond113/pesde-index"