Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
d9e0aa6
init with very basic flake.nix
chuckadams Oct 30, 2025
6847c2a
add more packages to the base flake
chuckadams Oct 31, 2025
3b77a8d
add .editorconfig to git
chuckadams Oct 31, 2025
50d60d2
add perl to /flake.nix
chuckadams Oct 31, 2025
a452b45
pin flake-utils to hash
chuckadams Oct 31, 2025
61d3be4
add legacy AS scripts
chuckadams Oct 31, 2025
438fea8
update prelude.bash with nounset and pipefail
chuckadams Oct 31, 2025
b44116f
update scripts cd to PLUGINS_DIR and THEMES_DIR
chuckadams Oct 31, 2025
4371ead
add auto svn cleanup to update-plugin-trunk
chuckadams Oct 31, 2025
dc6e6eb
pare down legacy scripts to archive-plugin
chuckadams Oct 31, 2025
0c8fe49
chmod +x bin/svn-changed-*
chuckadams Oct 31, 2025
4dda143
add some WIP docker image generation
chuckadams Nov 2, 2025
656eaa4
start of mkbuilder tool
chuckadams Nov 2, 2025
f355833
add prelude.d/reset.bash to set PATH only to /nix/* dirs
chuckadams Nov 2, 2025
54f6548
add missing git dependency
chuckadams Nov 2, 2025
24b6842
add liberal comments to docker section of flake.nix
chuckadams Nov 3, 2025
8e747f8
use /usr/bin/env in bash shebangs
chuckadams Nov 3, 2025
a41a915
zap unnecessary || die checks after cd
chuckadams Nov 3, 2025
d700939
add in-new-builder script
chuckadams Nov 3, 2025
ae23eb2
clear out ASPIREBUILD_* vars before executing in in-new-builder
chuckadams Nov 3, 2025
afbb1ce
symlink _common/lib to mkbuilder/lib
chuckadams Nov 3, 2025
7a711d9
renae mkbuilder -> builder
chuckadams Nov 3, 2025
ce1d831
rename in-new-builder -> with-new-builder
chuckadams Nov 3, 2025
92ea77f
use single ASPIREBUILD for root, clone to .aspirebuild subdir
chuckadams Nov 4, 2025
0a22a6e
use absolute path for __HERE
chuckadams Nov 4, 2025
ea76554
more flake fiddling
chuckadams Nov 4, 2025
bbe6da5
zap update-plugin-trunk
chuckadams Nov 4, 2025
710b5c1
update algorithm for finding/creating $ASPIRESYNC
chuckadams Nov 4, 2025
803de1c
add init-builder-flake but keep it manual for now
chuckadams Nov 4, 2025
ba51208
add default justfile
chuckadams Nov 4, 2025
d138375
use path:. for builder flake in justfile
chuckadams Nov 4, 2025
f1032d5
add php-init to justfile
chuckadams Nov 4, 2025
7e9d32b
switch to flake-parts
chuckadams Nov 10, 2025
a1c86b6
use flake-root to set ASPIREBUILD
chuckadams Nov 10, 2025
02eb274
init builders with template
chuckadams Nov 10, 2025
2b9144b
remove useless root justfile
chuckadams Nov 10, 2025
a223a95
add ffi extension to flake.nix
chuckadams Nov 12, 2025
fee146d
add intl extension to flake
chuckadams Nov 12, 2025
710f23e
build all needed extensions
chuckadams Nov 12, 2025
41176df
document The One Flake
chuckadams Nov 13, 2025
48f3d16
use dontInstall = true; add note about $ASPIREBUILD's impurity
chuckadams Nov 13, 2025
4314d4e
initial readme parser WIP
chuckadams Nov 13, 2025
bf1b093
add several required extensions
chuckadams Nov 13, 2025
a3a1869
require erusev/parsedown:1.7
chuckadams Nov 13, 2025
810c459
add symfony/var-dumper
chuckadams Nov 14, 2025
35111b9
add Regex::allMatches
chuckadams Nov 14, 2025
cec3f88
toss out all sanity and sanitization
chuckadams Nov 14, 2025
ae04642
fork Parsedown into Sideways (working title)
chuckadams Nov 15, 2025
91cdc7d
first pass at fixing ide warnings in Sideways.php
chuckadams Nov 15, 2025
9ee873d
static types in Sideways
chuckadams Nov 15, 2025
81419cf
replace dynamic method naming with match tables
chuckadams Nov 15, 2025
f0a630e
add header parsers for plugins and themes
chuckadams Nov 15, 2025
8e3f556
64K ought to be enough for everybody
chuckadams Nov 15, 2025
319033e
push reset on Sideways and properly fork Parsedown
chuckadams Nov 15, 2025
ba6dae4
port over parsedown-extra as well (tests not yet working)
chuckadams Nov 15, 2025
8cb6eb0
fork Sideways from Parsedown
chuckadams Nov 15, 2025
77baae3
switch readme parser to Sideways
chuckadams Nov 15, 2025
aa26cd9
reformat and add license
chuckadams Nov 15, 2025
fe23209
rm version check in SidewaysExtra
chuckadams Nov 15, 2025
ddf23a7
remove setters from Sideways API
chuckadams Nov 15, 2025
08006b8
clear up first round of IDE warnings
chuckadams Nov 15, 2025
3dae4f8
use direct method references, mostly in _dispatch method
chuckadams Nov 15, 2025
ff45f0c
absorb parsedown-extra except for two failing tests
chuckadams Nov 15, 2025
e104aab
zap now-empty SidewaysExtra
chuckadams Nov 15, 2025
e910903
all extra tests now pass
chuckadams Nov 15, 2025
3ca154b
fix warnings in tests
chuckadams Nov 15, 2025
28148e9
actually enable the commonmark tests
chuckadams Nov 15, 2025
fccd65e
exclude commonmark tests by default
chuckadams Nov 16, 2025
6110187
drop instance() method and TestSideways subclass
chuckadams Nov 16, 2025
9453604
rearrange methods, text() -> renderToHtml()
chuckadams Nov 16, 2025
915add4
add types where missing
chuckadams Nov 16, 2025
6374d09
use _dispatch on blocks
chuckadams Nov 16, 2025
7e9c127
split DefinitionData into three state props
chuckadams Nov 16, 2025
42d2492
start OO refactor with Line
chuckadams Nov 16, 2025
cf655b6
use classes like enums
chuckadams Nov 16, 2025
77040f3
use more generators
chuckadams Nov 16, 2025
d07a5d4
use Excerpt class
chuckadams Nov 16, 2025
d614b03
add Element class
chuckadams Nov 16, 2025
a5c66b3
start building basic phpunit tests
chuckadams Nov 16, 2025
e420bb9
expand on basic test suite, include expected failures
chuckadams Nov 16, 2025
42b83e6
use codeception/verify
chuckadams Nov 16, 2025
c884984
run commonmark suite from json spec, still disabled by default
chuckadams Nov 16, 2025
9777674
kick out Sideways
chuckadams Nov 16, 2025
80ec7f9
switch to league/commonmark
chuckadams Nov 16, 2025
c927dbd
fix section aliasing
chuckadams Nov 16, 2025
3cdbc6b
demonstrate the need for sanitizing
chuckadams Nov 16, 2025
d7ea20d
add ezyang/html-purifier
chuckadams Nov 16, 2025
1c6b1a0
use Ds\Deque for input lines
chuckadams Nov 16, 2025
7e29f34
"fixup" markdown for faq section (html fixup is still todo)
chuckadams Nov 17, 2025
72a90aa
add league/uri-components because i know we'll need it later
chuckadams Nov 18, 2025
9ba6243
Merge branch 'main' into readme_parser
chuckadams Nov 23, 2025
8d6b1d5
finish renaming to FAIR Forge
chuckadams Nov 23, 2025
2d7a8c5
add PartialPluginInformation
chuckadams Nov 23, 2025
7bbe9bb
add PartialPluginInformationTest
chuckadams Nov 23, 2025
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
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{nix,yml,yaml}]
indent_size = 2
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ignore all dotfiles and dotdirs by default, with exceptions below
.*
!.gitignore
!.editorconfig

builders/
node_modules/
tmp/
vendor/

*.log
*.tmp

# default output file for 'nix build'
result
33 changes: 24 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,25 @@
# FAIR Forge

Immediate goals:
1. convert legacy WordPress packages to FAIR-formatted packages & package-meta;
## Requirements

* Nix, with flakes support. I _highly_ recommend the [Determinate Systems installer](https://docs.determinate.systems/)
* Recommended: `direnv` (should be available on apt/brew/dnf/pacman/etc)

**Note:** Nix is required to develop fair-forge itself, but will not be required to run builders -- however, those will likely require a container runtime such as Docker.

## Quick Start

```
echo "use flake" > .envrc && direnv allow # if using direnv
nix develop
```

## Immediate goals

1. convert legacy WordPress packages to FAIR-formatted packages & package-meta;
2. run automated code validation and perform external verifications on the code & attestations in the package meta.

Important: This project will use the MIT license. Any GPL (or similar) code *must* be in a separate repository as a standalone service for use by aspirebuild, and not integrated with it.
Important: This project will use the MIT license. Any GPL (or similar) code *must* be in a separate repository as a standalone service for use by FAIR Forge, and not integrated with it.

## Work In Progress

Expand All @@ -19,12 +34,12 @@ Some vague notes below. Things will take a more defined shape as we build out t
* Focus on attested reproducible builds
* Tools have minimal privileges, limited to only stdin/stdout where feasible
* Tools are selected, configured, and packaged together in a **builder**
* environments are as hermetic as possible (containers or nix)
* attestations are created for each tool's run
* dispense capabilities to tools that need more than stdin/stdout
* continuously reconcile input state to output state
* All input and output state traces to a hash (file or parent dir hash)
* validate all claims/attestations (e.g. hashes) on completion
* environments are as hermetic as possible (containers or nix)
* attestations are created for each tool's run
* dispense capabilities to tools that need more than stdin/stdout
* continuously reconcile input state to output state
* All input and output state traces to a hash (file or parent dir hash)
* validate all claims/attestations (e.g. hashes) on completion

## Potential Tools (old, needs update)

Expand Down
38 changes: 38 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"name": "fairpm/fair-forge",
"authors": [
{
"name": "Chuck Adams",
"email": "chaz@chaz.works"
}
],
"require": {
"thecodingmachine/safe": "^3.3",
"ext-intl": "*",
"ext-mbstring": "*",
"symfony/var-dumper": "^7.3",
"ext-dom": "*",
"ext-libxml": "*",
"league/commonmark": "^2.7",
"ezyang/htmlpurifier": "^4.19",
"ext-ds": "*",
"league/uri-polyfill": "^7.6",
"league/uri-components": "^7.6"
},
"require-dev": {
"roave/security-advisories": "dev-latest",
"phpunit/phpunit": "^12.4",
"codeception/verify": "^3.3"
},
"autoload": {
"psr-4": {
"FAIR\\Forge\\": "src",
"FAIR\\Forge\\Tools\\WpPlugin\\": "tools/wp-plugin/src/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\FAIR\\Forge\\Tools\\WpPlugin\\": "tools/wp-plugin/tests/"
}
}
}
Loading