mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-09 14:06:58 +02:00
The big here document in the middle of a if statement confuses the code layout some and I put the git commit outside of the else clause instead of inside. Ooops. The joy of shell.
77 lines
2.1 KiB
Bash
Executable File
77 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2013 The CoreOS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
|
|
. "${SCRIPT_ROOT}/common.sh" || exit 1
|
|
|
|
DEFINE_string portage "" \
|
|
"Path to an existing portage tree to update from instead of cvs."
|
|
DEFINE_string portage_stable "${SRC_ROOT}/third_party/portage-stable" \
|
|
"Path to the portage-stable git checkout."
|
|
DEFINE_string cvsroot ":pserver:anonymous@anoncvs.gentoo.org:/var/cvsroot" \
|
|
"CVS location for gentoo-x86 to use when --portage isn't provided."
|
|
DEFINE_boolean commit ${FLAGS_FALSE} \
|
|
"Commit all changes after updating portage-stable."
|
|
|
|
|
|
# Parse flags
|
|
FLAGS "$@" || exit 1
|
|
eval set -- "${FLAGS_ARGV}"
|
|
switch_to_strict_mode
|
|
|
|
# Accept arguments from STDIN for batch processing
|
|
if [[ -z "$*" ]]; then
|
|
set -- $(</dev/stdin)
|
|
fi
|
|
|
|
if [[ -z "$*" ]]; then
|
|
die "No packages provided"
|
|
fi
|
|
|
|
export CVSROOT="${FLAGS_cvsroot}"
|
|
cd "$FLAGS_portage_stable"
|
|
|
|
for pkg in "$@"; do
|
|
# Only allow packages, not categories or the whole tree
|
|
if [[ ! "$pkg" =~ ^[a-z0-9-][a-z0-9-]*\/[a-zA-Z0-9-][a-zA-Z0-9-]*$ ]] &&
|
|
[[ ! "$pkg" =~ ^(eclass|licenses|profiles|scripts) ]]; then
|
|
die "Invalid name $pkg, must be category/package or special dir."
|
|
fi
|
|
|
|
if [[ -z "$FLAGS_portage" ]]; then
|
|
rm -rf "$pkg"
|
|
cvs export -D now -d "$pkg" "gentoo-x86/$pkg"
|
|
else
|
|
mkdir -p "$pkg"
|
|
rsync -av --del --exclude CVS "/usr/portage/$pkg/" "$pkg"
|
|
fi
|
|
|
|
# Make sure we don't change the repo name to 'gentoo'
|
|
if [[ "$pkg" =~ ^profiles ]]; then
|
|
echo portage-stable > profiles/repo_name
|
|
fi
|
|
|
|
git add -A "$pkg"
|
|
|
|
# TODO(marineam): Update metadata directory?
|
|
done
|
|
|
|
if [[ $FLAGS_commit -eq $FLAGS_TRUE ]]; then
|
|
if [[ $# -eq 1 ]]; then
|
|
git commit -e -m "bump($1): sync with upstream"
|
|
else
|
|
cat > .git/COMMIT_EDITMSG <<EOF
|
|
bump($1): sync with upstream
|
|
|
|
Packages updated:
|
|
$(for p in "$@"; do echo " $p"; done | sort)
|
|
EOF
|
|
git commit -e -F .git/COMMIT_EDITMSG
|
|
fi
|
|
else
|
|
git status
|
|
fi
|