|
1 How to use the ConE Content plugin |
|
2 ================================== |
|
3 |
|
4 Introduction |
|
5 ''''''''''''' |
|
6 The basic concept of Content plugin is to transfer file resources from |
|
7 one place to another. So one may have for example; an audio file stored in the |
|
8 configuration project and needs to define the audio file location in the |
|
9 device. With ConE Content plugin you can basically define a copy operation. |
|
10 You just create <somename>.content (or general *.implml file) type file to the configuration project implml folder |
|
11 and set the rules or filters in there. |
|
12 |
|
13 |
|
14 content elements |
|
15 ---------------- |
|
16 The content model is drawn out as a uml model in below picture. |
|
17 |
|
18 .. image:: content2.jpg |
|
19 |
|
20 content |
|
21 ^^^^^^^ |
|
22 The root element of the content file is always content, which defines the xml namespace (xmlns) |
|
23 to http://www.s60.com/xml/content/2 in the current version. |
|
24 |
|
25 **content example**:: |
|
26 |
|
27 <content xmlns="http://www.s60.com/xml/content/2"/> |
|
28 |
|
29 tag |
|
30 ^^^^ |
|
31 |
|
32 Implementation tag elements can be defined under the root element. See the page on `tags <tags.html>`_ for more info. |
|
33 |
|
34 output |
|
35 ^^^^^^ |
|
36 The output element can define a output folder where content is copied from :ref:`content-input` elements that |
|
37 are children of this particular output. There can be several output elements inside a single content |
|
38 file or block. |
|
39 |
|
40 **output example**:: |
|
41 |
|
42 <output dir="foobar"/> |
|
43 |
|
44 The above statement defines that content is copied under foobar folder in the cone output folder. |
|
45 |
|
46 |
|
47 .. _content-input: |
|
48 |
|
49 input |
|
50 ^^^^^^ |
|
51 The user can define input under the output element. The input element can define a source directory and two file filters for |
|
52 that directory (include and exclude filters). The input element will always search files under the content directories of the |
|
53 configuration project. But the content of the search directory is a layered content of all configuration project content directories |
|
54 (See content layering in Configuration project specification (TODO: add link here)). |
|
55 |
|
56 **input example**:: |
|
57 |
|
58 <input dir="foobar"/> |
|
59 |
|
60 the above statement would include all files found under foobar directory.:: |
|
61 |
|
62 <input file="foobar/file1.txt"/> |
|
63 |
|
64 the above statement would include file1.txt from folder foobar to the copy operation. |
|
65 |
|
66 include |
|
67 ^^^^^^^^ |
|
68 The include filter can be used inside input statement to filter files for the copy operation. |
|
69 |
|
70 The include filter can have following attributes. |
|
71 |
|
72 +------------------+-------------------------------------------+ |
|
73 | Attribute name | description | |
|
74 +==================+===========================================+ |
|
75 | files | comma separated list of inpu files. | |
|
76 +------------------+-------------------------------------------+ |
|
77 | pattern | regexp pattern to filter input files that | |
|
78 | | are found in the input folder. | |
|
79 +------------------+-------------------------------------------+ |
|
80 | flatten | "true"|"false" to define if the directory | |
|
81 | | struture is flattened at output. | |
|
82 +------------------+-------------------------------------------+ |
|
83 |
|
84 **input include example** |
|
85 |
|
86 This would copy files foobar/test/override.txt and foobar/test/s60.txt to output if they are found.:: |
|
87 |
|
88 <input dir="foobar"> |
|
89 <include files="test/override.txt, test/s60.txt"/> |
|
90 <input> |
|
91 |
|
92 The below statement would copy all files ending with ".jpg" from userdata and copy them |
|
93 directly to the output root folder.:: |
|
94 |
|
95 <input dir="userdata"> |
|
96 <include pattern="\.jpg$" flatten="true"/> |
|
97 <input> |
|
98 |
|
99 exclude |
|
100 ^^^^^^^^ |
|
101 The exclude filter can be used similarly as the include filter, but in a negative meaning. |
|
102 For example to ensure that files beginning with a dot are never copied. |
|
103 |
|
104 The exclude filter can have following attributes. |
|
105 |
|
106 +------------------+-------------------------------------------+ |
|
107 | Attribute name | description | |
|
108 +==================+===========================================+ |
|
109 | pattern | regexp pattern to filter input files that | |
|
110 | | are found in the input folder. | |
|
111 +------------------+-------------------------------------------+ |
|
112 |
|
113 **input exclude example** |
|
114 |
|
115 This would exclude all files that have .svn as part of the file path:: |
|
116 |
|
117 <input dir="foobar"> |
|
118 <exclude pattern="\.svn"/> |
|
119 <input> |
|
120 |
|
121 |
|
122 How to create a content file |
|
123 ---------------------------- |
|
124 |
|
125 * Create a new file in the content folder name for ex. mycontentfile.content |
|
126 * Set the file encoding to UTF-8 |
|
127 * Set the definition tag first *<?xml version="1.0" encoding="UTF-8"?>* |
|
128 * Set the content tag *<content xmlns="http://www.s60.com/xml/content/1">* |
|
129 * Set the description tag *<desc>Copy only prod</desc>* |
|
130 * Set a content configuration tag for ex. *<include pattern="prod"/>* |
|
131 * Set another content configuration tag for ex. *<output dir="content"/>* |
|
132 * Close the content tag *</content>* |
|
133 |
|
134 Now you have content file which copies the prod files to the content directory in the device configuration |
|
135 |
|
136 **example of a entire content file** |
|
137 |
|
138 The example defines here two copy operations to two different outputs. First one to content with selected |
|
139 files as input and the other to include, where it tries to copy all \*.hrh files to the root of the include |
|
140 directory. |
|
141 |
|
142 .. literalinclude:: example.content |
|
143 |
|
144 |
|
145 Logic and rules |
|
146 --------------- |
|
147 |
|
148 What may you define with content file logic. Here are some explanations. |
|
149 |
|
150 * *<include pattern="prod"/>* include the files in the prod folder |
|
151 * *<exclude pattern="prod"/>* exclude the files in the prod folder |
|
152 * *<input dir="${content.inputdir}"/>* input files are setted in the value of the content/inputdir reference link in confml |
|
153 * *<output dir="${content.outputdir}"/>* output files are setted in the value of the content/outputdir reference link in confml |
|
154 |
|
155 So you may include and exclude folder and files. Content file definition supports regex patterns |
|
156 You may give the location of the content as a confml reference link, *note: use the dots instead of slashes* |
|
157 |
|
158 |
|
159 XSD |
|
160 --- |
|
161 |
|
162 .. literalinclude:: ../../xsd/contentml2.xsd |
|
163 :linenos: |
|
164 |
|
165 |
|
166 FAQ |
|
167 --- |
|
168 This will be updated based on the questions. |