code: func printConfigChangeHelp(conf jsonconfig.Obj) {
  	// rename maps from old key names to the new ones.
  	// If there is no new one, the value is the empty string.
  	rename := map[string]string{
  		"keyId":            "identity",
  		"publicKeyBlobref": "",
  		"selfPubKeyDir":    "",
  		"secretRing":       "identitySecretRing",
  	}
  	oldConfig := false
  	configChangedMsg := fmt.Sprintf("The client configuration file (%s) keys have changed.\n", osutil.UserClientConfigPath())
  	for _, unknown := range conf.UnknownKeys() {
  		v, ok := rename[unknown]
  		if ok {
  			if v != "" {
  				configChangedMsg += fmt.Sprintf("%q should be renamed %q.\n", unknown, v)
  			} else {
  				configChangedMsg += fmt.Sprintf("%q should be removed.\n", unknown)
  			}
  			oldConfig = true
  		}
  	}
  	if oldConfig {
  		configChangedMsg += "Please see https://perkeep.org/doc/client-config, or use pk-put init to recreate a default one."
  		log.Print(configChangedMsg)
  	}
  }
docs: // printConfigChangeHelp checks if conf contains obsolete keys,
  // and prints additional help in this case.