SHELL := /bin/bash
SRC_ROOT ?= /Users/rcowham/go/src/github.com/perforce/command-runner
TARGET_ROOT ?= .
DOC_FILES := Installer_Guide.md README.md
SCRIPT_FILES := scripts/install_command-runner.sh scripts/install_functions.sh scripts/self_update.sh
CONFIG_FILES := configs/cmd_config.yaml
# Installer-consumed binary artifacts.
BIN_PATTERNS := \
$(SRC_ROOT)/bin/command-runner-linux-*
P4_PATHS := Installer_Guide.md README.md scripts/... configs/... bin/...
.PHONY: sync-installer sync-installer-dryrun p4-edit p4-revert clean-empty-dirs
sync-installer: p4-edit
@echo "Syncing installer files from $(SRC_ROOT) -> $(TARGET_ROOT)"
@mkdir -p "$(TARGET_ROOT)/scripts" "$(TARGET_ROOT)/configs" "$(TARGET_ROOT)/bin"
@for f in $(DOC_FILES); do \
rsync -au "$(SRC_ROOT)/$$f" "$(TARGET_ROOT)/$$f"; \
done
@for f in $(SCRIPT_FILES); do \
rsync -au "$(SRC_ROOT)/Install_scripts/$${f##*/}" "$(TARGET_ROOT)/$$f"; \
chmod +x "$(TARGET_ROOT)/$$f"; \
done
@for f in $(CONFIG_FILES); do \
rsync -au "$(SRC_ROOT)/$$f" "$(TARGET_ROOT)/$$f"; \
done
@for p in $(BIN_PATTERNS); do \
for f in $$p; do \
if [[ -e "$$f" ]]; then \
rsync -au "$$f" "$(TARGET_ROOT)/bin/"; \
fi; \
done; \
done
@$(MAKE) p4-revert
@echo "Sync complete."
sync-installer-dryrun:
@echo "Dry run: showing rsync actions only"
@mkdir -p "$(TARGET_ROOT)/scripts" "$(TARGET_ROOT)/configs" "$(TARGET_ROOT)/bin"
@for f in $(DOC_FILES); do \
rsync -aun "$(SRC_ROOT)/$$f" "$(TARGET_ROOT)/$$f"; \
done
@for f in $(SCRIPT_FILES); do \
rsync -aun "$(SRC_ROOT)/Install_scripts/$${f##*/}" "$(TARGET_ROOT)/$$f"; \
done
@for f in $(CONFIG_FILES); do \
rsync -aun "$(SRC_ROOT)/$$f" "$(TARGET_ROOT)/$$f"; \
done
@for p in $(BIN_PATTERNS); do \
for f in $$p; do \
if [[ -e "$$f" ]]; then \
rsync -aun "$$f" "$(TARGET_ROOT)/bin/"; \
fi; \
done; \
done
p4-edit:
@echo "Running: p4 edit $(P4_PATHS)"
@cd "$(TARGET_ROOT)" && p4 edit $(P4_PATHS) || true
p4-revert:
@echo "Running: p4 revert -a $(P4_PATHS)"
@cd "$(TARGET_ROOT)" && p4 revert -a $(P4_PATHS) || true
clean-empty-dirs:
@find "$(TARGET_ROOT)" -type d -empty -print