@@ -266,6 +266,45 @@ get_installed_version() {
266266 fi
267267}
268268
269+ resolve_install_channel () {
270+ case " ${MOLE_VERSION:- } " in
271+ main | latest)
272+ printf ' nightly\n'
273+ return 0
274+ ;;
275+ dev)
276+ printf ' dev\n'
277+ return 0
278+ ;;
279+ esac
280+
281+ if [[ " ${MOLE_EDGE_INSTALL:- } " == " true" ]]; then
282+ printf ' nightly\n'
283+ return 0
284+ fi
285+
286+ printf ' stable\n'
287+ }
288+
289+ write_install_channel_metadata () {
290+ local channel=" $1 "
291+ local metadata_file=" $CONFIG_DIR /install_channel"
292+
293+ local tmp_file
294+ tmp_file=$( mktemp " ${CONFIG_DIR} /install_channel.XXXXXX" ) || return 1
295+ {
296+ printf ' CHANNEL=%s\n' " $channel "
297+ } > " $tmp_file " || {
298+ rm -f " $tmp_file " 2> /dev/null || true
299+ return 1
300+ }
301+
302+ mv -f " $tmp_file " " $metadata_file " || {
303+ rm -f " $tmp_file " 2> /dev/null || true
304+ return 1
305+ }
306+ }
307+
269308# CLI parsing (supports main/latest and version tokens).
270309parse_args () {
271310 local -a args=(" $@ " )
@@ -712,6 +751,12 @@ perform_install() {
712751 installed_version=" $source_version "
713752 fi
714753
754+ local install_channel
755+ install_channel=" $( resolve_install_channel) "
756+ if ! write_install_channel_metadata " $install_channel " ; then
757+ log_warning " Could not write install channel metadata"
758+ fi
759+
715760 # Edge installs get a suffix to make the version explicit.
716761 if [[ " ${MOLE_EDGE_INSTALL:- } " == " true" ]]; then
717762 installed_version=" ${installed_version} -edge"
@@ -795,6 +840,12 @@ perform_update() {
795840 updated_version=" $target_version "
796841 fi
797842
843+ local install_channel
844+ install_channel=" $( resolve_install_channel) "
845+ if ! write_install_channel_metadata " $install_channel " ; then
846+ log_warning " Could not write install channel metadata"
847+ fi
848+
798849 echo -e " ${GREEN}${ICON_SUCCESS}${NC} Updated to latest version, $updated_version "
799850}
800851
0 commit comments