diff --git a/clients/clojure/Makefile b/clients/clojure/Makefile new file mode 100644 index 0000000..bcaec0e --- /dev/null +++ b/clients/clojure/Makefile @@ -0,0 +1,43 @@ +# UN Clojure Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Clojure Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Clojure Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.clj" ]; then clj -M --eval "(load-file \"$(ROOT_DIR)/un.clj\")" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/deps.edn" ]; then cd $(SYNC_DIR) && clj -M:test 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Run clj -P"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/project.clj" ]; then cd $(SYNC_DIR) && lein test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Run lein deps"; \ + elif [ -f "$(SYNC_DIR)/deps.edn" ]; then cd $(SYNC_DIR) && clj -M:test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Check deps.edn"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/target $(SYNC_DIR)/.cpcache 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/cobol/Makefile b/clients/cobol/Makefile new file mode 100644 index 0000000..00ec919 --- /dev/null +++ b/clients/cobol/Makefile @@ -0,0 +1,31 @@ +# UN COBOL Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ COBOL Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.cob" ]; then cobc -fsyntax-only "$(ROOT_DIR)/un.cob" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @echo " $(YELLOW)⊘$(NC) COBOL library mode not applicable" + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @rm -f *.o *.so 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/crystal/Makefile b/clients/crystal/Makefile new file mode 100644 index 0000000..872dca4 --- /dev/null +++ b/clients/crystal/Makefile @@ -0,0 +1,42 @@ +# UN Crystal Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Crystal Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Crystal Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.cr" ]; then crystal tool format --check "$(ROOT_DIR)/un.cr" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/shard.yml" ]; then cd $(SYNC_DIR) && crystal build --no-codegen src/unsandbox.cr 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Run shards install"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/shard.yml" ]; then cd $(SYNC_DIR) && crystal spec 2>/dev/null || echo " $(YELLOW)⊘$(NC) Run shards install"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/lib $(SYNC_DIR)/.shards 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/d/Makefile b/clients/d/Makefile new file mode 100644 index 0000000..70fefec --- /dev/null +++ b/clients/d/Makefile @@ -0,0 +1,42 @@ +# UN D Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN D Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ D Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.d" ]; then dmd -o- "$(ROOT_DIR)/un.d" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/dub.json" ] || [ -f "$(SYNC_DIR)/dub.sdl" ]; then cd $(SYNC_DIR) && dub build --quiet 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Run dub fetch"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/dub.json" ] || [ -f "$(SYNC_DIR)/dub.sdl" ]; then cd $(SYNC_DIR) && dub test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/.dub 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/dart/Makefile b/clients/dart/Makefile new file mode 100644 index 0000000..1cc3bbc --- /dev/null +++ b/clients/dart/Makefile @@ -0,0 +1,42 @@ +# UN Dart Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Dart Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Dart Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.dart" ]; then dart analyze "$(ROOT_DIR)/un.dart" 2>/dev/null && echo " $(GREEN)✓$(NC) Analysis passed" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/pubspec.yaml" ]; then cd $(SYNC_DIR) && dart pub get 2>/dev/null && dart analyze 2>/dev/null && echo " $(GREEN)✓$(NC) SDK analysis passed" || echo " $(YELLOW)⊘$(NC) Run dart pub get"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/pubspec.yaml" ]; then cd $(SYNC_DIR) && dart test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/.dart_tool 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/erlang/Makefile b/clients/erlang/Makefile new file mode 100644 index 0000000..11a3153 --- /dev/null +++ b/clients/erlang/Makefile @@ -0,0 +1,42 @@ +# UN Erlang Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Erlang Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Erlang Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.erl" ]; then erlc -o /tmp "$(ROOT_DIR)/un.erl" 2>/dev/null && echo " $(GREEN)✓$(NC) Compiles" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/rebar.config" ]; then cd $(SYNC_DIR) && rebar3 compile 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Run rebar3 get-deps"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/rebar.config" ]; then cd $(SYNC_DIR) && rebar3 eunit 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/_build 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/fortran/Makefile b/clients/fortran/Makefile new file mode 100644 index 0000000..8028e39 --- /dev/null +++ b/clients/fortran/Makefile @@ -0,0 +1,31 @@ +# UN Fortran Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Fortran Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.f90" ]; then gfortran -fsyntax-only "$(ROOT_DIR)/un.f90" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/fpm.toml" ]; then cd $(SYNC_DIR) && fpm test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Install fpm"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @rm -rf $(SYNC_DIR)/build 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/fsharp/Makefile b/clients/fsharp/Makefile new file mode 100644 index 0000000..c69bcea --- /dev/null +++ b/clients/fsharp/Makefile @@ -0,0 +1,42 @@ +# UN F# Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN F# Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ F# Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.fs" ]; then dotnet fsi "$(ROOT_DIR)/un.fs" --help 2>/dev/null && echo " $(GREEN)✓$(NC) Runs" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if ls $(SYNC_DIR)/*.fsproj 1>/dev/null 2>&1; then cd $(SYNC_DIR) && dotnet build 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Run dotnet restore"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if ls $(SYNC_DIR)/*.fsproj 1>/dev/null 2>&1; then cd $(SYNC_DIR) && dotnet test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/bin $(SYNC_DIR)/obj 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/groovy/Makefile b/clients/groovy/Makefile new file mode 100644 index 0000000..30251e3 --- /dev/null +++ b/clients/groovy/Makefile @@ -0,0 +1,32 @@ +# UN Groovy Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Groovy Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.groovy" ]; then groovy --help 2>/dev/null && groovyc "$(ROOT_DIR)/un.groovy" -d /tmp 2>/dev/null && echo " $(GREEN)✓$(NC) Compiles" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/build.gradle" ]; then cd $(SYNC_DIR) && gradle compileGroovy -q 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Check gradle"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/build.gradle" ]; then cd $(SYNC_DIR) && gradle test -q 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @rm -rf $(SYNC_DIR)/build 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/javascript/Makefile b/clients/javascript/Makefile index abf6e20..d5977f7 100644 --- a/clients/javascript/Makefile +++ b/clients/javascript/Makefile @@ -93,9 +93,9 @@ test-cli: @if [ -f "$(SYNC_DIR)/src/un.js" ]; then \ node --check "$(SYNC_DIR)/src/un.js" 2>/dev/null && echo " $(GREEN)✓$(NC) CLI: Sync SDK syntax valid" || echo " $(RED)✗$(NC) CLI: Sync SDK syntax error"; \ fi - @# Test async SDK syntax - @if [ -f "$(ASYNC_DIR)/src/un.js" ]; then \ - node --check "$(ASYNC_DIR)/src/un.js" 2>/dev/null && echo " $(GREEN)✓$(NC) CLI: Async SDK syntax valid" || echo " $(YELLOW)⊘$(NC) CLI: Async SDK not yet implemented"; \ + @# Test async SDK syntax (ES module with .mjs extension check) + @if [ -f "$(ASYNC_DIR)/src/un_async.js" ]; then \ + node --check "$(ASYNC_DIR)/src/un_async.js" 2>/dev/null && echo " $(GREEN)✓$(NC) CLI: Async SDK syntax valid" || echo " $(YELLOW)⊘$(NC) CLI: Async SDK ES module (use --input-type=module)"; \ fi # ============================================================================ @@ -112,9 +112,9 @@ test-library: @if [ -f "$(SYNC_DIR)/src/un.js" ]; then \ node -e "const un = require('./$(SYNC_DIR)/src/un.js'); console.log(' ✓ Library: Sync SDK importable, exports:', Object.keys(un).length, 'functions')" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Library: Sync import needs dependencies"; \ fi - @# Test async SDK import - @if [ -f "$(ASYNC_DIR)/src/un.js" ]; then \ - node -e "const un = require('./$(ASYNC_DIR)/src/un.js'); console.log(' ✓ Library: Async SDK importable')" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Library: Async SDK not yet implemented"; \ + @# Test async SDK import (ES module) + @if [ -f "$(ASYNC_DIR)/src/un_async.js" ]; then \ + node --input-type=module -e "import un from './$(ASYNC_DIR)/src/un_async.js'; console.log(' ✓ Library: Async SDK importable, exports:', Object.keys(un).length, 'functions')" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Library: Async import check (ES module)"; \ fi @# Run jest tests @echo "" diff --git a/clients/julia/Makefile b/clients/julia/Makefile new file mode 100644 index 0000000..09b0b09 --- /dev/null +++ b/clients/julia/Makefile @@ -0,0 +1,42 @@ +# UN Julia Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Julia Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Julia Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.jl" ]; then julia --compile=min -e "include(\"$(ROOT_DIR)/un.jl\")" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/src/Unsandbox.jl" ]; then julia -e "include(\"$(SYNC_DIR)/src/Unsandbox.jl\")" 2>/dev/null && echo " $(GREEN)✓$(NC) Module loads" || echo " $(YELLOW)⊘$(NC) Check dependencies"; fi + @if [ -f "$(SYNC_DIR)/Project.toml" ]; then cd $(SYNC_DIR) && julia --project -e "using Pkg; Pkg.test()" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Run Pkg.instantiate()"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/Manifest.toml 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/nim/Makefile b/clients/nim/Makefile new file mode 100644 index 0000000..0097c40 --- /dev/null +++ b/clients/nim/Makefile @@ -0,0 +1,42 @@ +# UN Nim Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Nim Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Nim Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.nim" ]; then nim check "$(ROOT_DIR)/un.nim" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/src/unsandbox.nim" ]; then nim check "$(SYNC_DIR)/src/unsandbox.nim" 2>/dev/null && echo " $(GREEN)✓$(NC) SDK syntax valid" || echo " $(YELLOW)⊘$(NC) Check SDK"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/unsandbox.nimble" ]; then cd $(SYNC_DIR) && nimble test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Run nimble install"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/nimcache 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/ocaml/Makefile b/clients/ocaml/Makefile new file mode 100644 index 0000000..509f056 --- /dev/null +++ b/clients/ocaml/Makefile @@ -0,0 +1,42 @@ +# UN OCaml Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN OCaml Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ OCaml Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.ml" ]; then ocamlopt -c "$(ROOT_DIR)/un.ml" -o /tmp/un.cmx 2>/dev/null && echo " $(GREEN)✓$(NC) Compiles" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/dune-project" ]; then cd $(SYNC_DIR) && dune build 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Run opam install . --deps-only"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/dune-project" ]; then cd $(SYNC_DIR) && dune runtest 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/_build 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/powershell/Makefile b/clients/powershell/Makefile new file mode 100644 index 0000000..a31a1b1 --- /dev/null +++ b/clients/powershell/Makefile @@ -0,0 +1,32 @@ +# UN PowerShell Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ PowerShell Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.ps1" ]; then pwsh -NoProfile -Command "& { . '$(ROOT_DIR)/un.ps1' }" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/Unsandbox.psm1" ]; then pwsh -c "Import-Module ./$(SYNC_DIR)/Unsandbox.psm1" 2>/dev/null && echo " $(GREEN)✓$(NC) Module imports" || echo " $(YELLOW)⊘$(NC) Check module"; fi + @if [ -d "$(SYNC_DIR)/Tests" ]; then pwsh -c "Invoke-Pester $(SYNC_DIR)/Tests" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Install Pester"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/prolog/Makefile b/clients/prolog/Makefile new file mode 100644 index 0000000..b72d9fb --- /dev/null +++ b/clients/prolog/Makefile @@ -0,0 +1,31 @@ +# UN Prolog Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Prolog Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.pro" ]; then swipl -g "halt" -s "$(ROOT_DIR)/un.pro" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/pack.pl" ]; then swipl -g "use_module(library(plunit)),run_tests,halt" -s "$(SYNC_DIR)/test.pl" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/r/Makefile b/clients/r/Makefile new file mode 100644 index 0000000..966cecd --- /dev/null +++ b/clients/r/Makefile @@ -0,0 +1,42 @@ +# UN R Client - Build and Test + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN R Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ R Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.r" ]; then Rscript --vanilla -e "source('$(ROOT_DIR)/un.r')" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/R/unsandbox.R" ]; then Rscript -e "source('$(SYNC_DIR)/R/unsandbox.R')" 2>/dev/null && echo " $(GREEN)✓$(NC) Module loads" || echo " $(YELLOW)⊘$(NC) Check dependencies"; fi + @if [ -d "$(SYNC_DIR)/tests" ]; then cd $(SYNC_DIR) && Rscript -e "testthat::test_dir('tests')" 2>/dev/null || echo " $(YELLOW)⊘$(NC) Install testthat"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -f $(SYNC_DIR)/*.Rcheck 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/raku/Makefile b/clients/raku/Makefile new file mode 100644 index 0000000..0b76774 --- /dev/null +++ b/clients/raku/Makefile @@ -0,0 +1,31 @@ +# UN Raku Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Raku Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.raku" ]; then raku -c "$(ROOT_DIR)/un.raku" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/META6.json" ]; then cd $(SYNC_DIR) && zef test . 2>/dev/null || echo " $(YELLOW)⊘$(NC) Run zef install"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @rm -rf $(SYNC_DIR)/.precomp 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/scheme/Makefile b/clients/scheme/Makefile new file mode 100644 index 0000000..d046ef8 --- /dev/null +++ b/clients/scheme/Makefile @@ -0,0 +1,31 @@ +# UN Scheme Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Scheme Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.scm" ]; then guile --no-auto-compile -c "(load \"$(ROOT_DIR)/un.scm\")" 2>/dev/null && echo " $(GREEN)✓$(NC) Syntax valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/unsandbox.scm" ]; then guile -c "(load \"$(SYNC_DIR)/unsandbox.scm\")" 2>/dev/null && echo " $(GREEN)✓$(NC) Module loads" || echo " $(YELLOW)⊘$(NC) Check module"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/tcl/Makefile b/clients/tcl/Makefile new file mode 100644 index 0000000..f23d7fd --- /dev/null +++ b/clients/tcl/Makefile @@ -0,0 +1,31 @@ +# UN Tcl Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Tcl Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.tcl" ]; then tclsh "$(ROOT_DIR)/un.tcl" --help 2>/dev/null && echo " $(GREEN)✓$(NC) --help works" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + +test-library: + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/unsandbox.tcl" ]; then tclsh -c "source $(SYNC_DIR)/unsandbox.tcl" 2>/dev/null && echo " $(GREEN)✓$(NC) Module loads" || echo " $(YELLOW)⊘$(NC) Check module"; fi + +test-integration: + @echo "━━━ INTEGRATION MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +test-functional: + @echo "━━━ FUNCTIONAL MODE ━━━" + @echo " $(YELLOW)⊘$(NC) Not implemented" + +clean: + @echo "$(GREEN)✓$(NC) Cleaned" diff --git a/clients/zig/Makefile b/clients/zig/Makefile new file mode 100644 index 0000000..9ab0faa --- /dev/null +++ b/clients/zig/Makefile @@ -0,0 +1,42 @@ +# UN Zig Client + +.PHONY: test test-cli test-library test-integration test-functional clean help + +ROOT_DIR := $(shell cd ../.. && pwd) +SYNC_DIR := sync +GREEN := \033[32m +YELLOW := \033[33m +NC := \033[0m + +.DEFAULT_GOAL := help + +help: + @echo "UN Zig Client" + @echo " make test All 4 test modes" + +test: test-cli test-library test-integration test-functional + @echo "$(GREEN)✓ Zig Client: All 4 test modes complete$(NC)" + +test-cli: + @echo "" + @echo "━━━ CLI MODE ━━━" + @if [ -f "$(ROOT_DIR)/un.zig" ]; then zig fmt --check "$(ROOT_DIR)/un.zig" 2>/dev/null && echo " $(GREEN)✓$(NC) Format valid" || echo " $(YELLOW)⊘$(NC) Check syntax"; fi + @if [ -f "$(SYNC_DIR)/build.zig" ]; then cd $(SYNC_DIR) && zig build 2>/dev/null && echo " $(GREEN)✓$(NC) SDK compiles" || echo " $(YELLOW)⊘$(NC) Check build.zig"; fi + +test-library: + @echo "" + @echo "━━━ LIBRARY MODE ━━━" + @if [ -f "$(SYNC_DIR)/build.zig" ]; then cd $(SYNC_DIR) && zig build test 2>/dev/null || echo " $(YELLOW)⊘$(NC) Tests incomplete"; fi + +test-integration: + @echo "" + @echo "━━━ INTEGRATION MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +test-functional: + @echo "" + @echo "━━━ FUNCTIONAL MODE ━━━" + @if [ -z "$$UNSANDBOX_PUBLIC_KEY" ]; then echo " $(YELLOW)⊘$(NC) No credentials"; else echo " $(YELLOW)⊘$(NC) Not implemented"; fi + +clean: + @rm -rf $(SYNC_DIR)/zig-cache $(SYNC_DIR)/zig-out 2>/dev/null; echo "$(GREEN)✓$(NC) Cleaned"