README

Mon, 27 Jul 2009 04:10:31 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Mon, 27 Jul 2009 04:10:31 +0100
changeset 42
7b1896ff4315
parent 40
ab43c18f9d31
child 44
5d710c0cfb45
permissions
-rw-r--r--

Add virtual IO section to the README

17
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 # Squish - One language to write them all, one squisher to squish them
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 Squish is a simple script to build a single file out of multiple scripts, modules, and other files.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 For example if you have a script called A, and it requires modules X, Y and Z, all of them could be squished
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7 into a single file, B.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 When run, Squish reads a file called 'squishy' in the current (or specified) directory, which contains
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 instructions on how to squish a project.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 For an example you can see Squish's own squishy file, included in this package. For reference, see below.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 ## Squishing
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 Running squish will search for a 'squishy' file in the current directory. Alternatively you can pass to squish
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 a directory to look in.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 Command-line options vary depending on what features squish has been built with. Below are the standard ones.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 ### Minify
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 'Minification' is the act of condensing source code by stripping out spaces, line breaks, comments and anything
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 that isn't required to be there. Although the source code is re-organised and changed, the program is still the
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 same and runs without any changes.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 #### --no-minify
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 Disable minification of the output file after squishing. Default is to minify.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 #### --minify-level=level
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 The level may be one of: none, basic, default, full
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 They vary in effectiveness, and the time taken to process large files. Experiment!
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 ### Uglify
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 'Uglification' is the name Squish gives to a certain basic form of compression. With large files it can reduce the
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 size by some kilobytes, even after full minification. It works by replacing Lua keywords with a single byte and
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 inserting code at the start of the script to expand the keywords when it is run.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 #### --uglify
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 Enable the uglification filter. Default is to not uglify.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 ### Compile
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 Squish can compile the resulting file to Lua bytecode. This is experimental at this stage (you may get better results
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 with luac right now), however it's a work in progress. Compiling to bytecode can actually increase the size of
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 minified output, but it can speed up loading (not that you would notice it anyway, since the Lua compiler is so fast).
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 #### --compile
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 Enables compilation of the output file.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49
35
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
50 ### Debug
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
51 Due to the way Squish combines multiple scripts into one, sometimes when a squished script raises an error the traceback
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
52 will be fairly unhelpful, and point to a line in the unreadable squished script. This is where the debug extension comes in!
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
53
40
ab43c18f9d31 Update README to reflect --debug change
Matthew Wild <mwild1@gmail.com>
parents: 35
diff changeset
54 #### --debug
35
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
55 This option includes some code into the squished file which will restore the filenames and line numbers in error messages and
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
56 tracebacks. This option will increase the size of the output by no more than about 6KB, so may be very much worth it when
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
57 squishing large tricky-to-debug applications and libraries.
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
58
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
59 **Note:** Minification may interfere with the line number calculation, use --minify-level=debug to enable all features of minify
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
60 that don't change line numbers, and everything will be fine.
8843ea9f9e27 Update README for debug extension
Matthew Wild <mwild1@gmail.com>
parents: 17
diff changeset
61
42
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
62 ### Virtual IO
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
63 Squish allows you to pack resources (any file) into the squished output. Sometimes it would be convenient to access these through
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
64 the standard Lua io interface. Well now you can! :)
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
65
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
66 #### --virtual-io
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
67 Inserts code into the squished output which replaces io.open, io.lines, dofile and loadfile. The new functions will first check
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
68 whether the specified filename matches a packed resource's name. If it does then it will operate on that resource instead of an
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
69 actual file. If the filename does _not_ match a resource then the function passes on to the real Lua functions.
7b1896ff4315 Add virtual IO section to the README
Matthew Wild <mwild1@gmail.com>
parents: 40
diff changeset
70
17
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 ## Squishy reference
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 A squishy file is actually a Lua script which calls some Squish functions. These functions are listed here.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 ### Module "name" "path"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 Adds the specified module to the list of those to be squished into the output file. The optional path specifies
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 where to find the file (relative to the squishy file), otherwise Squish will attempt to find the module itself.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 ### Main "script.lua"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 Adds a script into the squished output. Scripts are executed in the order specified in the squishy file, but only
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 after all modules have been loaded.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 ### Output "filename.lua"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 Names the output file. If none is specified, the default is 'squished.out.lua'.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 ### Option "name" "value"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 Sets the specified option, to 'true', or to the optional given value. This allows a squishy file to set default
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 command-line options.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 ### GetOption "name"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 Returns the current value of the given option.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 ### Resource "name" "path"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 Adds a 'resource' to the squished file. A resource may be any file, text, binary, large or small. Scripts can
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 retrieve the resource at runtime by calling require_resource("name"). If no path is given then the name is used
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 as the path.
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 ### AutoFetchURL "url"
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 **Experimental** feature which is subject to change. When specified, all the following Module statements will be
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 fetched via HTTP if not found on the filesystem. A ? (question mark) in the URL is replaced by the relative path
3d4ba37b1554 Add README and COPYRIGHT files
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 of the module file that was given in the Module statement.

mercurial