Skip to content

Commit 989dfff

Browse files
committed
chore: align with hub conventions
1 parent 2e1b9af commit 989dfff

9 files changed

Lines changed: 220 additions & 0 deletions

File tree

.github/workflows/ci.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ concurrency:
2424
cancel-in-progress: false
2525

2626
jobs:
27+
reuse-compliance:
28+
name: REUSE License Compliance
29+
runs-on: ubuntu-latest
30+
steps:
31+
- uses: actions/checkout@v6
32+
- uses: fsfe/reuse-action@v5
33+
2734
checks:
2835
runs-on: ubuntu-latest
2936
steps:

LICENSES/FSL-1.1-ALv2.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Functional Source License, Version 1.1, ALv2 Future License
2+
3+
## Abbreviation
4+
5+
FSL-1.1-ALv2
6+
7+
## Notice
8+
9+
Copyright 2025 Platform Engineering Labs Inc.
10+
11+
## Terms and Conditions
12+
13+
### Licensor ("We")
14+
15+
The party offering the Software under these Terms and Conditions.
16+
17+
### The Software
18+
19+
The "Software" is each version of the software that we make available under
20+
these Terms and Conditions, as indicated by our inclusion of these Terms and
21+
Conditions with the Software.
22+
23+
### License Grant
24+
25+
Subject to your compliance with this License Grant and the Patents,
26+
Redistribution and Trademark clauses below, we hereby grant you the right to
27+
use, copy, modify, create derivative works, publicly perform, publicly display
28+
and redistribute the Software for any Permitted Purpose identified below.
29+
30+
### Permitted Purpose
31+
32+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use
33+
means making the Software available to others in a commercial product or
34+
service that:
35+
36+
1. substitutes for the Software;
37+
38+
2. substitutes for any other product or service we offer using the Software
39+
that exists as of the date we make the Software available; or
40+
41+
3. offers the same or substantially similar functionality as the Software.
42+
43+
Permitted Purposes specifically include using the Software:
44+
45+
1. for your internal use and access;
46+
47+
2. for non-commercial education;
48+
49+
3. for non-commercial research; and
50+
51+
4. in connection with professional services that you provide to a licensee
52+
using the Software in accordance with these Terms and Conditions.
53+
54+
### Patents
55+
56+
To the extent your use for a Permitted Purpose would necessarily infringe our
57+
patents, the license grant above includes a license under our patents. If you
58+
make a claim against any party that the Software infringes or contributes to
59+
the infringement of any patent, then your patent license to the Software ends
60+
immediately.
61+
62+
### Redistribution
63+
64+
The Terms and Conditions apply to all copies, modifications and derivatives of
65+
the Software.
66+
67+
If you redistribute any copies, modifications or derivatives of the Software,
68+
you must include a copy of or a link to these Terms and Conditions and not
69+
remove any copyright notices provided in or with the Software.
70+
71+
### Disclaimer
72+
73+
THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR
74+
IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A PARTICULAR
75+
PURPOSE, MERCHANTABILITY, TITLE OR NON-INFRINGEMENT.
76+
77+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE
78+
SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES,
79+
EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
80+
81+
### Trademarks
82+
83+
Except for displaying the License Details and identifying us as the origin of
84+
the Software, you have no right under these Terms and Conditions to use our
85+
trademarks, trade names, service marks or product names.
86+
87+
## Grant of Future License
88+
89+
We hereby irrevocably grant you an additional license to use the Software under
90+
the Apache License, Version 2.0 that is effective on the second anniversary of
91+
the date we make the Software available. On or after that date, you may use the
92+
Software under the Apache License, Version 2.0, in which case the following
93+
will apply:
94+
95+
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
96+
this file except in compliance with the License.
97+
98+
You may obtain a copy of the License at
99+
100+
http://www.apache.org/licenses/LICENSE-2.0
101+
102+
Unless required by applicable law or agreed to in writing, software distributed
103+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
104+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
105+
specific language governing permissions and limitations under the License.

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ test-integration:
5757
lint:
5858
golangci-lint run
5959

60+
## lint-reuse: Check REUSE license compliance
61+
lint-reuse:
62+
./scripts/lint_reuse.sh
63+
64+
## add-license: Add license headers to source files (idempotent)
65+
add-license:
66+
./scripts/add_license.sh
67+
6068
## verify-schema: Validate PKL schema files
6169
## Checks that schema files are well-formed and follow formae conventions.
6270
verify-schema:

REUSE.toml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
version = 1
2+
3+
# Configuration files
4+
[[annotations]]
5+
path = ["**/*.yml", "**/*.yaml", "**/*.json", "**/*.mod", "**/*.sum", "**/*.lock", "**/*.toml", ".gitignore", "**/.gitignore", "Makefile", "**/PklProject", "Opkgfile"]
6+
SPDX-FileCopyrightText = "© 2025 Platform Engineering Labs Inc."
7+
SPDX-License-Identifier = "FSL-1.1-ALv2"
8+
9+
# Shell scripts in scripts/ directory
10+
[[annotations]]
11+
path = ["scripts/**/*.sh"]
12+
SPDX-FileCopyrightText = "© 2025 Platform Engineering Labs Inc."
13+
SPDX-License-Identifier = "FSL-1.1-ALv2"
14+
15+
# Documentation files
16+
[[annotations]]
17+
path = ["**/*.md", "**/*.html"]
18+
SPDX-FileCopyrightText = "© 2025 Platform Engineering Labs Inc."
19+
SPDX-License-Identifier = "FSL-1.1-ALv2"
20+
21+
# Binary and generated test files
22+
[[annotations]]
23+
path = ["**/*.zip", "**/*.pcf", "**/*.log", "**/*.txt"]
24+
SPDX-FileCopyrightText = "© 2025 Platform Engineering Labs Inc."
25+
SPDX-License-Identifier = "FSL-1.1-ALv2"
26+
27+
# Misc plain-text and example/env files
28+
[[annotations]]
29+
path = [".env.example", "**/VERSION"]
30+
SPDX-FileCopyrightText = "© 2025 Platform Engineering Labs Inc."
31+
SPDX-License-Identifier = "FSL-1.1-ALv2"
32+
33+
# Dockerfile
34+
[[annotations]]
35+
path = ["**/Dockerfile*"]
36+
SPDX-FileCopyrightText = "© 2025 Platform Engineering Labs Inc."
37+
SPDX-License-Identifier = "FSL-1.1-ALv2"

examples/debug-stack.pkl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/*
2+
* © 2025 Platform Engineering Labs Inc.
3+
*
4+
* SPDX-License-Identifier: FSL-1.1-ALv2
5+
*/
6+
17
amends "@formae/forma.pkl"
28
import "@formae/formae.pkl"
39
import "@aws/aws.pkl"

examples/stack-test.pkl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/*
2+
* © 2025 Platform Engineering Labs Inc.
3+
*
4+
* SPDX-License-Identifier: FSL-1.1-ALv2
5+
*/
6+
17
amends "@formae/forma.pkl"
28
import "@formae/formae.pkl"
39
import "@aws/aws.pkl"

examples/test-stack.pkl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
/*
2+
* © 2025 Platform Engineering Labs Inc.
3+
*
4+
* SPDX-License-Identifier: FSL-1.1-ALv2
5+
*/
6+
17
amends "@formae/forma.pkl"
28
import "@formae/formae.pkl"
39

scripts/add_license.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/bin/bash
2+
# Add license headers to source files (idempotent)
3+
4+
if ! command -v reuse >/dev/null 2>&1; then
5+
echo "Error: REUSE tool not installed."
6+
echo "Install with: pipx install reuse"
7+
exit 1
8+
fi
9+
10+
echo "Adding license headers to source files (this is idempotent)..."
11+
12+
echo "Processing Go files..."
13+
find . -name "*.go" -not -path "*/.git/*" | \
14+
xargs reuse annotate --copyright="Platform Engineering Labs Inc." --year=2025 \
15+
--copyright-prefix=symbol --license=FSL-1.1-ALv2
16+
17+
echo "Processing Pkl files..."
18+
find . -name "*.pkl" -not -path "*/.git/*" | \
19+
xargs reuse annotate --copyright="Platform Engineering Labs Inc." --year=2025 \
20+
--copyright-prefix=symbol --license=FSL-1.1-ALv2 --style c
21+
22+
echo "Processing Python files..."
23+
find . -name "*.py" -not -path "*/.git/*" | \
24+
xargs reuse annotate --copyright="Platform Engineering Labs Inc." --year=2025 \
25+
--copyright-prefix=symbol --license=FSL-1.1-ALv2 || true
26+
27+
echo "Processing Shell scripts..."
28+
find . -name "*.sh" -not -path "*/.git/*" -not -path "*/scripts/*" | \
29+
xargs reuse annotate --copyright="Platform Engineering Labs Inc." --year=2025 \
30+
--copyright-prefix=symbol --license=FSL-1.1-ALv2 || true
31+
32+
echo "Done! Run 'make lint-reuse' to verify"
33+

scripts/lint_reuse.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/bash
2+
# Check REUSE compliance (optional for developers, required in CI)
3+
4+
if ! command -v reuse >/dev/null 2>&1; then
5+
echo "REUSE tool not installed. Install with: pipx install reuse"
6+
echo "Skipping local check - CI will catch any issues."
7+
exit 0
8+
fi
9+
10+
echo "Checking REUSE compliance..."
11+
reuse lint
12+

0 commit comments

Comments
 (0)