Collection of themes/skins for the Fossil SCM

⌈⌋ ⎇ branch:  Fossil Skins Extra


Hex Artifact Content

Artifact 38a14bbda9ea0df1c8ec41fbafe584088a9805e5:

  • Executable file parts/unpackskin — part of check-in [892c5f4a68] at 2015-02-12 09:51:55 on branch trunk — Fix config length field (must include card prefix size). (user: mario size: 1263)

0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 70 68 70 20 2d  #!/usr/bin/php -
0010: 71 43 0a 3c 3f 70 68 70 0a 23 0a 23 20 45 78 74  qC.<?php.#.# Ext
0020: 72 61 63 74 20 66 6f 73 73 69 6c 20 63 6f 6e 66  ract fossil conf
0030: 69 67 75 72 61 74 69 6f 6e 20 63 61 72 64 20 2e  iguration card .
0040: 74 78 74 20 66 69 6c 65 20 74 6f 20 73 75 62 64  txt file to subd
0050: 69 72 65 63 74 6f 72 79 2e 0a 23 0a 23 20 53 70  irectory..#.# Sp
0060: 6c 69 74 20 75 70 20 69 6e 74 6f 20 69 6e 64 69  lit up into indi
0070: 76 69 64 75 61 6c 20 63 6f 6e 66 69 67 20 73 65  vidual config se
0080: 63 74 69 6f 6e 73 3a 0a 23 20 20 20 20 20 20 75  ctions:.#      u
0090: 6e 70 61 63 6b 73 6b 69 6e 20 73 6b 69 6e 2e 74  npackskin skin.t
00a0: 78 74 20 64 69 72 2f 0a 23 0a 23 20 57 6f 75 6c  xt dir/.#.# Woul
00b0: 64 20 63 72 65 61 74 65 3a 0a 23 20 20 20 20 20  d create:.#     
00c0: 20 2a 20 64 69 72 2f 6e 61 6d 65 2e 68 65 61 64   * dir/name.head
00d0: 65 72 0a 23 20 20 20 20 20 20 2a 20 64 69 72 2f  er.#      * dir/
00e0: 6e 61 6d 65 2e 66 6f 6f 74 65 72 0a 23 20 20 20  name.footer.#   
00f0: 20 20 20 2a 20 64 69 72 2f 6e 61 6d 65 2e 63 73     * dir/name.cs
0100: 73 0a 23 20 20 20 20 20 20 2a 20 64 69 72 2f 6e  s.#      * dir/n
0110: 61 6d 65 2e 74 68 31 2d 73 65 74 75 70 0a 23 20  ame.th1-setup.# 
0120: 20 20 20 20 20 65 74 63 2e 0a 23 0a 23 20 44 6f       etc..#.# Do
0130: 65 73 6e 27 74 20 77 6f 72 6b 20 6f 6e 20 72 61  esn't work on ra
0140: 77 20 2d 73 71 6c 20 6f 72 20 2d 73 71 6c 2d 72  w -sql or -sql-r
0150: 65 67 20 63 6f 6e 66 69 67 20 63 61 72 64 20 66  eg config card f
0160: 69 6c 65 73 0a 23 20 28 77 68 69 63 68 20 60 6d  iles.# (which `m
0170: 6b 73 6b 69 6e 60 20 63 61 6e 20 63 72 65 61 74  kskin` can creat
0180: 65 20 61 6c 74 65 72 6e 61 74 69 76 65 6c 79 29  e alternatively)
0190: 2e 0a 23 0a 0a 0a 23 20 63 6d 64 20 61 72 67 73  ..#...# cmd args
01a0: 0a 24 66 72 6f 6d 20 3d 20 24 5f 53 45 52 56 45  .$from = $_SERVE
01b0: 52 5b 22 61 72 67 76 22 5d 5b 31 5d 3b 0a 24 73  R["argv"][1];.$s
01c0: 6b 69 6e 5f 6e 61 6d 65 20 3d 20 62 61 73 65 6e  kin_name = basen
01d0: 61 6d 65 28 24 66 72 6f 6d 2c 20 22 74 78 74 22  ame($from, "txt"
01e0: 29 3b 0a 24 74 64 69 72 20 3d 20 24 5f 53 45 52  );.$tdir = $_SER
01f0: 56 45 52 5b 22 61 72 67 76 22 5d 5b 32 5d 20 6f  VER["argv"][2] o
0200: 72 20 24 74 64 69 72 20 3d 20 22 2e 22 3b 0a 66  r $tdir = ".";.f
0210: 69 6c 65 5f 65 78 69 73 74 73 28 24 74 64 69 72  ile_exists($tdir
0220: 29 20 6f 72 20 6d 6b 64 69 72 28 24 74 64 69 72  ) or mkdir($tdir
0230: 29 3b 0a 0a 23 20 72 65 61 64 0a 24 73 72 63 20  );..# read.$src 
0240: 3d 20 66 69 6c 65 5f 67 65 74 5f 63 6f 6e 74 65  = file_get_conte
0250: 6e 74 73 28 24 66 72 6f 6d 29 3b 0a 0a 23 20 65  nts($from);..# e
0260: 78 74 72 61 63 74 20 6d 65 74 61 20 6e 61 6d 65  xtract meta name
0270: 3f 0a 69 66 20 28 70 72 65 67 5f 6d 61 74 63 68  ?.if (preg_match
0280: 28 22 2f 5e 23 5c 56 2b 5c 22 28 5b 5c 77 2e 5c  ("/^#\V+\"([\w.\
0290: 68 2d 5d 2b 29 5c 22 2f 6d 22 2c 20 24 73 72 63  h-]+)\"/m", $src
02a0: 2c 20 24 75 75 29 29 20 7b 0a 20 20 20 24 73 6b  , $uu)) {.   $sk
02b0: 69 6e 5f 6e 61 6d 65 20 3d 20 24 75 75 5b 31 5d  in_name = $uu[1]
02c0: 3b 0a 7d 0a 0a 23 20 66 69 6e 64 20 6d 61 74 63  ;.}..# find matc
02d0: 68 69 6e 67 20 63 6f 6e 66 69 67 20 68 65 61 64  hing config head
02e0: 65 72 20 6c 69 6e 65 73 0a 24 72 78 20 3d 20 22  er lines.$rx = "
02f0: 2f 5e 63 6f 6e 66 69 67 20 5c 2f 63 6f 6e 66 69  /^config \/confi
0300: 67 20 28 5c 64 2b 29 5c 6e 22 0a 20 20 20 20 2e  g (\d+)\n".    .
0310: 20 22 28 5c 64 2b 20 27 28 5b 5c 77 2d 5d 2b 29   "(\d+ '([\w-]+)
0320: 27 20 76 61 6c 75 65 20 29 27 2f 6d 22 3b 0a 70  ' value )'/m";.p
0330: 72 65 67 5f 6d 61 74 63 68 5f 61 6c 6c 28 24 72  reg_match_all($r
0340: 78 2c 20 24 73 72 63 2c 20 24 75 75 2c 20 50 52  x, $src, $uu, PR
0350: 45 47 5f 53 45 54 5f 4f 52 44 45 52 7c 50 52 45  EG_SET_ORDER|PRE
0360: 47 5f 4f 46 46 53 45 54 5f 43 41 50 54 55 52 45  G_OFFSET_CAPTURE
0370: 29 3b 0a 66 6f 72 65 61 63 68 20 28 24 75 75 20  );.foreach ($uu 
0380: 61 73 20 24 72 6f 77 29 20 7b 0a 0a 20 20 20 20  as $row) {..    
0390: 2f 2f 20 72 78 20 66 69 65 6c 64 73 0a 20 20 20  // rx fields.   
03a0: 20 6c 69 73 74 28 24 68 65 61 64 65 72 2c 20 24   list($header, $
03b0: 70 6f 73 29 20 3d 20 24 72 6f 77 5b 30 5d 3b 0a  pos) = $row[0];.
03c0: 20 20 20 20 24 6c 65 6e 67 74 68 20 3d 20 24 72      $length = $r
03d0: 6f 77 5b 31 5d 5b 30 5d 3b 0a 20 20 20 20 24 63  ow[1][0];.    $c
03e0: 61 72 64 20 3d 20 24 72 6f 77 5b 32 5d 5b 30 5d  ard = $row[2][0]
03f0: 3b 0a 20 20 20 20 24 6e 61 6d 65 20 3d 20 24 72  ;.    $name = $r
0400: 6f 77 5b 33 5d 5b 30 5d 3b 0a 0a 20 20 20 20 2f  ow[3][0];..    /
0410: 2f 20 65 78 74 72 61 63 74 20 76 61 6c 75 65 0a  / extract value.
0420: 20 20 20 20 24 76 61 6c 75 65 20 3d 20 73 75 62      $value = sub
0430: 73 74 72 28 24 73 72 63 2c 20 24 70 6f 73 20 2b  str($src, $pos +
0440: 20 73 74 72 6c 65 6e 28 24 68 65 61 64 65 72 29   strlen($header)
0450: 2c 20 24 6c 65 6e 67 74 68 20 2d 20 32 20 2d 20  , $length - 2 - 
0460: 73 74 72 6c 65 6e 28 24 63 61 72 64 29 29 3b 0a  strlen($card));.
0470: 20 20 20 20 24 76 61 6c 75 65 20 3d 20 73 74 72      $value = str
0480: 74 72 28 24 76 61 6c 75 65 2c 20 61 72 72 61 79  tr($value, array
0490: 28 22 27 27 22 3d 3e 22 27 22 29 29 3b 0a 0a 20  ("''"=>"'"));.. 
04a0: 20 20 20 2f 2f 20 73 61 76 65 20 74 6f 20 66 69     // save to fi
04b0: 6c 65 0a 20 20 20 20 66 69 6c 65 5f 70 75 74 5f  le.    file_put_
04c0: 63 6f 6e 74 65 6e 74 73 28 22 24 74 64 69 72 2f  contents("$tdir/
04d0: 24 73 6b 69 6e 5f 6e 61 6d 65 2e 24 6e 61 6d 65  $skin_name.$name
04e0: 22 2c 20 24 76 61 6c 75 65 29 3b 0a 7d 0a 0a     ", $value);.}..