Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
cd03290
fix: add missing SemanticVersioning module
line0 May 23, 2026
f147a45
fix: broken script type handling in update feeds
line0 May 23, 2026
bf66595
fix: module loader running depctrl initializer hooks on already initi…
line0 May 23, 2026
f2e1fa8
fix: update failing due to unsupported string index in capitalization…
line0 May 23, 2026
977f37a
test: add first test
line0 May 23, 2026
75b6c43
ci: enforce LF + EOF newline for consistent hash calculation
line0 May 23, 2026
7f2530a
build: bump version; update feed
line0 May 23, 2026
ff8495a
fix: typo in ModuleLoader breaking optional module presence checks
line0 May 23, 2026
d0cbeee
refactor: tighten version number validation in updater
line0 May 23, 2026
d16fd64
fix: broken version number display in version errors
line0 May 23, 2026
167d427
fix: typos
line0 May 23, 2026
a1fc3f8
fix: semver parsers allowing invalid values
line0 May 23, 2026
5bc3f45
fix: semantic version toString roundtrip exception when invalid semve…
line0 May 23, 2026
c08a79c
fix: update errors missing information about whether or not a record …
line0 May 24, 2026
80ead7c
fix: broken skip lists in module loader
line0 May 24, 2026
c86e07e
feat: port Logger improvements from sqlite branch
line0 May 26, 2026
5a582f0
fix: nil dereference crash in feed template variable expansion
line0 May 26, 2026
4383018
refactor: add basic type annotations
line0 May 26, 2026
d55348e
refactor: port over FileOps improvements from sqlite branch
line0 May 26, 2026
ad04372
refactor port new ConfigHandler/ConfigView from sqlite branch
line0 May 26, 2026
a3106c9
refactor: add unit tests and extend testing framework (WIP)
line0 May 27, 2026
daa023a
refactor: remove dependency on aegisub.re and aegisub.util
line0 May 28, 2026
228cf7c
refactor: lift dependency on PreciseTimer
line0 May 28, 2026
fc48086
feat: provide an alternative to BadMutex that only uses OS APIs
line0 May 28, 2026
29bca61
feat: provide an alternative to DownloadManager that uses only OS API…
line0 May 29, 2026
2ac3d7a
feat: allow modules to provide import aliases; ship a copy of dkjson …
line0 May 30, 2026
5afefe2
feat: CLI/CI test runner (WIP)
line0 May 31, 2026
c9d561a
fix: logger trying to clean log files when the log dir doesn't exist …
line0 May 31, 2026
09f8db2
fix: broken home directory expansion on linux
line0 May 31, 2026
dd545b3
fix: stall detection and concurrent connection limit for downloader
line0 Jun 1, 2026
3d5c5bb
feat: new FileOps.writeFile() method
line0 Jun 1, 2026
e4b76cc
test: add downloader integration tests; allow unit test to be conditi…
line0 Jun 1, 2026
a77c38f
refactor: TerribleMutex [squash]
line0 Jun 2, 2026
59d6531
test: add additional tests for FileOps.validateFullPath and Common.va…
line0 Jun 2, 2026
1c770a6
docs: add JSON schema for the DepCtrl feed
line0 Jun 2, 2026
16bf315
docs: update README.md
line0 Jun 2, 2026
4d4dfe0
build: add cspell settings and dictionaries
line0 Jun 2, 2026
5c08fc9
feat: add bundler script; CLI zip archiver bindings
line0 Jun 4, 2026
91b089a
refactor: add namespace to module paths in repo
line0 Jun 4, 2026
6e4c4e7
feat: CLI deploy command; CLI commands work for external repos; CLI t…
line0 Jun 6, 2026
44a34c2
fix: feed schema inaccuracies
line0 Jun 6, 2026
a0b300a
feat: update hashes and package metadata in feeds; JSON Schema Validator
line0 Jun 7, 2026
50a5723
fix: FileOps.move not recursively creating dirs; wrong error messages
line0 Jun 7, 2026
be570e0
feat: aegisub shim adds ?user directory to lua/moon search path
line0 Jun 7, 2026
5d4a6d0
fix: downloader not creating target file directory structure recursively
line0 Jun 7, 2026
53f1ebd
fix: wrong DepCtrl-related file names, log tags and other inconsisten…
line0 Jun 7, 2026
71b12d5
fix: inaccurate path length limit detection in FileOps
line0 Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .cspell/domain-specific.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Aegisub
BadMutex
copas
CPATH
CTRF
DLUAJIT
DepCtrl
dkjson
FileOps
headlessly
leafo
libaegisub
luafilesystem
luajit
luarocks
luasocket
mimetypes
moonbase
moonc
moonpath
pegasus
PreciseTimer
35 changes: 35 additions & 0 deletions .cspell/ffi.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
CONNECTTIMEOUT
CURLINFO
CURLMOPT
CURLMSG
CURLOPT
ENOENT
ENOTDIR
errornum
FAILONERROR
fclose
FOLLOWLOCATION
fopen
getinfo
gettime
getpid
nfds
NOPROGRESS
nsec
numfds
oflag
O_CREAT
pollfd
setopt
setx
strerror
syscall
timespec
trywait
uintptr
usec
usleep
USERAGENT
wchar
WinINet
WRITEDATA
34 changes: 34 additions & 0 deletions .cspell/lua.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
__newindex
addserver
addthread
chdir
collectgarbage
currentdir
finalizers
cdef
getenv
getmetatable
getsockname
gmatch
gsub
ipairs
lshift
luafilesystem
luajit
luajson
luarocks
metatable
metatables
newproxy
pcall
pcalls
randomseed
rawget
rshift
setmetatable
settimeout
setvbuf
tonumber
tostring
varargs
xpcall
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
61 changes: 61 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Tests

on:
pull_request:
branches:
- 'master'
workflow_dispatch:
inputs:
ref:
description: 'Release tag or branch to scan.'
required: true
default: 'master'

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.ref || github.ref }}

- uses: leafo/gh-actions-lua@v13
with:
luaVersion: "luajit-2.1.0-beta3"
# DepCtrl relies on Lua 5.2 features (table.unpack, __pairs/__len)
luaCompileFlags: "XCFLAGS=-DLUAJIT_ENABLE_LUA52COMPAT"

- uses: leafo/gh-actions-luarocks@v6
# moonscript loader
- run: luarocks install moonscript
# lfs (Aegisub provides an internal copy)
- run: luarocks install luafilesystem
# CLI argument parsing
- run: luarocks install argparse
# mock HTTP server dependencies
- run: luarocks install luasocket
- run: luarocks install copas
- run: luarocks install pegasus
# json schema validation
- run: luarocks install lua-schema
- run: luarocks install lpeg

- name: Run tests
timeout-minutes: 5
run: lua depctrl.lua test

- name: Publish test report
uses: ctrf-io/github-test-reporter@v1
if: ${{ !cancelled() }}
with:
report-path: ./ctrf/*.json
pull-request: ${{ github.event_name == 'pull_request' && true || false }}
overwrite-comment: ${{ github.event_name == 'pull_request' && true || false }}
annotate: false
use-suite-name: true
status-check: true
summary-report: true
failed-report: true
upload-artifact: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/ctrf/*.json
/dist/
/DependencyControl-*.zip
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"files.insertFinalNewline": true
}
Loading
Loading