- Added NotifyPanelComponent for managing notification channels and rules. - Implemented reactive forms for channel and rule management. - Created unit tests for NotifyPanelComponent to validate functionality. - Developed MockNotifyApiService to simulate API interactions for testing. - Added mock data for channels, rules, and deliveries to facilitate testing. - Introduced RuntimeEventFactoryTests to ensure correct event creation with build ID.
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Sync preview NuGet packages into the local offline feed.
 | 
						|
# Reads package metadata from ops/devops/nuget-preview-packages.csv
 | 
						|
# and ensures ./local-nuget holds the expected artefacts (with SHA-256 verification).
 | 
						|
# Optional 4th CSV column can override the download base (e.g. dotnet-public flat container).
 | 
						|
 | 
						|
set -euo pipefail
 | 
						|
 | 
						|
repo_root="$(git -C "${BASH_SOURCE%/*}/.." rev-parse --show-toplevel 2>/dev/null || pwd)"
 | 
						|
manifest="${repo_root}/ops/devops/nuget-preview-packages.csv"
 | 
						|
dest="${repo_root}/local-nuget"
 | 
						|
nuget_v2_base="${NUGET_V2_BASE:-https://www.nuget.org/api/v2/package}"
 | 
						|
 | 
						|
if [[ ! -f "$manifest" ]]; then
 | 
						|
  echo "Manifest not found: $manifest" >&2
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
mkdir -p "$dest"
 | 
						|
 | 
						|
fetch_package() {
 | 
						|
  local package="$1"
 | 
						|
  local version="$2"
 | 
						|
  local expected_sha="$3"
 | 
						|
  local source_base="$4"
 | 
						|
  local target="$dest/${package}.${version}.nupkg"
 | 
						|
  local url
 | 
						|
 | 
						|
  if [[ -n "$source_base" ]]; then
 | 
						|
    local package_lower
 | 
						|
    package_lower="${package,,}"
 | 
						|
    url="${source_base%/}/${package_lower}/${version}/${package_lower}.${version}.nupkg"
 | 
						|
  else
 | 
						|
    url="${nuget_v2_base%/}/${package}/${version}"
 | 
						|
  fi
 | 
						|
 | 
						|
  echo "[sync-nuget] Fetching ${package} ${version}"
 | 
						|
  local tmp
 | 
						|
  tmp="$(mktemp)"
 | 
						|
  trap 'rm -f "$tmp"' RETURN
 | 
						|
  curl -fsSL --retry 3 --retry-delay 1 "$url" -o "$tmp"
 | 
						|
  local actual_sha
 | 
						|
  actual_sha="$(sha256sum "$tmp" | awk '{print $1}')"
 | 
						|
  if [[ "$actual_sha" != "$expected_sha" ]]; then
 | 
						|
    echo "Checksum mismatch for ${package} ${version}" >&2
 | 
						|
    echo "  expected: $expected_sha" >&2
 | 
						|
    echo "  actual:   $actual_sha" >&2
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
  mv "$tmp" "$target"
 | 
						|
  trap - RETURN
 | 
						|
}
 | 
						|
 | 
						|
while IFS=',' read -r package version sha source_base; do
 | 
						|
  [[ -z "$package" || "$package" == \#* ]] && continue
 | 
						|
 | 
						|
  local_path="$dest/${package}.${version}.nupkg"
 | 
						|
  if [[ -f "$local_path" ]]; then
 | 
						|
    current_sha="$(sha256sum "$local_path" | awk '{print $1}')"
 | 
						|
    if [[ "$current_sha" == "$sha" ]]; then
 | 
						|
      echo "[sync-nuget] OK ${package} ${version}"
 | 
						|
      continue
 | 
						|
    fi
 | 
						|
    echo "[sync-nuget] SHA mismatch for ${package} ${version}, refreshing"
 | 
						|
  else
 | 
						|
    echo "[sync-nuget] Missing ${package} ${version}"
 | 
						|
  fi
 | 
						|
 | 
						|
  fetch_package "$package" "$version" "$sha" "${source_base:-}"
 | 
						|
done < "$manifest"
 |