Found using script:
https://gist.github.com/dims/384dea60754042f61d79233603034038
Just run using:
`find . -name .import-restrictions | xargs python ~/junk/sanitize-import-boss.py`
The removed entries are either packages that got moved/renamed/deleted
but are still not cleaned up from .import-restrictions files.
Change-Id: I92c400f74e6f012cc75539311ed4de280e25e918
Currently ConfigFileAndDefaultsToInternalConfig and
FetchConfigFromFileOrCluster are used to default and load InitConfiguration
from file or cluster. These two APIs do a couple of completely separate things
depending on how they were invoked. In the case of
ConfigFileAndDefaultsToInternalConfig, an InitConfiguration could be either
defaulted with external override parameters, or loaded from file.
With FetchConfigFromFileOrCluster an InitConfiguration is either loaded from
file or from the config map in the cluster.
The two share both some functionality, but not enough code. They are also quite
difficult to use and sometimes even error prone.
To solve the issues, the following steps were taken:
- Introduce DefaultedInitConfiguration which returns defaulted version agnostic
InitConfiguration. The function takes InitConfiguration for overriding the
defaults.
- Introduce LoadInitConfigurationFromFile, which loads, converts, validates and
defaults an InitConfiguration from file.
- Introduce FetchInitConfigurationFromCluster that fetches InitConfiguration
from the config map.
- Reduce, when possible, the usage of ConfigFileAndDefaultsToInternalConfig by
replacing it with DefaultedInitConfiguration or LoadInitConfigurationFromFile
invocations.
- Replace all usages of FetchConfigFromFileOrCluster with calls to
LoadInitConfigurationFromFile or FetchInitConfigurationFromCluster.
- Delete FetchConfigFromFileOrCluster as it's no longer used.
- Rename ConfigFileAndDefaultsToInternalConfig to
LoadOrDefaultInitConfiguration in order to better describe what the function
is actually doing.
Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
The rules for address parsing are:
* Explicitly specified addresses must bind successfully
* `localhost` is pinned to `127.0.0.1` and `::1` and at least one of those must bind successfully
This change also makes output of the command consistent
between runs with the same arguments.
Previously the command was using the range via map of addresses
which sometimes was producing different output because the order
of values is not guaranteed in Go.
Move away from arrays to strings to fix several shellcheck-reported
issues. It isn't useful to expand the found files into arrays, because
only things that are checked are if the array is empty or the contents
of the first array item.
Fix also a shellcheck issue about using a literal string as regexp
match. It appears that the original reason for using a regexp was to
avoid specifying the directory in which the script is run. However, due
to the need of calling 'make generated_files', the directory is fixed
anyway, and the regexp can be left out.
Testing the change can be done with the following script which emulates
the different cases which the script can see. In the output the variable
'X' is the array and 'Z' is the string.
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
function find_genfiles() {
find . \
\( \
-not \( \
\( \
-path ./_\* -o \
-path ./.\* \
\) -prune \
\) \
\) -name "$1"
}
# $1 = filename pattern as in "zz_generated.$1.go"
# $2 timestamp file
function newer() {
find_genfiles "$1" | while read -r F; do
if [[ "${F}" -nt "$2" ]]; then
echo "${F}"
fi
done
}
STAMP=stamp
mkdir -p xxx
touch xxx/foobar
touch "${STAMP}"
mkdir -p foo
touch foo/foobar
mkdir -p bar
touch bar/foobar
# two newer files
X=($(newer foobar "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then
echo "X1:"
echo " ${X[*]:-(none)}"
fi
Z="$(newer foobar "${STAMP}")"
if [[ -n "$Z" ]]; then
echo "Z1:"
echo " ${Z}" | tr '\n' ' '
echo ""
fi
# no newer files
touch "${STAMP}"
X=($(newer foobar "${STAMP}"))
if [[ "${#X[*]}" != 0 ]]; then
echo "X2:"
echo " ${X[*]:-(none)}"
fi
Z="$(newer foobar "${STAMP}")"
if [[ -n "$Z" ]]; then
echo "Z2:"
echo " ${Z}" | tr '\n' ' '
echo ""
fi
# one newer file, name matches
touch "${STAMP}"
touch bar/foobar
X=($(newer foobar "${STAMP}"))
if [[ "${#X[@]}" != 1 || ! ( "${X[0]}" =~ "bar/foobar" ) ]]; then
echo "X3:"
echo " ${X[*]:-(none)}"
fi
Z="$(newer foobar "${STAMP}")"
if [[ -z "${Z}" || ${Z} != "./bar/foobar" ]]; then
echo "Z3:"
echo " ${Z:-(none)}" | tr '\n' ' '
echo ""
fi
# one newer file, name doesn't match
touch "${STAMP}"
touch foo/foobar
X=($(newer foobar "${STAMP}"))
if [[ "${#X[@]}" != 1 || ! ( "${X[0]}" =~ "bar/foobar" ) ]]; then
echo "X4:"
echo " ${X[*]:-(none)}"
fi
Z="$(newer foobar "${STAMP}")"
if [[ -z "${Z}" || ${Z} != "./bar/foobar" ]]; then
echo "Z4:"
echo " ${Z:-(none)}" | tr '\n' ' '
echo ""
fi
The expected output from running this script:
X1:
./bar/foobar ./foo/foobar
Z1:
./bar/foobar ./foo/foobar
X4:
./foo/foobar
Z4:
./foo/foobar