forked from tfgrid/zosbuilder
Added youki build and fromatting of scripts
This commit is contained in:
@@ -18,7 +18,7 @@ export DEBUG="${DEBUG:-1}"
|
||||
source "${SCRIPT_DIR}/lib/common.sh"
|
||||
|
||||
function show_usage() {
|
||||
cat << EOF
|
||||
cat <<EOF
|
||||
Zero OS Development Container Manager
|
||||
|
||||
Usage: $0 [COMMAND]
|
||||
@@ -70,10 +70,10 @@ function ensure_builder_image() {
|
||||
|
||||
function dev_container_start() {
|
||||
section_header "Starting Development Container"
|
||||
|
||||
|
||||
# Ensure builder image exists (handles clean --all case and short-name policy)
|
||||
ensure_builder_image
|
||||
|
||||
|
||||
# Check if container already exists
|
||||
if podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
if podman container inspect "$CONTAINER_NAME" --format '{{.State.Status}}' | grep -q "running"; then
|
||||
@@ -85,15 +85,16 @@ function dev_container_start() {
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
log_info "Creating new development container: ${CONTAINER_NAME}"
|
||||
|
||||
|
||||
# Create persistent container with all necessary mounts and environment
|
||||
local podman_args=(
|
||||
run -d
|
||||
--name "$CONTAINER_NAME"
|
||||
--privileged
|
||||
-v "${PROJECT_ROOT}:/workspace"
|
||||
-v "$HOME/.ssh:root/.ssh"
|
||||
-w /workspace
|
||||
-e DEBUG=1
|
||||
-e ALPINE_VERSION=3.22
|
||||
@@ -115,7 +116,7 @@ function dev_container_start() {
|
||||
)
|
||||
|
||||
safe_execute podman "${podman_args[@]}"
|
||||
|
||||
|
||||
log_info "Development container started successfully"
|
||||
log_info "Container name: ${CONTAINER_NAME}"
|
||||
log_info "Access with: $0 shell"
|
||||
@@ -123,7 +124,7 @@ function dev_container_start() {
|
||||
|
||||
function dev_container_stop() {
|
||||
section_header "Stopping Development Container"
|
||||
|
||||
|
||||
if podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
log_info "Stopping development container: ${CONTAINER_NAME}"
|
||||
safe_execute podman stop "$CONTAINER_NAME"
|
||||
@@ -135,17 +136,17 @@ function dev_container_stop() {
|
||||
|
||||
function dev_container_shell() {
|
||||
section_header "Entering Development Container Shell"
|
||||
|
||||
|
||||
if ! podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
log_info "Development container not found, starting..."
|
||||
dev_container_start
|
||||
fi
|
||||
|
||||
|
||||
if ! podman container inspect "$CONTAINER_NAME" --format '{{.State.Status}}' | grep -q "running"; then
|
||||
log_info "Starting stopped development container"
|
||||
safe_execute podman start "$CONTAINER_NAME"
|
||||
fi
|
||||
|
||||
|
||||
log_info "Entering container shell (exit with 'exit' or Ctrl+D)"
|
||||
# Use direct execution for interactive shell (don't use safe_execute)
|
||||
exec podman exec -it "$CONTAINER_NAME" /bin/bash
|
||||
@@ -153,56 +154,56 @@ function dev_container_shell() {
|
||||
|
||||
function dev_container_build() {
|
||||
section_header "Running Build in Development Container"
|
||||
|
||||
|
||||
if ! podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
log_info "Development container not found, starting..."
|
||||
dev_container_start
|
||||
fi
|
||||
|
||||
|
||||
if ! podman container inspect "$CONTAINER_NAME" --format '{{.State.Status}}' | grep -q "running"; then
|
||||
log_info "Starting stopped development container"
|
||||
safe_execute podman start "$CONTAINER_NAME"
|
||||
fi
|
||||
|
||||
|
||||
log_info "Running build in persistent container (real-time output)"
|
||||
log_info "Command: podman exec $CONTAINER_NAME ./scripts/build.sh $*"
|
||||
|
||||
|
||||
# Use direct execution to show real-time output (bypass safe_execute)
|
||||
podman exec "$CONTAINER_NAME" ./scripts/build.sh "$@"
|
||||
local exit_code=$?
|
||||
|
||||
|
||||
if [[ $exit_code -eq 0 ]]; then
|
||||
log_info "Build completed successfully in container"
|
||||
else
|
||||
log_error "Build failed in container with exit code: $exit_code"
|
||||
fi
|
||||
|
||||
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
function dev_container_clean() {
|
||||
section_header "Cleaning Development Container"
|
||||
|
||||
|
||||
if podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
log_info "Removing existing development container"
|
||||
safe_execute podman rm -f "$CONTAINER_NAME"
|
||||
fi
|
||||
|
||||
|
||||
log_info "Starting fresh development container"
|
||||
dev_container_start
|
||||
}
|
||||
|
||||
function dev_container_status() {
|
||||
section_header "Development Container Status"
|
||||
|
||||
|
||||
if podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
local status=$(podman container inspect "$CONTAINER_NAME" --format '{{.State.Status}}')
|
||||
local created=$(podman container inspect "$CONTAINER_NAME" --format '{{.Created}}')
|
||||
|
||||
|
||||
log_info "Container: ${CONTAINER_NAME}"
|
||||
log_info "Status: ${status}"
|
||||
log_info "Created: ${created}"
|
||||
|
||||
|
||||
if [[ "$status" == "running" ]]; then
|
||||
log_info "✓ Ready for development"
|
||||
else
|
||||
@@ -216,7 +217,7 @@ function dev_container_status() {
|
||||
|
||||
function dev_container_logs() {
|
||||
section_header "Development Container Logs"
|
||||
|
||||
|
||||
if podman container exists "$CONTAINER_NAME" 2>/dev/null; then
|
||||
safe_execute podman logs "$CONTAINER_NAME"
|
||||
else
|
||||
@@ -228,39 +229,39 @@ function dev_container_logs() {
|
||||
# Main function
|
||||
function main() {
|
||||
local command="${1:-help}"
|
||||
|
||||
|
||||
case "$command" in
|
||||
start)
|
||||
dev_container_start
|
||||
;;
|
||||
stop)
|
||||
dev_container_stop
|
||||
;;
|
||||
shell)
|
||||
dev_container_shell
|
||||
;;
|
||||
build)
|
||||
shift
|
||||
dev_container_build "$@"
|
||||
;;
|
||||
clean)
|
||||
dev_container_clean
|
||||
;;
|
||||
status)
|
||||
dev_container_status
|
||||
;;
|
||||
logs)
|
||||
dev_container_logs
|
||||
;;
|
||||
help|--help|-h)
|
||||
show_usage
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown command: $command"
|
||||
show_usage
|
||||
exit 1
|
||||
;;
|
||||
start)
|
||||
dev_container_start
|
||||
;;
|
||||
stop)
|
||||
dev_container_stop
|
||||
;;
|
||||
shell)
|
||||
dev_container_shell
|
||||
;;
|
||||
build)
|
||||
shift
|
||||
dev_container_build "$@"
|
||||
;;
|
||||
clean)
|
||||
dev_container_clean
|
||||
;;
|
||||
status)
|
||||
dev_container_status
|
||||
;;
|
||||
logs)
|
||||
dev_container_logs
|
||||
;;
|
||||
help | --help | -h)
|
||||
show_usage
|
||||
;;
|
||||
*)
|
||||
log_error "Unknown command: $command"
|
||||
show_usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
main "$@"
|
||||
|
||||
Reference in New Issue
Block a user