Skip to content

Releases: pardnchiu/PodRun

v0.11.0

Choose a tag to compare

@pardnchiu pardnchiu released this 23 Jan 09:02

Update Log

Generated: 2026-01-23 08:00 (+00:00)
v0.10.0 → v0.11.0

Recommended Commit Message

feat: add user management system with email allowlist and refactor codebase into modular architecture

翻譯 feat: 新增使用者管理系統含 email 許可清單,並重構程式碼為模組化架構

Summary

Add user management system with model, database operations (list/upsert), and REST API endpoint. Introduce ALLOW_EMAILS environment variable for pre-seeding authorized users at startup. Refactor codebase by extracting database methods, command parsing, and route handlers into separate files for improved maintainability.

翻譯 新增使用者管理系統,包含模型、資料庫操作(列表/更新插入)與 REST API 端點。引入 `ALLOW_EMAILS` 環境變數於啟動時預先載入授權使用者。重構程式碼:將資料庫方法、命令解析與路由處理器抽離至獨立檔案,提升可維護性。

Changes

FEAT

  • Add User model with ID, Email, CreatedAt, Dismiss fields
  • Add users table schema with email unique constraint
  • Add ListUsers() database method to query active users
  • Add UpsertUser() database method for user creation/update
  • Add /api/user/upsert POST endpoint for user management
  • Add ALLOW_EMAILS env variable to pre-seed users on startup via comma-separated list
  • Add user_id foreign key reference in records table schema
翻譯
  • 新增 User 模型含 ID、Email、CreatedAt、Dismiss 欄位
  • 新增 users 資料表結構含 email 唯一約束
  • 新增 ListUsers() 資料庫方法查詢有效使用者
  • 新增 UpsertUser() 資料庫方法用於建立/更新使用者
  • 新增 /api/user/upsert POST 端點用於使用者管理
  • 新增 ALLOW_EMAILS 環境變數於啟動時透過逗號分隔清單預先載入使用者
  • 新增 records 資料表的 user_id 外鍵參照

UPDATE

  • Change default database path from working directory to ~/.podrun/database.db
  • Restructure API routes from /pod/* to /api/pod/* prefix
  • Add /api/health GET endpoint for service health check
  • Add ALLOW_EMAILS to .env.example with REMOTE_SERVER section comment
翻譯
  • 變更預設資料庫路徑從工作目錄改為 ~/.podrun/database.db
  • 重新組織 API 路由從 /pod/* 改為 /api/pod/* 前綴
  • 新增 /api/health GET 端點用於服務健康檢查
  • 新增 ALLOW_EMAILS 至 .env.example 含 REMOTE_SERVER 區段註解

REFACTOR

  • Extract PodmanArg struct and parseArgs() function to internal/command/parseArgs.go
  • Extract UpsertPod() method to internal/database/upsertPod.go
  • Extract UpdatePod() method to internal/database/updatePod.go
  • Extract InsertRecord() method to internal/database/insertRecord.go
  • Extract ListPods() method to internal/database/listPods.go
  • Extract ListPodRecords() method to internal/database/listPodRecords.go
  • Extract PodInfo() method to internal/database/podInfo.go
  • Extract UpsertUser() method to internal/database/upsertUser.go
  • Extract ListUsers() method to internal/database/listUsers.go
  • Create internal/handler/ package with dedicated GET and POST handler functions
  • Move inline route handlers from routes.go to handler package
翻譯
  • 抽離 PodmanArg 結構與 parseArgs() 函式至 internal/command/parseArgs.go
  • 抽離 UpsertPod() 方法至 internal/database/upsertPod.go
  • 抽離 UpdatePod() 方法至 internal/database/updatePod.go
  • 抽離 InsertRecord() 方法至 internal/database/insertRecord.go
  • 抽離 ListPods() 方法至 internal/database/listPods.go
  • 抽離 ListPodRecords() 方法至 internal/database/listPodRecords.go
  • 抽離 PodInfo() 方法至 internal/database/podInfo.go
  • 抽離 UpsertUser() 方法至 internal/database/upsertUser.go
  • 抽離 ListUsers() 方法至 internal/database/listUsers.go
  • 建立 internal/handler/ 套件含專屬 GET 與 POST 處理函式
  • 將內嵌路由處理器從 routes.go 移至處理套件

CHORE

  • Add godotenv dependency for loading .env files at startup
翻譯
  • 新增 godotenv 相依套件於啟動時載入 .env 檔案

Files Changed

File Status Tag
.env.expample Modified UPDATE
cmd/api/main.go Modified FEAT, UPDATE, CHORE
internal/command/command.go Modified REFACTOR
internal/command/parseArgs.go Added REFACTOR
internal/database/sqlite.go Modified REFACTOR
internal/database/upsertPod.go Added REFACTOR
internal/database/updatePod.go Added REFACTOR
internal/database/insertRecord.go Added REFACTOR
internal/database/listPods.go Added REFACTOR
internal/database/listPodRecords.go Added REFACTOR
internal/database/podInfo.go Added REFACTOR
internal/database/upsertUser.go Added FEAT
internal/database/listUsers.go Added FEAT
internal/model/user.go Added FEAT
internal/handler/get.go Added REFACTOR
internal/handler/post.go Added REFACTOR, FEAT
internal/routes/routes.go Modified REFACTOR, UPDATE
sql/create.sql Modified FEAT

Generated by Claude Code

v0.10.0

Choose a tag to compare

@pardnchiu pardnchiu released this 19 Jan 19:04

Update Log

Generated: 2026-01-20 09:15 (+00:00)
v0.9.0 → v0.10.0

Recommended Commit Message

feat: add pod operation recording with new records API endpoint

翻譯 feat: 新增 Pod 操作紀錄功能與 records API 端點

Summary

Add operation recording system to track pod lifecycle events (up, down, clear, sync, overwrite). Introduces Record model, database insert method, and REST endpoint for audit trail.

翻譯 新增操作紀錄系統以追蹤 Pod 生命週期事件(up、down、clear、sync、overwrite)。引入 `Record` 模型、資料庫新增方法與 REST 端點用於稽核軌跡。

Changes

FEAT

  • Add Record model with UID, Content, Hostname, IP fields
  • Add recordPod() function to log pod operations via API
  • Add InsertRecord() method in SQLite database layer
  • Add /pod/record/insert POST endpoint for record creation
  • Add hostname and ip columns to records table schema
翻譯
  • 新增 Record 模型含 UID、Content、Hostname、IP 欄位
  • 新增 recordPod() 函式透過 API 記錄 Pod 操作
  • 新增 SQLite 資料庫層的 InsertRecord() 方法
  • 新增 /pod/record/insert POST 端點用於建立紀錄
  • 新增 hostname 與 ip 欄位至 records 資料表結構

UPDATE

  • Modify RsyncToRemote() to skip dry-run preview when remote directory is empty
  • Modify rsync exclude list to remove docker-compose.yml, docker-compose.yaml from sync phase
  • Add trusted proxy configuration (127.0.0.1, local IP) to Gin router
翻譯
  • 修改 RsyncToRemote() 當遠端目錄為空時跳過 dry-run 預覽
  • 修改 rsync 排除清單,同步階段移除 docker-compose.yml、docker-compose.yaml
  • 新增信任代理配置(127.0.0.1、本機 IP)至 Gin 路由器

REFACTOR

  • Extract upsertPod() helper function from inline HTTP POST logic
  • Rename ListContainers() to ListPods() for consistency
  • Move Record struct from database/sqlite.go to model/pod.go
翻譯
  • 從內嵌 HTTP POST 邏輯中提取 upsertPod() 輔助函式
  • 將 ListContainers() 重新命名為 ListPods() 以保持一致性
  • 將 Record 結構從 database/sqlite.go 移至 model/pod.go

FIX

  • Remove incorrect pod_uid = excluded.pod_uid from UPSERT conflict clause
翻譯
  • 移除 UPSERT 衝突子句中錯誤的 pod_uid = excluded.pod_uid

Files Changed

File Status Tag
internal/command/composeCMD.go Modified FEAT, UPDATE, REFACTOR
internal/database/sqlite.go Modified FEAT, REFACTOR, FIX
internal/model/pod.go Modified FEAT
internal/routes/routes.go Modified FEAT, UPDATE
sql/create.sql Modified FEAT

Generated by Claude Code

v0.9.0

Choose a tag to compare

@pardnchiu pardnchiu released this 19 Jan 18:00

Update Log

Generated: 2026-01-19 17:58 (+00:00)
v0.8.0 → v0.9.0

Recommended Commit Message

feat: add rsync dry-run preview with user confirmation before sync

翻譯 feat: 新增 rsync dry-run 預覽與同步前使用者確認機制

Summary

Add interactive rsync preview with dry-run mode, allowing users to inspect file changes before confirming synchronization. Also add CMDOutput utility function for capturing command output.

翻譯 新增互動式 rsync 預覽功能,使用 dry-run 模式讓使用者在確認同步前檢視檔案變更。同時新增 `CMDOutput` 工具函式以擷取命令輸出。

Changes

FEAT

  • Add rsync dry-run preview (-avni) to show pending changes before sync
  • Add user confirmation prompt (y/N) before executing actual sync
  • Add changeExist() helper to detect meaningful changes in rsync output
  • Add CMDOutput() utility function to capture command stdout
翻譯
  • 新增 rsync dry-run 預覽 (-avni) 於同步前顯示待處理變更
  • 新增使用者確認提示 (y/N) 於執行實際同步前
  • 新增 changeExist() 輔助函式偵測 rsync 輸出中的有效變更
  • 新增 CMDOutput() 工具函式擷取命令標準輸出

UPDATE

  • Refactor RsyncToRemote() to separate preview and sync phases
  • Expand exclude list with .next/, docker-compose.yml, docker-compose.yaml, app/package-lock.json
  • Relocate visual separator to preview and sync phases for better UX
翻譯
  • 重構 RsyncToRemote() 將預覽與同步階段分離
  • 擴充排除清單加入 .next/、docker-compose.yml、docker-compose.yaml、app/package-lock.json
  • 移動視覺分隔線至預覽與同步階段以改善使用者體驗

Files Changed

File Status Tag
internal/command/composeCMD.go Modified FEAT, UPDATE
internal/utils/command.go Modified FEAT

Generated by Claude Code

v0.8.0

Choose a tag to compare

@pardnchiu pardnchiu released this 19 Jan 17:31

Update Log

Generated: 2026-01-19 17:30 (+00:00)
v0.7.0 → v0.8.0

Recommended Commit Message

feat: Add REST API server with SQLite persistence for pod management

翻譯 feat: 新增 REST API Server 與 SQLite 持久化以管理 Pod

Summary

Add a complete REST API layer with SQLite database for persisting pod deployment information. The CLI now automatically syncs pod metadata to the database on up/down/clear operations, enabling centralized tracking of deployed containers across multiple hosts.

翻譯 新增完整 REST API 層與 SQLite 資料庫,用於持久化 Pod 部署資訊。CLI 現在會在 up/down/clear 操作時自動同步 Pod metadata 至資料庫,實現多主機部署容器的集中追蹤管理。

Changes

FEAT

  • Add REST API server (cmd/api) with Gin framework for pod management
  • Add SQLite database layer (internal/database) with CRUD operations for pods
  • Add Pod model (internal/model) with hostname and IP tracking
  • Add API routes for pod upsert, update, and list operations
  • Integrate pod sync to database on compose up/down/clear commands
  • Add GetLocalIP() utility to capture deployer's IP address
翻譯
  • 新增 REST API Server(cmd/api)使用 Gin 框架管理 Pod
  • 新增 SQLite 資料庫層(internal/database)支援 Pod CRUD 操作
  • 新增 Pod Model(internal/model)包含 hostname 與 IP 追蹤
  • 新增 API routes 支援 pod upsert、update、list 操作
  • 整合 compose up/down/clear 指令時自動同步 Pod 資訊至資料庫
  • 新增 GetLocalIP() utility 取得部署者 IP 位址

UPDATE

  • Extend PodmanArg struct with Hostname and IP fields
  • Refactor ComposeCMD to return *model.Pod instead of string UID
  • Add pod info output (PodID, PodName, Hostname, IP) after successful deployment
翻譯
  • 擴展 PodmanArg 結構新增 Hostname 與 IP 欄位
  • 重構 ComposeCMD 回傳 *model.Pod 取代字串 UID
  • 部署成功後輸出 Pod 資訊(PodID、PodName、Hostname、IP)

FIX

  • Fix typo in previous commit message (extra ) character)
翻譯
  • 修正上次 commit message 的錯字(多餘的 ) 字元)

ADD

  • Add SQL schema file (sql/create.sql) for pods, records, and domains tables
  • Add .env.expample DB_PATH configuration
翻譯
  • 新增 SQL schema 檔案(sql/create.sql)定義 pods、records、domains 資料表
  • 新增 .env.expample DB_PATH 設定項

CHORE

  • Add gin-gonic/gin, mattn/go-sqlite3, and related dependencies
翻譯
  • 新增 gin-gonic/gin、mattn/go-sqlite3 及相關依賴

Files Changed

File Status Tag
cmd/api/main.go Added FEAT
internal/database/sqlite.go Added FEAT
internal/model/pod.go Added FEAT
internal/routes/routes.go Added FEAT
sql/create.sql Added ADD
internal/command/composeCMD.go Modified FEAT
internal/command/command.go Modified UPDATE
internal/utils/utils.go Modified FEAT
cmd/cli/main.go Modified UPDATE
.env.expample Modified ADD
go.mod Modified CHORE
go.sum Modified CHORE

Generated by Claude Code

v0.7.0

Choose a tag to compare

@pardnchiu pardnchiu released this 18 Jan 10:58

Update Log

Generated: 2026-01-18 10:30 (+00:00)
v0.6.0 → v0.7.0

Recommended Commit Message

feat: Add clear command for complete deployment cleanup (rm in ddrun.sh)

翻譯 feat: 新增 clear 命令以完整清理部署 (rm in ddrun.sh)

Summary

Add clear subcommand to compose dispatcher that performs complete deployment cleanup by removing containers, volumes, images, and the project folder on the remote host.

翻譯 在 compose dispatcher 新增 `clear` 子命令,透過移除遠端主機上的容器、volumes、映像和專案資料夾來執行完整的部署清理。

Changes

FEAT

  • Add clear command to compose dispatcher switch statement
  • Implement clear() method with three-phase cleanup:
    • Remove containers and volumes via podman compose down -v
    • Remove images via podman compose down --rmi all
    • Remove project folder using privileged alpine container
翻譯
  • 在 compose dispatcher switch 語句新增 clear 命令
  • 實作 clear() 方法,包含三階段清理:
    • 透過 podman compose down -v 移除容器和 volumes
    • 透過 podman compose down --rmi all 移除映像
    • 使用特權 alpine 容器移除專案資料夾

Files Changed

File Status Tag
internal/command/composeCMD.go Modified FEAT

Generated by Claude Code

v0.6.0

Choose a tag to compare

@pardnchiu pardnchiu released this 18 Jan 10:24

Update Log

Generated: 2026-01-18 10:15 (+00:00)
v0.5.0 → v0.6.0

Recommended Commit Message

feat: Implement compose subcommands and fix context-aware -f flag parsing

翻譯 feat: 實作 compose 子命令並修正上下文感知的 -f 旗標解析

Summary

Implement missing compose subcommand handlers (ps, logs, restart, exec, build) via unified runCMD() method, and fix argument parsing to correctly distinguish between logs -f (follow mode) and -f <file> (compose file path) based on command context.

翻譯 透過統一的 `runCMD()` 方法實作缺少的 compose 子命令處理器(ps、logs、restart、exec、build),並修正參數解析以根據命令上下文正確區分 `logs -f`(追蹤模式)和 `-f `(compose 檔案路徑)。

Changes

FEAT

  • Implement ps, logs, restart, exec, build compose subcommands via unified runCMD() handler
  • Wire up previously empty switch cases to execute actual remote commands
翻譯
  • 透過統一的 runCMD() handler 實作 ps、logs、restart、exec、build compose 子命令
  • 將先前空的 switch cases 連接至實際執行遠端命令

FIX

  • Fix -f flag parsing to correctly handle logs -f as follow flag instead of file path
  • Add early command detection in parseArgs() to determine context before flag processing
翻譯
  • 修正 -f 旗標解析,正確處理 logs -f 為追蹤旗標而非檔案路徑
  • 在 parseArgs() 新增提前命令偵測,在旗標處理前確定上下文

REFACTOR

  • Consolidate down, ps, logs, restart, exec, build cases into single runCMD() method
  • Move ANSI color constants to top of composeCMD.go file
  • Simplify remote command execution by removing grep filter
翻譯
  • 將 down、ps、logs、restart、exec、build cases 整合至單一 runCMD() 方法
  • 將 ANSI 色彩常數移至 composeCMD.go 檔案頂部
  • 移除 grep 過濾器以簡化遠端命令執行

Files Changed

File Status Tag
internal/command/command.go Modified FIX
internal/command/composeCMD.go Modified FEAT, REFACTOR

Generated by Claude Code

v0.5.0

Choose a tag to compare

@pardnchiu pardnchiu released this 18 Jan 09:43

Update Log

Generated: 2026-01-18 09:41 (+00:00)
v0.4.0 → v0.5.0

Recommended Commit Message

refactor: Move hardcoded credentials to environment variables and reorganize command utilities

翻譯 refactor: 將硬編碼憑證移至環境變數並重組命令工具

Summary

Remove hardcoded SSH credentials from source code and migrate to environment variables loaded via godotenv. Reorganize command execution utilities into a dedicated file and improve CLI output formatting with ANSI colors.

翻譯 從原始碼中移除硬編碼的 SSH 憑證,改為透過 godotenv 載入環境變數。將命令執行工具重組至專用檔案,並使用 ANSI 色彩改善 CLI 輸出格式。

Changes

SECURITY

  • Remove hardcoded RemoteServer and Password constants from checkSSHConnection.go and utils.go
  • Move SSH credentials to environment variables (PODRUN_SERVER, PODRUN_USERNAME, PODRUN_PASSWORD)
  • Add validation for required environment variables with clear error messages
翻譯
  • 從 checkSSHConnection.go 和 utils.go 移除硬編碼的 RemoteServer 和 Password 常數
  • 將 SSH 憑證移至環境變數(PODRUN_SERVER、PODRUN_USERNAME、PODRUN_PASSWORD)
  • 新增必要環境變數驗證,提供清楚的錯誤訊息

FEAT

  • Add Detach field to PodmanArg struct for tracking detach state
  • Add parsing support for -d/--detach flag in argument parser
翻譯
  • 在 PodmanArg struct 新增 Detach 欄位用於追蹤分離狀態
  • 在參數解析器新增 -d/--detach 旗標的解析支援

REFACTOR

  • Extract command execution utilities (CMDRun, SSHTest, SSHRun, SSEOutput) to internal/utils/command.go
  • Add Podrun struct and GetENV() function for centralized environment configuration
  • Replace inline detach flag checking with p.Detach field access
  • Add ANSI color constants (Reset, Hint, Ok, Error, Warn) for CLI output formatting
  • Improve compose output with colored section dividers
  • Inline brew install logic and remove redundant installPackage() helper
  • Add init() function with godotenv for .env file loading
翻譯
  • 將命令執行工具(CMDRun、SSHTest、SSHRun、SSEOutput)抽取至 internal/utils/command.go
  • 新增 Podrun struct 和 GetENV() 函式用於集中式環境設定
  • 將內聯 detach 旗標檢查替換為 p.Detach 欄位存取
  • 新增 ANSI 色彩常數(Reset、Hint、Ok、Error、Warn)用於 CLI 輸出格式化
  • 使用彩色區段分隔線改善 compose 輸出
  • 內聯 brew 安裝邏輯並移除冗餘的 installPackage() helper
  • 新增 init() 函式配合 godotenv 載入 .env 檔案

REMOVE

  • Delete internal/command/checkSSHConnection.go (functionality moved to utils.SSHTest())
  • Remove debug slog.Info calls from compose commands
翻譯
  • 刪除 internal/command/checkSSHConnection.go(功能已移至 utils.SSHTest())
  • 從 compose 命令移除除錯用的 slog.Info 呼叫

ADD

  • Add .env.expample template file for environment configuration
翻譯
  • 新增 .env.expample 範本檔案用於環境設定

CHORE

  • Add github.com/joho/godotenv v1.5.1 dependency
翻譯
  • 新增 github.com/joho/godotenv v1.5.1 依賴

Files Changed

File Status Tag
cmd/cli/main.go Modified REFACTOR
go.mod Modified CHORE
go.sum Modified CHORE
internal/command/checkSSHConnection.go Deleted SECURITY, REMOVE
internal/command/command.go Modified FEAT
internal/command/composeCMD.go Modified REFACTOR
internal/utils/checkRelyPackages.go Modified REFACTOR
internal/utils/utils.go Modified SECURITY, REFACTOR
internal/utils/command.go Added REFACTOR
.env.expample Added ADD

Generated by Claude Code

v0.4.0

Choose a tag to compare

@pardnchiu pardnchiu released this 18 Jan 07:19

Update Log

Generated: 2026-01-18 08:00 (+00:00)
v0.3.0 → v0.4.0

Recommended Commit Message

refactor: Restructure compose commands with dispatcher pattern and add down command

翻譯 refactor: 重構 compose 命令為 dispatcher 模式並新增 down 命令

Summary

Refactored the compose command architecture from a single Up() method to a unified ComposeCMD() dispatcher pattern supporting multiple compose subcommands. Added down command implementation.

翻譯 重構 compose 命令架構,從單一 `Up()` 方法改為統一的 `ComposeCMD()` dispatcher 模式,支援多個 compose 子命令。新增 `down` 命令實作。

Changes

FEAT

  • Add down command for stopping and removing containers via podman compose down
  • Add Command field to PodmanArg struct for command routing
  • Prepare dispatcher skeleton for future commands: ps, logs, restart, exec, build
翻譯
  • 新增 down 命令,透過 podman compose down 停止並移除容器
  • 在 PodmanArg struct 新增 Command 欄位用於命令路由
  • 準備未來命令的 dispatcher 骨架:ps、logs、restart、exec、build

REFACTOR

  • Restructure compose handling from Up() to ComposeCMD() dispatcher pattern
  • Rename modifyComposeFile to ModifyComposeFile (exported method)
  • Move compose-related functions to composeCMD.go for better organization
  • Change CLI routing from explicit "up" case to default case for all compose commands
翻譯
  • 重構 compose 處理從 Up() 改為 ComposeCMD() dispatcher 模式
  • 將 modifyComposeFile 重新命名為 ModifyComposeFile(匯出方法)
  • 將 compose 相關函式移至 composeCMD.go 以改善組織結構
  • 將 CLI 路由從明確的 "up" case 改為 default case 以處理所有 compose 命令

REMOVE

  • Remove internal/command/up.go (functionality migrated to composeCMD.go)
翻譯
  • 移除 internal/command/up.go(功能已遷移至 composeCMD.go)

Files Changed

File Status Tag
cmd/cli/main.go Modified REFACTOR
internal/command/command.go Modified FEAT
internal/command/up.go Deleted REMOVE
internal/command/composeCMD.go Added REFACTOR

Generated by Claude Code

v0.3.0

Choose a tag to compare

@pardnchiu pardnchiu released this 18 Jan 04:22

Update Log

Generated: 2026-01-18 16:15
v0.2.0 → v0.3.0

Recommended Commit Message

feat: Add container deployment via SSH with rsync synchronization

翻譯 feat: 新增透過 SSH 進行容器部署與 rsync 同步功能

Summary

Add complete container deployment workflow including SSH connection validation, file synchronization via rsync, and remote podman compose execution. Introduce PostgreSQL database integration for future deployment tracking.

翻譯 新增完整的容器部署流程,包含 SSH 連線驗證、透過 rsync 進行檔案同步、以及遠端 podman compose 執行。引入 PostgreSQL 資料庫整合,為未來部署追蹤做準備。

Changes

FEAT

  • Add Up() method for deploying containers to remote server via SSH and podman compose
  • Add Deploy struct to represent deployment metadata (UID, PodID, LocalDir, RemoteDir, Status, etc.)
  • Add CheckSSHConnection() function to validate SSH connectivity before deployment
  • Add RsyncToRemote() method for synchronizing local files to remote server with exclusion patterns
  • Add command routing in main.go for domain, deploy, up subcommands
  • Add SSHRun() and SSEOutput() utility functions for remote command execution
  • Add CMDOutput() utility function for capturing local command output
  • Add modifyComposeFile() to strip host ports and add SELinux :z labels for volume mounts
翻譯
  • 新增 Up() method,透過 SSH 與 podman compose 部署容器至遠端伺服器
  • 新增 Deploy struct 表示部署 metadata(UID、PodID、LocalDir、RemoteDir、Status 等)
  • 新增 CheckSSHConnection() 函式,於部署前驗證 SSH 連線
  • 新增 RsyncToRemote() method,使用排除規則同步本地檔案至遠端伺服器
  • 新增 main.go 命令路由,支援 domain、deploy、up 子命令
  • 新增 SSHRun() 與 SSEOutput() 工具函式執行遠端命令
  • 新增 CMDOutput() 工具函式擷取本地命令輸出
  • 新增 modifyComposeFile() 移除 host ports 並為 volume mounts 加入 SELinux :z 標籤

UPDATE

  • Update setRemoteDir() to return UID (MD5 hash) along with remote directory path
  • Change default Target from "pod" to "podman"
  • Update CMDRun() (formerly CmdExec()) to attach stdin for interactive commands
翻譯
  • 更新 setRemoteDir() 同時回傳 UID(MD5 hash)與遠端目錄路徑
  • 將預設 Target 從 "pod" 改為 "podman"
  • 更新 CMDRun()(原 CmdExec())附加 stdin 以支援互動式命令

FIX

  • Fix getLocalDir() to properly handle filepath.Abs() error instead of ignoring it
  • Improve error messages in getLocalDir() for clarity
翻譯
  • 修正 getLocalDir() 正確處理 filepath.Abs() 錯誤,而非忽略
  • 改善 getLocalDir() 錯誤訊息的清晰度

REFACTOR

  • Rename CmdExec() to CMDRun() for naming consistency with CMDOutput()
翻譯
  • 將 CmdExec() 重新命名為 CMDRun() 以與 CMDOutput() 命名一致

Files Changed

File Status Tag
cmd/cli/main.go Modified FEAT
internal/command/command.go Modified UPDATE
internal/command/checkSSHConnection.go Added FEAT
internal/command/up.go Added FEAT
internal/utils/utils.go Modified FEAT
internal/utils/checkRelyPackages.go Modified REFACTOR

Generated by Claude Code

v0.2.1

Choose a tag to compare

@pardnchiu pardnchiu released this 17 Jan 18:27

Update Log

Generated: 2026-01-18 16:00
v0.2.0 → v0.2.1

Recommended Commit Message

refactor: Extract command parsing and utilities into internal packages

翻譯 refactor: 將命令解析與工具函式抽取至 internal packages

Summary

Restructure codebase by extracting command parsing logic and utility functions from cmd/cli/main.go into dedicated internal packages (internal/command, internal/utils) for better modularity and separation of concerns.

翻譯 重構程式碼結構,將命令解析邏輯與工具函式從 `cmd/cli/main.go` 抽取至專用的 internal packages(`internal/command`、`internal/utils`),提升模組化與關注點分離。

Changes

REFACTOR

  • Extract PodmanArg struct and command parsing logic to internal/command package
  • Move New() (formerly parseCommand()), parseArgs(), getLocalDir(), setRemoteDir() to internal/command/command.go
  • Extract CheckRelyPackages(), installPackage() to internal/utils/checkRelyPackages.go
  • Extract common utilities IsDir(), FileExist(), GetMAC(), CmdExec() to internal/utils/utils.go
  • Simplify cmd/cli/main.go to entry point only, removing unused imports (crypto/md5, encoding/hex, net, path/filepath, runtime, strings, os/exec)
翻譯
  • 將 PodmanArg struct 與命令解析邏輯抽取至 internal/command package
  • 將 New()(原 parseCommand())、parseArgs()、getLocalDir()、setRemoteDir() 移至 internal/command/command.go
  • 將 CheckRelyPackages()、installPackage() 抽取至 internal/utils/checkRelyPackages.go
  • 將通用工具函式 IsDir()、FileExist()、GetMAC()、CmdExec() 抽取至 internal/utils/utils.go
  • 簡化 cmd/cli/main.go 為純進入點,移除未使用的 imports(crypto/md5、encoding/hex、net、path/filepath、runtime、strings、os/exec)

Files Changed

File Status Tag
cmd/cli/main.go Modified REFACTOR
internal/command/command.go Added REFACTOR
internal/utils/utils.go Added REFACTOR
internal/utils/checkRelyPackages.go Added REFACTOR

Generated by Claude Code