chore: docker compose, mise.toml, updated toolchain
- Dockerfile: updated to serve mode with web/ embed, expose 8080 - docker-compose.yml: new, maps :8080 and output volume - Makefile: added serve, akaiutil, electron-* targets - mise.toml: new, go 1.26 + node 22, all build/run tasks - .gitignore: exclude built akaiutil binary
This commit is contained in:
@@ -10,6 +10,7 @@ akaiutil-4.6.7/
|
|||||||
# Build artifacts
|
# Build artifacts
|
||||||
*.o
|
*.o
|
||||||
*.obj
|
*.obj
|
||||||
|
third_party/akaiutil/akaiutil
|
||||||
|
|
||||||
# Data
|
# Data
|
||||||
*.iso
|
*.iso
|
||||||
|
|||||||
+6
-2
@@ -13,7 +13,8 @@ RUN make
|
|||||||
FROM golang:1.26-alpine AS fetch-builder
|
FROM golang:1.26-alpine AS fetch-builder
|
||||||
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
COPY go.mod main.go /src/
|
COPY go.mod main.go serve.go /src/
|
||||||
|
COPY web/ /src/web/
|
||||||
RUN CGO_ENABLED=0 go build -o /fetch .
|
RUN CGO_ENABLED=0 go build -o /fetch .
|
||||||
|
|
||||||
# Stage 3: Runtime image
|
# Stage 3: Runtime image
|
||||||
@@ -24,10 +25,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
|||||||
ca-certificates \
|
ca-certificates \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN mkdir -p /data/output/isos /data/output/wavs
|
||||||
|
|
||||||
COPY --from=akaiutil-builder /src/akaiutil/akaiutil /usr/local/bin/
|
COPY --from=akaiutil-builder /src/akaiutil/akaiutil /usr/local/bin/
|
||||||
COPY --from=fetch-builder /fetch /usr/local/bin/fetch
|
COPY --from=fetch-builder /fetch /usr/local/bin/fetch
|
||||||
COPY scripts/extract_wavs.sh /usr/local/bin/
|
COPY scripts/extract_wavs.sh /usr/local/bin/
|
||||||
|
|
||||||
WORKDIR /data
|
WORKDIR /data
|
||||||
|
EXPOSE 8080
|
||||||
ENTRYPOINT ["fetch"]
|
ENTRYPOINT ["fetch"]
|
||||||
CMD ["--help"]
|
CMD ["serve", "-p", "8080"]
|
||||||
|
|||||||
@@ -1,21 +1,60 @@
|
|||||||
BIN := fetch
|
BIN := fetch
|
||||||
IMAGE := akai-fetch
|
IMAGE := akai-fetch
|
||||||
REMOTE := dhg.lol
|
REMOTE := dhg.lol
|
||||||
|
ELECTRON_DIR := electron
|
||||||
|
|
||||||
build:
|
build:
|
||||||
CGO_ENABLED=0 go build -buildvcs=false -o $(BIN) .
|
CGO_ENABLED=0 go build -buildvcs=false -o $(BIN) .
|
||||||
|
|
||||||
|
akaiutil:
|
||||||
|
$(MAKE) -C third_party/akaiutil
|
||||||
|
|
||||||
|
all: build akaiutil
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
docker build -t $(IMAGE) .
|
docker build -t $(IMAGE) .
|
||||||
|
|
||||||
docker-run:
|
docker-run:
|
||||||
docker run --rm -v "$(PWD)/output:/data" $(IMAGE) $(ARGS)
|
docker run --rm -v "$(PWD)/output:/data" $(IMAGE) $(ARGS)
|
||||||
|
|
||||||
|
docker-up:
|
||||||
|
docker compose up --build
|
||||||
|
|
||||||
|
docker-down:
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
serve: build
|
||||||
|
./$(BIN) serve
|
||||||
|
|
||||||
|
# ─── Electron targets ──────────────────────────────────────
|
||||||
|
|
||||||
|
electron-deps:
|
||||||
|
cd $(ELECTRON_DIR) && npm install
|
||||||
|
|
||||||
|
electron-dev: build
|
||||||
|
cd $(ELECTRON_DIR) && npx electron .
|
||||||
|
|
||||||
|
electron-build: build akaiutil
|
||||||
|
cd $(ELECTRON_DIR) && npx electron-builder --dir
|
||||||
|
|
||||||
|
electron-build-mac: build akaiutil
|
||||||
|
cd $(ELECTRON_DIR) && npx electron-builder --mac --dir
|
||||||
|
|
||||||
|
electron-build-linux: build akaiutil
|
||||||
|
cd $(ELECTRON_DIR) && npx electron-builder --linux --dir
|
||||||
|
|
||||||
|
# ─── Server / remote ───────────────────────────────────────
|
||||||
|
|
||||||
install: build
|
install: build
|
||||||
scp $(BIN) $(REMOTE):/tmp/$(BIN) && \
|
scp $(BIN) $(REMOTE):/tmp/$(BIN) && \
|
||||||
ssh $(REMOTE) "sudo mv /tmp/$(BIN) /DATA/Downloads/akai/$(BIN) && sudo chmod +x /DATA/Downloads/akai/$(BIN)"
|
ssh $(REMOTE) "sudo mv /tmp/$(BIN) /DATA/Downloads/akai/$(BIN) && sudo chmod +x /DATA/Downloads/akai/$(BIN)"
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(BIN)
|
rm -f $(BIN)
|
||||||
|
rm -rf $(ELECTRON_DIR)/dist
|
||||||
|
rm -rf $(ELECTRON_DIR)/node_modules
|
||||||
|
$(MAKE) -C third_party/akaiutil clean
|
||||||
|
|
||||||
.PHONY: build docker docker-run install clean
|
.PHONY: build akaiutil all docker docker-run docker-up docker-down serve \
|
||||||
|
electron-deps electron-dev electron-build electron-build-mac electron-build-linux \
|
||||||
|
install clean
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
services:
|
||||||
|
akai-utils:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8080:8080"
|
||||||
|
volumes:
|
||||||
|
- ./output:/data/output
|
||||||
|
environment:
|
||||||
|
- AKAIUTIL=/usr/local/bin/akaiutil
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
[tools]
|
||||||
|
go = "1.26"
|
||||||
|
node = "22"
|
||||||
|
|
||||||
|
[env]
|
||||||
|
CGO_ENABLED = "0"
|
||||||
|
|
||||||
|
[tasks]
|
||||||
|
build = "go build -buildvcs=false -o fetch ."
|
||||||
|
akaiutil = "make -C third_party/akaiutil"
|
||||||
|
all = { run = "go build -buildvcs=false -o fetch . && make -C third_party/akaiutil" }
|
||||||
|
serve = { run = "go build -buildvcs=false -o fetch . && ./fetch serve" }
|
||||||
|
lint = "go vet ./..."
|
||||||
|
electron-deps = "cd electron && npm install"
|
||||||
|
electron-dev = { run = "go build -buildvcs=false -o fetch . && cd electron && npx electron ." }
|
||||||
|
electron-build = { run = "go build -buildvcs=false -o fetch . && make -C third_party/akaiutil && cd electron && npx electron-builder --dir" }
|
||||||
|
electron-build-mac = { run = "go build -buildvcs=false -o fetch . && make -C third_party/akaiutil && cd electron && npx electron-builder --mac --dir" }
|
||||||
|
docker-up = "docker compose up --build"
|
||||||
|
docker-build = "docker build -t akai-fetch ."
|
||||||
Reference in New Issue
Block a user