chore: publish command & oxfmt init

This commit is contained in:
2025-12-08 14:42:44 -05:00
parent 61bc17efee
commit c2d1d85180
5 changed files with 101 additions and 8 deletions

View File

@@ -163,6 +163,7 @@ build_nodejs: .make/build_nodejs
.make/build_nodejs: .make/generate_nodejs
cd sdk/nodejs/ && \
pnpm install && \
pnpm oxfmt && \
pnpm tsc && \
cp ../../README.md ../../LICENSE package.json pnpm-lock.yaml ./bin/
@touch $@

View File

@@ -11,3 +11,93 @@ sops exec-env secrets.sops.env 'earthly --secret TOKEN=$TOKEN --push -i +nodejs'
```bash
sops exec-env secrets.sops.env 'earthly --secret TOKEN=$TOKEN --push -i +provider'
```
## publish (version)
> publish the provider to gitea host. Include version number without v prefix
```bash
#=====================================================================
# upload_tarballs
#
# Upload every *.tar.gz file that contains a given version string from
# ./bin/ to a Gitea genericpackage repository.
#
# Authentication is taken from the default ~/.netrc file (via --netrc).
#
# Call signature (simplified):
# upload_tarballs <USER/PACKAGE> <VERSION>
#
# <USER/PACKAGE> username and package in the form "user/pkg"
# <VERSION> version string to match (required)
#
# Host resolution:
# * If $GITEA_HOST is set, it is used.
# * Otherwise the builtin default https://gitea.example.com is used.
#
# Example:
# export GITEA_HOST="https://gitea.example.com"
# upload_tarballs alice/my_pkg 2.5.0
#=====================================================================
upload_tarballs() {
# -----------------------------------------------------------------
# 1⃣ Argument handling and defaults
# -----------------------------------------------------------------
local user_pkg="${1:?Missing <USER/PACKAGE> argument}"
local version="${2:?Missing <VERSION> argument}"
# Extract username & genericpackage from the "user/pkg" argument
if [[ "$user_pkg" != */* ]]; then
echo "ERROR: <USER/PACKAGE> must be in the form 'username/package'" >&2
return 1
fi
local username="${user_pkg%%/*}"
local package="${user_pkg##*/}"
# Sanity checks
[[ -n "$username" && -n "$package" ]] || {
echo "ERROR: Could not parse username or package from '$user_pkg'" >&2
return 1
}
# -----------------------------------------------------------------
# 2⃣ Find matching tarballs and upload them
# -----------------------------------------------------------------
local files_found=0
# The whileloop runs in the current shell (process substitution) so
# the counter is visible after the loop finishes.
while IFS= read -r -d '' file; do
files_found=$((files_found + 1))
local filename
filename="$(basename "$file")"
# Build the Gitea API URL:
# https://HOST/api/packages/USERNAME/generic/PACKAGE/VERSION/FILE
local url="https://git.kalinow.ski/api/packages/${username}/generic/${package}/${version}/${filename}"
echo "Uploading $url"
curl --silent --show-error --fail --netrc --upload-file "$file" "$url"
local rc=$?
if (( rc != 0 )); then
echo "❌ Upload failed for $file (curl exit code $rc)" >&2
else
echo "✅ Uploaded $filename"
fi
done < <(find ./bin -type f -name "*${version}*.tar.gz" -print0)
# -----------------------------------------------------------------
# 4⃣ Final report
# -----------------------------------------------------------------
if (( files_found == 0 )); then
echo "⚠️ No *.tar.gz files containing version '${version}' were found in ./bin/."
return 1
else
echo "✅ Done $files_found file(s) processed."
fi
}
upload_tarballs kiterun/pulumi-incus $version
```

View File

@@ -167,6 +167,10 @@ func Provider() tfbridge.ProviderInfo {
PackageName: "@kiterun/incus",
TypeScriptVersion: "^5.8.3",
UseTypeOnlyReferences: true,
DevDependencies: map[string]string{
"@types/node": "^24.10.1",
"oxfmt": "^0.17.0",
},
},
Python: &tfbridge.PythonInfo{
// RespectSchemaVersion ensures the SDK is generated linking to the correct version of the provider.

5
sdk/.oxfmtrc.json generated Normal file
View File

@@ -0,0 +1,5 @@
{
"printWidth": 100,
"useTabs": true,
"tabWidth": 4
}

View File

@@ -1,7 +0,0 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
// Use 80 if migrating from Prettier; 100 is the Oxfmt default!
"printWidth": 100,
"useTabs": true,
"tabWidth": 4
}