Fossil

Hex Artifact Content
Login

Artifact f6ebc17b0a00f136175dcf2ff75e39457e674583b1fd45df8430d4a4a975b3ba:


0000: 23 21 2f 62 69 6e 2f 62 61 73 68 0a 42 41 53 45  #!/bin/bash.BASE
0010: 50 4f 52 54 3d 31 32 33 34 35 0a 46 4f 53 53 49  PORT=12345.FOSSI
0020: 4c 3d 66 6f 73 73 69 6c 0a 4f 4c 44 50 49 44 3d  L=fossil.OLDPID=
0030: 60 70 67 72 65 70 20 2d 50 20 31 20 66 6f 73 73  `pgrep -P 1 foss
0040: 69 6c 60 0a 50 47 41 52 47 53 3d 22 2d 50 20 31  il`.PGARGS="-P 1
0050: 22 0a 0a 69 66 20 5b 20 22 24 31 22 20 3d 20 22  "..if [ "$1" = "
0060: 2d 66 22 20 5d 20 3b 20 74 68 65 6e 20 50 47 41  -f" ] ; then PGA
0070: 52 47 53 3d 20 3b 20 73 68 69 66 74 20 3b 20 66  RGS= ; shift ; f
0080: 69 0a 0a 69 66 20 5b 20 2d 6e 20 22 24 4f 4c 44  i..if [ -n "$OLD
0090: 50 49 44 22 20 5d 0a 74 68 65 6e 0a 20 20 20 20  PID" ].then.    
00a0: 65 63 68 6f 20 22 4b 69 6c 6c 69 6e 67 20 72 75  echo "Killing ru
00b0: 6e 6e 69 6e 67 20 46 6f 73 73 69 6c 20 73 65 72  nning Fossil ser
00c0: 76 65 72 20 66 69 72 73 74 2e 2e 2e 22 0a 20 20  ver first...".  
00d0: 20 20 70 6b 69 6c 6c 20 24 50 47 41 52 47 53 20    pkill $PGARGS 
00e0: 66 6f 73 73 69 6c 0a 0a 20 20 20 20 66 6f 72 20  fossil..    for 
00f0: 69 20 69 6e 20 24 28 73 65 71 20 33 30 29 0a 20  i in $(seq 30). 
0100: 20 20 20 64 6f 0a 20 20 20 20 20 20 20 20 69 66     do.        if
0110: 20 5b 20 2d 6e 20 22 24 28 70 67 72 65 70 20 24   [ -n "$(pgrep $
0120: 50 47 41 52 47 53 20 66 6f 73 73 69 6c 29 22 20  PGARGS fossil)" 
0130: 5d 0a 20 20 20 20 20 20 20 20 74 68 65 6e 0a 20  ].        then. 
0140: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 5b 20             if [ 
0150: 24 69 20 2d 65 71 20 31 20 5d 0a 20 20 20 20 20  $i -eq 1 ].     
0160: 20 20 20 20 20 20 20 74 68 65 6e 0a 20 20 20 20         then.    
0170: 20 20 20 20 20 20 20 20 20 20 20 20 65 63 68 6f              echo
0180: 20 2d 6e 20 22 57 61 69 74 69 6e 67 20 66 6f 72   -n "Waiting for
0190: 20 69 74 20 74 6f 20 64 69 65 2e 2e 2e 22 0a 20   it to die...". 
01a0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a             else.
01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01c0: 65 63 68 6f 20 2d 6e 20 2e 0a 20 20 20 20 20 20  echo -n ..      
01d0: 20 20 20 20 20 20 66 69 0a 20 20 20 20 20 20 20        fi.       
01e0: 20 20 20 20 20 73 6c 65 65 70 20 27 30 2e 31 27       sleep '0.1'
01f0: 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20  .        else.  
0200: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 0a            break.
0210: 20 20 20 20 20 20 20 20 66 69 0a 20 20 20 20 20          fi.     
0220: 20 20 20 65 63 68 6f 0a 20 20 20 20 64 6f 6e 65     echo.    done
0230: 0a 0a 20 20 20 20 6b 69 6c 6c 61 6c 6c 20 2d 39  ..    killall -9
0240: 20 66 6f 73 73 69 6c 20 32 3e 20 2f 64 65 76 2f   fossil 2> /dev/
0250: 6e 75 6c 6c 0a 66 69 0a 0a 69 66 20 5b 20 2d 78  null.fi..if [ -x
0260: 20 2e 2f 66 6f 73 73 69 6c 20 5d 0a 74 68 65 6e   ./fossil ].then
0270: 0a 20 20 20 20 23 20 57 65 27 72 65 20 72 75 6e  .    # We're run
0280: 6e 69 6e 67 20 66 72 6f 6d 20 61 20 62 75 69 6c  ning from a buil
0290: 64 20 74 72 65 65 2c 20 73 6f 20 75 73 65 20 74  d tree, so use t
02a0: 68 61 74 20 76 65 72 73 69 6f 6e 20 69 6e 73 74  hat version inst
02b0: 65 61 64 0a 20 20 20 20 46 4f 53 53 49 4c 3d 2e  ead.    FOSSIL=.
02c0: 2f 66 6f 73 73 69 6c 0a 66 69 0a 0a 66 75 6e 63  /fossil.fi..func
02d0: 74 69 6f 6e 20 73 74 61 72 74 5f 6f 6e 65 28 29  tion start_one()
02e0: 20 7b 0a 20 20 20 20 62 6e 3d 24 31 0a 20 20 20   {.    bn=$1.   
02f0: 20 70 6f 72 74 3d 24 28 28 24 42 41 53 45 50 4f   port=$(($BASEPO
0300: 52 54 20 2b 20 24 32 29 29 0a 20 20 20 20 75 72  RT + $2)).    ur
0310: 6c 3d 22 24 33 22 0a 20 20 20 20 69 66 20 5b 20  l="$3".    if [ 
0320: 2d 6e 20 22 24 75 72 6c 22 20 5d 20 3b 20 74 68  -n "$url" ] ; th
0330: 65 6e 20 62 61 73 65 75 72 6c 3d 22 2d 2d 62 61  en baseurl="--ba
0340: 73 65 75 72 6c 20 24 75 72 6c 22 20 3b 20 66 69  seurl $url" ; fi
0350: 0a 0a 20 20 20 20 24 46 4f 53 53 49 4c 20 73 65  ..    $FOSSIL se
0360: 72 76 65 72 20 2d 2d 6c 6f 63 61 6c 68 6f 73 74  rver --localhost
0370: 20 2d 2d 70 6f 72 74 20 24 70 6f 72 74 20 2d 2d   --port $port --
0380: 73 63 67 69 20 24 62 61 73 65 75 72 6c 20 5c 0a  scgi $baseurl \.
0390: 20 20 20 20 20 20 20 20 20 20 20 20 2d 2d 65 72              --er
03a0: 72 6f 72 6c 6f 67 20 7e 2f 6c 6f 67 2f 66 6f 73  rorlog ~/log/fos
03b0: 73 69 6c 2f 24 62 6e 2d 65 72 72 6f 72 73 2e 6c  sil/$bn-errors.l
03c0: 6f 67 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20  og \.           
03d0: 20 7e 2f 6d 75 73 65 75 6d 2f 24 62 6e 2e 66 6f   ~/museum/$bn.fo
03e0: 73 73 69 6c 20 3e 20 7e 2f 6c 6f 67 2f 66 6f 73  ssil > ~/log/fos
03f0: 73 69 6c 2f 24 62 6e 2d 73 74 64 6f 75 74 2e 6c  sil/$bn-stdout.l
0400: 6f 67 20 26 0a 20 20 20 20 65 63 68 6f 20 46 6f  og &.    echo Fo
0410: 73 73 69 6c 20 73 65 72 76 65 72 20 72 75 6e 6e  ssil server runn
0420: 69 6e 67 20 66 6f 72 20 24 62 6e 2c 20 50 49 44  ing for $bn, PID
0430: 20 24 21 2c 20 70 6f 72 74 20 24 70 6f 72 74 2e   $!, port $port.
0440: 0a 7d 0a 0a 73 74 61 72 74 5f 6f 6e 65 20 65 78  .}..start_one ex
0450: 61 6d 70 6c 65 20 30 20 68 74 74 70 73 3a 2f 2f  ample 0 https://
0460: 65 78 61 6d 70 6c 65 2e 63 6f 6d 2f 63 6f 64 65  example.com/code
0470: 0a 73 74 61 72 74 5f 6f 6e 65 20 66 6f 6f 20 20  .start_one foo  
0480: 20 20 20 31 20 23 20 68 74 74 70 73 3a 2f 2f 66     1 # https://f
0490: 6f 6f 2e 6e 65 74 0a                             oo.net.