79 lines
2.6 KiB
Plaintext
79 lines
2.6 KiB
Plaintext
#!/usr/bin/env nu
|
|
|
|
use std/log
|
|
|
|
# Check release dependencies
|
|
export def main [] {
|
|
print "Checking Release Dependencies"
|
|
print "=============================\n"
|
|
|
|
log info "Checking .env file..."
|
|
if not (".env" | path exists) {
|
|
error make {msg: ".env file not found"}
|
|
}
|
|
log debug " .env file found"
|
|
|
|
log info "Validating Sentry configuration..."
|
|
# Get env variables dynamically and reduce the table into a record
|
|
let env_vars = (
|
|
open .env
|
|
| lines
|
|
| where { |line| ($line | str trim) != "" and not ($line | str starts-with "#") }
|
|
| each { |line|
|
|
let parts = ($line | split column "=" key value | first)
|
|
{ name: ($parts.key | str trim), value: ($parts.value | str trim) }
|
|
}
|
|
| reduce --fold {} { |it, acc| $acc | merge { ($it.name): $it.value } }
|
|
)
|
|
|
|
let sentry_org = $env_vars | get SENTRY_ORG?
|
|
if $sentry_org != "longhorn-developers" {
|
|
error make {msg: $"SENTRY_ORG must be set to longhorn-developers in .env\nGot: ($sentry_org)"}
|
|
}
|
|
log debug $" SENTRY_ORG: ($sentry_org)"
|
|
|
|
|
|
let sentry_project = $env_vars | get SENTRY_PROJECT?
|
|
if $sentry_project != "ut-registration-plus" {
|
|
error make {msg: $"SENTRY_PROJECT must be set to ut-registration-plus in .env\nGot: ($sentry_project)"}
|
|
}
|
|
log debug $" SENTRY_PROJECT: ($sentry_project)"
|
|
|
|
let sentry_auth_token = $env_vars | get SENTRY_AUTH_TOKEN?
|
|
if ($sentry_auth_token | is-empty) {
|
|
error make {msg: "SENTRY_AUTH_TOKEN must be populated in .env"}
|
|
}
|
|
log debug " SENTRY_AUTH_TOKEN: [set]"
|
|
|
|
#Check for required commands
|
|
mut missing_deps = []
|
|
|
|
if (which pnpm | is-empty) {
|
|
$missing_deps = ($missing_deps | append "pnpm")
|
|
}
|
|
if (which npm | is-empty) {
|
|
$missing_deps = ($missing_deps | append "npm")
|
|
}
|
|
if (which conventional-changelog | is-empty) {
|
|
$missing_deps = ($missing_deps | append "conventional-changelog")
|
|
}
|
|
|
|
log info "Checking VCS"
|
|
if not (which jj | is-empty) {
|
|
log debug " Version control: jujutsu"
|
|
} else if not (which git | is-empty) {
|
|
log debug " Version control: git"
|
|
} else {
|
|
$missing_deps = ($missing_deps | append "git or jujutsu")
|
|
}
|
|
|
|
if ($missing_deps | length) > 0 {
|
|
let deps: string = $missing_deps | str join ", "
|
|
let error_msg: string = ("Missing required dependencies: " | append $deps | str join)
|
|
error make { msg: $error_msg }
|
|
}
|
|
|
|
log info "All required commands found"
|
|
log info "All dependency checks passed"
|
|
}
|