s4
annotate s4-newworld.sh @ 904:0352ff0fb37f
Suppress user.name update for unchanged values, which takes a lot time.
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Sun, 03 Jan 2021 13:37:20 +0900 |
parents | 567980314463 |
children | 102c2b14c5d8 |
rev | line source |
---|---|
yuuji@771 | 1 #!/bin/ksh |
yuuji@771 | 2 #!/bin/sh |
yuuji@771 | 3 # Create New Wolrd in s4 |
yuuji@771 | 4 # Arguments: |
yuuji@771 | 5 # $1 = World Display Name in UTF-8 |
yuuji@771 | 6 # $2 = World ShortName in alpha-numeric |
yuuji@771 | 7 # $3 = World Description in UTF-8 |
yuuji@771 | 8 dispname=$1 |
yuuji@771 | 9 shortname=$2 |
yuuji@771 | 10 desc=$3 |
yuuji@771 | 11 |
yuuji@771 | 12 readvar() { # $1=varname $2=PromptString |
yuuji@771 | 13 echo -n "${2:-$1=:} " |
yuuji@771 | 14 read $1 |
yuuji@771 | 15 } |
yuuji@771 | 16 |
yuuji@817 | 17 if [ -z "$HTTP_HOST" ]; then |
yuuji@771 | 18 while true; do |
yuuji@771 | 19 dispname=`echo $dispname | tr -d ': \t\n"' | fold -w 28 | head -1` |
yuuji@771 | 20 test -n "$dispname" && break |
yuuji@771 | 21 readvar dispname "分かりやすいWorld名14字以内" |
yuuji@771 | 22 done |
yuuji@771 | 23 while true; do |
yuuji@771 | 24 shortname=`echo $shortname | tr -c -d '_0-9A-Za-z.-' | colrm 11` |
yuuji@771 | 25 test -n "$shortname" && break |
yuuji@771 | 26 readvar shortname "英数字のみ10字以内のWorldシンボル(URLの一部)" |
yuuji@771 | 27 done |
yuuji@771 | 28 while true; do |
yuuji@771 | 29 desc=`echo $desc | tr -d ': \t\n"'` |
yuuji@771 | 30 test -n "$desc" && break |
yuuji@771 | 31 readvar desc "概要(どのような基準でこのWorldを使うかなど)" |
yuuji@771 | 32 done |
yuuji@771 | 33 fi |
yuuji@771 | 34 echo "wl=$S4WORLDLIST" |
yuuji@771 | 35 echo "$dispname:$shortname:$desc" |
yuuji@817 | 36 # Create config |
yuuji@817 | 37 DB=db/$shortname.sq3; export DB |
yuuji@817 | 38 `dirname $0`/s4-init.sh |
yuuji@817 | 39 . `dirname $0`/s4-config.sh |
yuuji@817 | 40 if ! type htmlescape >/dev/null 2>&1; then |
yuuji@817 | 41 . `dirname $0`/s4-funcs.sh ### > /dev/null 2>&1 |
yuuji@817 | 42 trap 'exit 1' INT QUIT |
yuuji@817 | 43 fi |
yuuji@817 | 44 |
yuuji@771 | 45 newworld=$( |
yuuji@817 | 46 { echo $S4WORLDLIST | tr ' ' '\n' \ |
yuuji@771 | 47 | awk -F: "\$2 != \"$shortname\"{print}" |
yuuji@771 | 48 echo "$dispname:$shortname:$desc" |
yuuji@817 | 49 } | tr '\n' ' ' | sed 's/ $//' | tr -d '"' |
yuuji@771 | 50 ) |
yuuji@771 | 51 if [ -z "$newworld" ]; then |
yuuji@771 | 52 exit |
yuuji@771 | 53 fi |
yuuji@771 | 54 |
yuuji@817 | 55 masterdb=`(unset DB; . ./s4-config.sh; echo $DB)` |
yuuji@817 | 56 S4MASTERDB=${masterdb:-db/cgi.sq3} |
yuuji@817 | 57 echo Synching account: db=$db URL=$URL isCGI=$isCGI mas=$S4MASTERDB |
yuuji@817 | 58 . ./s4-world.sh && syncaccount 'force' |
yuuji@817 | 59 echo Synching done |
yuuji@771 | 60 bgcolor=$( |
yuuji@771 | 61 od -An -tu1 -N3 < /dev/urandom \ |
yuuji@771 | 62 | { read r g b |
yuuji@771 | 63 r=$((192+r/4)); g=$((192+g/4)); b=$((192+b/4)) |
yuuji@771 | 64 printf "#%x%x%x" $r $g $b |
yuuji@771 | 65 }) |
yuuji@771 | 66 cat<<-EOF > s4-config-$shortname.sh |
yuuji@771 | 67 S4MASTERURL=\$URL |
yuuji@785 | 68 URL=`dirname ${URL}.`/s4-world-$shortname$cgiext |
yuuji@771 | 69 S4COLOR="$bgcolor" # Change this! |
yuuji@771 | 70 DB=$dbdir/$shortname.sq3 |
yuuji@771 | 71 SESSDB=$dbdir/sess.sq3 |
yuuji@771 | 72 S4MASTERDB=$db |
yuuji@771 | 73 S4CSS=$shortname.css |
yuuji@771 | 74 TMPDIR=$tmpdir/$shortname |
yuuji@771 | 75 EOF |
yuuji@771 | 76 # Create CSS |
yuuji@771 | 77 cat<<-EOF > $shortname.css |
yuuji@771 | 78 body {background: $bgcolor;} |
yuuji@771 | 79 body.moderated {background: $bgcolor; border: 3px gold solid;} |
yuuji@771 | 80 EOF |
yuuji@771 | 81 mkdir -m 1775 $tmpdir/$shortname |
yuuji@771 | 82 # Update s4-config.sh |
yuuji@771 | 83 cat<<-EOF | ed s4-config.sh |
yuuji@771 | 84 g/^S4WORLDLIST=/d |
yuuji@771 | 85 wq |
yuuji@771 | 86 EOF |
yuuji@817 | 87 echo "S4WORLDLIST=\"$newworld\"" >> s4-config.sh |
yuuji@817 | 88 |
yuuji@771 | 89 (cd `dirname $0`; ln -s s4$cgiext s4-world-$shortname$cgiext) |
yuuji@771 | 90 echo $newworld added |