This commit is contained in:
2025-12-03 10:30:08 +09:00
commit 58ab7caff3
12 changed files with 1214 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
/vendor/
/seven-skies
/.vscode/launch.json

8
.golangci.yaml Normal file
View File

@@ -0,0 +1,8 @@
version: "2"
linters:
default: all
disable:
- revive
- depguard
- tagliatelle
- wsl # deprecated

14
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,14 @@
repos:
- repo: local
hooks:
- id: golangci-lint
name: golangci-lint
entry: make lint
language: system
types: [go]
- id: test
name: test
entry: make test
language: system
types: [go]

36
Makefile Normal file
View File

@@ -0,0 +1,36 @@
.PHONY: build
build:
CGO_ENABLED=0 GOOS=linux go build -o . ./cmd/...
.PHONY: install
install:
CGO_ENABLED=0 GOOS=linux go install ./cmd/...
.PHONY: update
update:
go get -u -t ./...
go mod tidy
go mod vendor
.PHONY: lint
lint:
# go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.6.2
golangci-lint run
.PHONY: fix
fix:
# go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.6.2
golangci-lint run --fix
.PHONY: test
test:
go test -race -shuffle=on ./...
.PHONY: validate
validate: fix test
.PHONY: cover
cover:
go test ./... --coverpkg ./... -coverprofile=c.out
go tool cover -html="c.out"
rm c.out

9
api/.gitignore vendored Normal file
View File

@@ -0,0 +1,9 @@
# MacOS
.DS_Store
# Default TypeSpec output
tsp-output/
dist/
# Dependency directories
node_modules/

44
api/main.tsp Normal file
View File

@@ -0,0 +1,44 @@
import "@typespec/http";
using Http;
@service(#{ title: "Widget Service" })
namespace DemoService;
model Widget {
id: string;
weight: int32;
color: "red" | "blue";
}
model WidgetList {
items: Widget[];
}
@error
model Error {
code: int32;
message: string;
}
model AnalyzeResult {
id: string;
analysis: string;
}
@route("/widgets")
@tag("Widgets")
interface Widgets {
/** List widgets */
@get list(): WidgetList | Error;
/** Read widgets */
@get read(@path id: string): Widget | Error;
/** Create a widget */
@post create(@body body: Widget): Widget | Error;
/** Update a widget */
@patch update(@path id: string, @body body: MergePatchUpdate<Widget>): Widget | Error;
/** Delete a widget */
@delete delete(@path id: string): void | Error;
/** Analyze a widget */
@route("{id}/analyze") @post analyze(@path id: string): AnalyzeResult | Error;
}

13
api/package.json Normal file
View File

@@ -0,0 +1,13 @@
{
"name": "api",
"version": "0.1.0",
"type": "module",
"private": true,
"dependencies": {
"@typespec/compiler": "latest",
"@typespec/http": "latest",
"@typespec/rest": "latest",
"@typespec/openapi": "latest",
"@typespec/openapi3": "latest"
}
}

1051
api/pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

7
api/tspconfig.yaml Normal file
View File

@@ -0,0 +1,7 @@
emit:
- "@typespec/openapi3"
options:
"@typespec/openapi3":
emitter-output-dir: "{output-dir}/schema"
openapi-versions:
- 3.1.0

19
cmd/seven-skies/main.go Normal file
View File

@@ -0,0 +1,19 @@
package main
import (
"log"
"runtime/debug"
)
func version() string {
info, ok := debug.ReadBuildInfo()
if !ok {
return "unknown"
}
return info.Main.Version
}
func main() {
log.Println("version", version())
}

3
go.mod Normal file
View File

@@ -0,0 +1,3 @@
module github.com/neatflowcv/seven-skies
go 1.25.5

View File

@@ -0,0 +1,7 @@
package flow
type Service struct {}
func NewService() *Service {
return &Service{}
}