forked from propelorm/Propel
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.xml
241 lines (192 loc) · 8.81 KB
/
build.xml
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<!--
Use this file to faciliate easy per-project building.
Simply create a build.properties file in your project directory,
for example ./projects/bookstore/build.properties, that contains
any needed (i.e. to override) values for that project.
Call this build script and specify the name of the project and
(optionally) the name of the target you wish to execute (default is
'main' target) of build-propel.xml.
Normal use:
$> phing -Dproject=bookstore
Specific target:
$> phing -Dproject=bookstore -Dtarget=insert-sql
-->
<project name="propel-project-builder" default="main">
<!-- in case ${project.dir} was specified on command line, we set the project.dir
property here. If it wasn't set, then this will be bogus, but it will
be overridden by the "set-project-dir" target. -->
<resolvepath propertyName="propel.project.dir" file="${project.dir}" dir="${application.startdir}"/>
<!-- set a default target if none provided -->
<property name="target" value="main"/>
<!-- Set a default name for the build.properties file.
This allows for overriding the name of the build.properties file; however,
Propel still expects to find the file in the ${propel.project.dir}.
-->
<property name="build.properties" value="build.properties"/>
<target name="check-buildprops-exists">
<available file="${propel.project.dir}/${build.properties}" property="projBuildPopertiesExists"/>
</target>
<target name="check-buildprops" unless="projBuildPopertiesExists" depends="check-buildprops-exists">
<echo message="====================================================="/>
<echo message="Could not open ${build.properties} file:"/>
<echo message=" ${propel.project.dir}${build.properties}"/>
<echo message=" "/>
<echo message="Make sure that '${propel.project.dir}' is a valid path"/>
<echo message="and that it contains a ${build.properties} file."/>
<echo message="====================================================="/>
<fail message="Missing configuration file (see description above)."/>
</target>
<target name="check-project-or-dir-set">
<condition property="projectOrDirSet">
<or>
<isset property="project"/>
<isset property="project.dir"/>
</or>
</condition>
</target>
<target name="check-buildprops-for-propel-gen" if="using.propel-gen" unless="projBuildPopertiesExists" depends="check-buildprops-exists">
<echo message="=========================================================="/>
<echo message=" Welcome to Propel!"/>
<echo message=" "/>
<echo message="The propel-gen script requires a ${build.properties} file"/>
<echo message="to run. Either you didn't create one already, or this file"/>
<echo message="is not where the propel-gen script is looking for it."/>
<echo message=" "/>
<echo message="Expected ${build.properties} file location is:"/>
<echo message=" ${propel.project.dir}${build.properties}"/>
<echo message=" "/>
<echo message="The propel-gen script expects the name of a task to execute:"/>
<echo message=" "/>
<echo message="$> propel-gen [taskname]"/>
<echo message=" "/>
<echo message="If you call the script from another directory than the one where"/>
<echo message="where the ${build.properties} file is, set the path to this"/>
<echo message="file as first argument of the script:"/>
<echo message=" "/>
<echo message="$> propel-gen /path/to/projectdir [taskname]"/>
<echo message=" "/>
<echo message="Available tasknames are:"/>
<echo message=" om"/>
<echo message=" convert-conf"/>
<echo message=" sql"/>
<echo message=" insert-sql"/>
<echo message=" diff"/>
<echo message=" status"/>
<echo message=" migrate"/>
<echo message=" up"/>
<echo message=" down"/>
<echo message=" reverse"/>
<echo message=" ... and a few others."/>
<echo message="But you should start by creating a schema."/>
<echo message="=========================================================="/>
<fail message="No project directory specified."/>
</target>
<target name="check-project-set" unless="projectOrDirSet" depends="check-project-or-dir-set">
<echo message="====================================================="/>
<echo message="Project not specified. You must enter a project name. "/>
<echo message="In the future you can enter it on the command line: "/>
<echo message=" "/>
<echo message="-Dproject=bookstore"/>
<echo message=" "/>
<echo message="This will attempt to find your project directory in"/>
<echo message="the default directory (./projects/bookstore)."/>
<echo message=" "/>
<echo message="You can also avoid this message and specicfy a custom "/>
<echo message="directory, using the project.dir property:"/>
<echo message=" "/>
<echo message="-Dproject.dir=/path/to/bookstore"/>
<echo message="====================================================="/>
<input propertyname="project" promptChar=":">Project name</input>
<property name="propel.project" value="${project}" override="true"/>
</target>
<target name="set-project-dir" unless="project.dir" depends="check-project-set">
<echo>No project.dir was specified, using default path: ./projects/${project}</echo>
<property name="propel.project.dir" value="./projects/${project}" override="true"/>
</target>
<target name="configure" depends="set-project-dir,check-buildprops-for-propel-gen,check-buildprops">
<if>
<isset property="additional.properties"/>
<then>
<echo>Processing additional properties file: ${additional.properties}</echo>
<resolvepath propertyName="additional.properties.resolved" file="${additional.properties}" dir="${application.startdir}"/>
<property file="${additional.properties.resolved}"/>
</then>
</if>
<echo msg="Loading project-specific props from ${propel.project.dir}/${build.properties}"/>
<property file="${propel.project.dir}/${build.properties}"/>
</target>
<target name="main" depends="configure" description="The main target. Includes project-specific build.properties and calls the build-propel.xml script">
<phing phingfile="./build-propel.xml" target="${target}"/>
</target>
<!--
Convenience mappings to build-propel.xml main targets
This makes it possible to use this buildfile w/o needing to specify
target as a property, e.g.:
$> phing -Dproject=bookstore insert-sql
The main reason for this is just consistency w/ old build-propel.xml file
(primarily for documentation & user confusion avoidance reasons). There are relatively
few & infrequently changing main targets of build-propel.xml, so it's a non-
issue as far as maintenance is concerned.
-->
<target name="convert-conf" depends="configure">
<phing phingfile="build-propel.xml" target="convert-conf"/>
</target>
<target name="create-db" depends="configure">
<phing phingfile="build-propel.xml" target="create-db"/>
</target>
<target name="reverse" depends="configure">
<phing phingfile="build-propel.xml" target="reverse"/>
</target>
<target name="datadump" depends="configure">
<phing phingfile="build-propel.xml" target="datadump"/>
</target>
<target name="datasql" depends="configure">
<phing phingfile="build-propel.xml" target="datasql"/>
</target>
<target name="insert-sql" depends="configure">
<phing phingfile="build-propel.xml" target="insert-sql"/>
</target>
<target name="om" depends="configure">
<phing phingfile="build-propel.xml" target="om"/>
</target>
<target name="new-om" depends="configure">
<phing phingfile="build-propel.xml" target="new-om"/>
</target>
<target name="sql" depends="configure">
<phing phingfile="build-propel.xml" target="sql"/>
</target>
<target name="sql-diff" depends="configure">
<phing phingfile="build-propel.xml" target="sql-diff"/>
</target>
<target name="diff" depends="sql-diff" />
<target name="migration-status" depends="configure">
<phing phingfile="build-propel.xml" target="migration-status"/>
</target>
<target name="status" depends="migration-status" />
<target name="migration-up" depends="configure">
<phing phingfile="build-propel.xml" target="migration-up"/>
</target>
<target name="migrate-up" depends="migration-up" />
<target name="up" depends="migration-up" />
<target name="migration-down" depends="configure">
<phing phingfile="build-propel.xml" target="migration-down"/>
</target>
<target name="migrate-down" depends="migration-down" />
<target name="down" depends="migration-down" />
<target name="migration" depends="configure">
<phing phingfile="build-propel.xml" target="migration"/>
</target>
<target name="migrate" depends="migration" />
<target name="old-sql" depends="configure">
<phing phingfile="build-propel.xml" target="old-sql"/>
</target>
<target name="dbd2propel" depends="configure">
<phing phingfile="build-propel.xml" target="dbd2propel"/>
</target>
<target name="graphviz" depends="configure">
<phing phingfile="build-propel.xml" target="graphviz"/>
</target>
<target name="build-sql" depends="configure">
<phing phingfile="build-propel.xml" target="build-sql"/>
</target>
</project>