cos-kernel-devenv: let user specify custom toolchain version

Add `-t` comman-line switch that allows container consumer to specify
a custom version of ChromiumOS-packaged toolchain for a freestyle
development mode.

Change-Id: Ie1af825ae8e5ecfe715c00e830c2dae946b4b798
Reviewed-on: https://cos-review.googlesource.com/c/cos/tools/+/24235
Cloud-Build: GCB Service account <228075978874@cloudbuild.gserviceaccount.com>
Reviewed-by: Meena Shanmugam <meenashanmugam@google.com>
Reviewed-by: Roy Yang <royyang@google.com>
Tested-by: Oleksandr Tymoshenko <ovt@google.com>
diff --git a/src/cmd/cos_kernel_devenv/devenv.sh b/src/cmd/cos_kernel_devenv/devenv.sh
index f5583af..73225bf 100755
--- a/src/cmd/cos_kernel_devenv/devenv.sh
+++ b/src/cmd/cos_kernel_devenv/devenv.sh
@@ -28,7 +28,6 @@
 MODE=""
 
 CROS_TC_VERSION="2021.06.26.094653"
-CROS_TC_DATE="2021/06"
 CROS_TC_DOWNLOAD_GCS="https://storage.googleapis.com/chromiumos-sdk/"
 
 # Can be overridden by the command-line argument
@@ -224,7 +223,8 @@
 install_generic_cross_toolchain() {
   info "Downloading and installing a toolchain"
   # Download toolchain_env if present
-  local -r tc_download_url="${CROS_TC_DOWNLOAD_GCS}${CROS_TC_DATE}/${TOOLCHAIN_ARCH}-cros-linux-gnu-${CROS_TC_VERSION}.tar.xz"
+  local -r tc_date="$(echo ${CROS_TC_VERSION} | sed  -E 's/\.(..).*/\/\1/')"
+  local -r tc_download_url="${CROS_TC_DOWNLOAD_GCS}${tc_date}/${TOOLCHAIN_ARCH}-cros-linux-gnu-${CROS_TC_VERSION}.tar.xz"
 
   # Install toolchain pkg
   install_cross_toolchain_pkg "${tc_download_url}"
@@ -286,13 +286,14 @@
 usage() {
   echo "Usage: $0 [-k | -m] [-A <x86|arm64>] [-B <build>] [-C <config>]" 1>&2
   echo "    [-B <build> | -b <board> -R <release> | -G <GCS_bucket>]"
+  echo "    [-t <toolchain_version>]"
   exit $RETCODE_ERROR
 }
 
 main() {
   local build_target="shell"
   local custom_bucket=""
-  while getopts "A:B:C:G:R:b:km" o; do
+  while getopts "A:B:C:G:R:b:kmt:" o; do
     case "${o}" in
       A) KERNEL_ARCH=${OPTARG} ;;
       B) BUILD_ID=${OPTARG} ;;
@@ -302,6 +303,7 @@
       b) BOARD=${OPTARG} ;;
       k) build_target="kernel" ;;
       m) build_target="module" ;;
+      t) CROS_TC_VERSION="${OPTARG}" ;;
       *) usage ;;
     esac
   done