Monorepo for Aesthetic.Computer
aesthetic.computer
1#!/usr/bin/env fish
2
3function usage
4 echo "Usage: ssl-install.fish [--install-only]"
5 echo " --install-only Only install the SSL certificates, do not generate them."
6end
7
8# Parse arguments
9set INSTALL_ONLY 0
10for arg in $argv
11 switch $arg
12 case --install-only
13 set INSTALL_ONLY 1
14 case "*"
15 usage
16 exit 1
17 end
18end
19
20# Determine OS
21set OS (uname)
22
23# Get the script directory
24set SCRIPT_DIR (dirname (status --current-filename))
25cd $SCRIPT_DIR
26
27echo "🔧 Running ssl-install.fish (install only: $INSTALL_ONLY)"
28
29# Generate certs if not install-only
30if test $INSTALL_ONLY -eq 0
31 # Build list of domains/IPs to include in certificate
32 set -l domains localhost aesthetic.local sotce.local 127.0.0.1 0.0.0.0
33
34 # Add HOST_IP if set
35 if test -n "$HOST_IP"
36 set -a domains $HOST_IP
37 end
38
39 # Add GitHub Codespace URLs if in Codespaces
40 if test -n "$CODESPACE_NAME"; and test -n "$GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN"
41 # Add wildcard for all codespace ports
42 set -a domains "*.$GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN"
43 # Add specific URLs for common ports
44 set -a domains "$CODESPACE_NAME-8888.$GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN"
45 set -a domains "$CODESPACE_NAME-8111.$GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN"
46 set -a domains "$CODESPACE_NAME-8889.$GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN"
47 echo "🌐 Adding GitHub Codespace domains to certificate"
48 end
49
50 mkcert --cert-file localhost.pem --key-file localhost-key.pem $domains >/dev/null 2>&1
51 command cat localhost.pem localhost-key.pem >combined.pem
52 openssl x509 -outform der -in combined.pem -out localhost.crt
53 cp localhost.crt ../system/public/aesthetic.crt
54end
55
56# Install cert
57set CERT_FILE "localhost.pem"
58if test -f $CERT_FILE
59 switch $OS
60 case Linux
61 sudo cp $CERT_FILE /etc/pki/ca-trust/source/anchors/
62 sudo update-ca-trust extract
63 case Darwin
64 sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain $CERT_FILE
65 case '*'
66 echo "Unsupported OS: $OS"
67 exit 1
68 end
69else
70 echo "🔴 Certificate not found: $CERT_FILE"
71end
72
73cd - 2>/dev/null || true