Read the statement by Michael Teeuw here.
Storing variables to be ignored by git in a js file?
-
you could use
envsubst < config/config.js.template > config/config.js
.The
config.js.template
is the config for both which contains variables for the different values. So you could write a script which sets the variables for user1 and then runenvsubst
for config1 and the same for user2/config2 afterwards. -
@karsten13 same as I suggested different tool
but envsubst needs it’s values in the environment variables… so another hidden thing (to me)
-
only wanted to post this variant …
As background: This is a feature of my docker container where you can use a
config.js.template
and the variables are defined in thedocker-compose.yml
which starts the container and before starting mm I runenvsubst
to make the realconfig.js
. -
@timogden I’ve created a module to extract the config so you don’t need to maintain your own whole MM fork: https://forum.magicmirror.builders/topic/16224/mmm-personalconfig-persist-personal-config-to-github/1
A way to achieve what you want could be to create your own copy of personal config with your mirror config. Then make a clone of if for your friend where you do the specific changes. Changes to your repo then can be pulled to the other one via Pull requests.
In combination with MMM-UpdateNotification with can pull updates automatically, your friend won’t need to do anything. -
@sdetweil Ok, implementing @sdetweil 's suggestions, I have created a working version. This is my workflow.
// config/dictionary.txt // This is a list of key-value or string-replacement pairs "{latitude}" : "40" "{longitude}" : "-70"
// installers/copy-values.sh // sed command found here: // https://unix.stackexchange.com/questions/269368/string-replacement-using-a-dictionary cd ~/MagicMirror cp config/config.model.js config/config.js sed ' s|"\(.*\)"[[:blank:]]*:[[:blank:]]*"\(.*\)"|\1\ \2| h s|.*\n|| s|[\&/]|\\&|g x s|\n.*|| s|[[\.*^$/]|\\&|g G s|\(.*\)\n\(.*\)|s/\1/\2/g| ' config/dictionary.txt | sed -i -f - config/config.js DISPLAY=:0 npm start
Now I can have separate dictionary.txt files on both machines for any local important information, which I will add to .gitignore. I will continue to modify config.model.js, and config.model.js will be copied and cleaned up with all the right values before every start of the mirror.
-
@timogden Also, I should add that there is nothing fancy about the strings on the left-hand side of my dictionary.txt. That’s just how I decided to distinigush them. This is how I would write my config.model.js file now:
// config/config.model.js ... config: { lat: {latitude}, lon: {longitude}, apiKey: {API_KEY}, } ...
-
@timogden cool… I would just use them where u need them in any module in the template.
and then replace all…
also I would use the quoted on the left (and in the config.js template)
and the replace with or without as appropriate (so u can replace numbers without and text with quotes)using the quotes means u can run npm run config:check and not get errors