Using any awk in any shell on every Unix box and assuming that `...` line in your input and `..` string in your output don't literally exist in your real data and are intended to represent text similar to the text around them:
$ cat tst.awk
(val=="") && /.*\047$/ {
tag = $0
sub(/=.*/,"",tag)
val = ""
}
tag != "" {
split($0,f,/[\047:]/)
val = (val == "" ? "" : val " ") f[2]
if ( /\)$/ ) {
print tag "=\"" val "\""
tag = ""
}
next
}
{ print }
$ awk -f tst.awk file.txt
foo1=bar1
foo2="bar10 bar11 bar"
foo3=('bar3')
foo=1.2.33