public
Description: Firefox extension, which gives a random page from your Unfiled bookmarks
Homepage: http://lackac.name/
Clone URL: git://github.com/lackac/teatime.git
Click here to lend your support to: teatime and make a donation at www.pledgie.com !
lackac (author)
Fri Jul 04 09:59:08 -0700 2008
commit  10431236d43c8a3f04624c2d84e1bbd24c82e1f6
tree    472e098faf2b5b89ea44c9efc1f08e83670c8fc7
parent  6af1a7c7bac653fc19b8dcc2bafc2062fc5e8996
teatime / build.sh
100755 134 lines (111 sloc) 4.089 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/bin/bash
# build.sh -- builds JAR and XPI files for mozilla extensions
# by Nickolay Ponomarev <asqueella@gmail.com>
# (original version based on Nathan Yergler's build script)
# Most recent version is at <http://kb.mozillazine.org/Bash_build_script>
 
# This script assumes the following directory structure:
# ./
# chrome.manifest (optional - for newer extensions)
# install.rdf
# (other files listed in $ROOT_FILES)
#
# content/ |
# locale/ |} these can be named arbitrary and listed in $CHROME_PROVIDERS
# skin/ |
#
# defaults/ |
# components/ |} these must be listed in $ROOT_DIRS in order to be packaged
# ... |
#
# It uses a temporary directory ./build when building; don't use that!
# Script's output is:
# ./$APP_NAME.xpi
# ./$APP_NAME.jar (only if $KEEP_JAR=1)
# ./files -- the list of packaged files
#
# Note: It modifies chrome.manifest when packaging so that it points to
# chrome/$APP_NAME.jar!/*
 
#
# default configuration file is ./config_build.sh, unless another file is
# specified in command-line. Available config variables:
APP_NAME= # short-name, jar and xpi files name. Must be lowercase with no spaces
CHROME_PROVIDERS= # which chrome providers we have (space-separated list)
CLEAN_UP= # delete the jar / "files" when done? (1/0)
ROOT_FILES= # put these files in root of xpi (space separated list of leaf filenames)
ROOT_DIRS= # ...and these directories (space separated list)
BEFORE_BUILD= # run this before building (bash command)
AFTER_BUILD= # ...and this after the build (bash command)
 
if [ -z $1 ]; then
  . ./config_build.sh
else
  . $1
fi
 
if [ -z $APP_NAME ]; then
echo "You need to create build config file first!"
  echo "Read comments at the beginning of this script for more info."
  exit;
fi
 
ROOT_DIR=`pwd`
TMP_DIR=build
 
#uncomment to debug
#set -x
 
# remove any left-over files from previous build
rm -f $APP_NAME.jar $APP_NAME.xpi files
rm -rf $TMP_DIR
 
$BEFORE_BUILD
 
mkdir --parents --verbose $TMP_DIR/chrome
 
# generate the JAR file, excluding CVS and temporary files
JAR_FILE=$TMP_DIR/chrome/$APP_NAME.jar
echo "Generating $JAR_FILE..."
for CHROME_SUBDIR in $CHROME_PROVIDERS; do
find $CHROME_SUBDIR -path '*CVS*' -prune -o -type f -print | grep -v \~ >> files
done
 
zip -0 -r $JAR_FILE `cat files`
# The following statement should be used instead if you don't wish to use the JAR file
#cp --verbose --parents `cat files` $TMP_DIR/chrome
 
# prepare components and defaults
echo "Copying various files to $TMP_DIR folder..."
for DIR in $ROOT_DIRS; do
mkdir $TMP_DIR/$DIR
  FILES="`find $DIR -path '*CVS*' -prune -o -type f -print | grep -v \~`"
  echo $FILES >> files
  cp --verbose --parents $FILES $TMP_DIR
done
 
# Copy other files to the root of future XPI.
for ROOT_FILE in $ROOT_FILES install.rdf; do
cp --verbose $ROOT_FILE $TMP_DIR
  if [ -f $ROOT_FILE ]; then
echo $ROOT_FILE >> files
  fi
done
 
cp --verbose chrome.build.manifest $TMP_DIR/chrome.manifest
if [ -f "chrome.build.manifest" ]; then
echo chrome.build.manifest >> files
fi
 
cd $TMP_DIR
 
if [ -f "chrome.manifest" ]; then
echo "Preprocessing chrome.manifest..."
  # You think this is scary?
  #s/^(content\s+\S*\s+)(\S*\/)$/\1jar:chrome\/$APP_NAME\.jar!\/\2/
  #s/^(skin|locale)(\s+\S*\s+\S*\s+)(.*\/)$/\1\2jar:chrome\/$APP_NAME\.jar!\/\3/
  #
  # Then try this! (Same, but with characters escaped for bash :)
  sed -i -r s/^\(content\\s+\\S*\\s+\)\(\\S*\\/\)$/\\1jar:chrome\\/$APP_NAME\\.jar!\\/\\2/ chrome.manifest
  sed -i -r s/^\(skin\|locale\)\(\\s+\\S*\\s+\\S*\\s+\)\(.*\\/\)$/\\1\\2jar:chrome\\/$APP_NAME\\.jar!\\/\\3/ chrome.manifest
 
  # (it simply adds jar:chrome/whatever.jar!/ at appropriate positions of chrome.manifest)
fi
 
# generate the XPI file
echo "Generating $APP_NAME.xpi..."
zip -r ../$APP_NAME.xpi *
 
cd "$ROOT_DIR"
 
echo "Cleanup..."
if [ $CLEAN_UP = 0 ]; then
  # save the jar file
  mv $TMP_DIR/chrome/$APP_NAME.jar .
else
rm ./files
fi
 
# remove the working files
rm -rf $TMP_DIR
echo "Done!"
 
$AFTER_BUILD