Revision control

Copy as Markdown

#!/bin/bash
dir=$(dirname "$0")
# shellcheck disable=SC1091
source "${dir}/../common.sh"
app=firefox_ios
channel=developer
# app_reinstall
clear
display_comment "The --patch FILE option is added to all commands that accept an experiment"
display_subcomment "Patch files are JSON files of the format given by the defaults command…"
waitrun "nimbus-cli --app $app --channel $channel defaults --output defaults.json"
open_editor "./defaults.json"
anykey
display_subcomment "or the features --multi command"
waitrun "nimbus-cli --app $app --channel $channel features mobile-default-browser-cta-copy-test-ios --branch treatment-a --multi --output feature.json"
open_editor "./feature.json"
anykey
clear
display_comment "We can edit this file, either manually or via other tools"
display_subcomment "Here we replace all the trigger expressions in a message with 'true'…"
runwait "jq '.messaging|{ messaging: { triggers: .triggers|map_values(\"true\") } }' ./defaults.json > true-triggers-patch.json"
open_editor "./true-triggers-patch.json"
display_break
display_subcomment "… or replace the trigger for all messages to ALWAYS"
runwait "jq '.messaging|{ messaging: { messages: .messages|map_values({ trigger: [\"ALWAYS\"]}) } }' feature.json > patch.json"
justrun "code ./patch.json"
clear
display_comment "Once we have the patch files we can use it to patch an experiment before enrolling"
waitrun "nimbus-cli --app $app --channel $channel enroll mobile-default-browser-cta-copy-test-ios --branch treatment-a --patch patch.json"
anykey
display_comment "To really prove it working, let's switch edit the message"
runwait "jq '.messaging|{ messaging: { messages: .messages|map_values({ title: \"A title from a PATCH file\", trigger: [\"ALWAYS\"]}) } }' feature.json > patch.json"
waitrun "nimbus-cli --app $app --channel $channel enroll mobile-default-browser-cta-copy-test-ios --branch treatment-a --patch patch.json"
anykey
clear
display_comment "Any Questions?"
anykey
justrun "rm ./*.json"