-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.xml
130 lines (118 loc) · 5.96 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
<?xml version="1.0" encoding="UTF-8"?>
<project name="kinopoisk" default="install">
<property file="user.build.properties" />
<property file="build.properties" />
<available file=".git" type="dir" property="git.present"/>
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<filterset id="commonFilterSet" begintoken="@" endtoken="@">
<filter token="PROJECT.NAME" value="${project.name}" />
<filter token="PLUGIN.LOGKEY" value="0" /> <!-- 0 - Off; 1 - On; -->
<filter token="PLUGIN.LOGLEVEL" value="Critical" /> <!-- Critical, Error, Warning, Info, Debug. -->
<filter token="DEBUG.SCORING" value="False" />
<filter token="DEBUG.MAIN" value="False" />
</filterset>
<target name="install" depends="distro"
description="Installs plugin into a local PMS directory.">
<available file="${plex.plugins.dir}" property="isPlexDirectoryExists" />
<fail unless="isPlexDirectoryExists" message="Plex plugins directory ${plex.plugins.dir} does not exist!" />
<delete dir="${plex.plugins.dir}/${plugin.dir.name}" failonerror="false" />
<copy todir="${plex.plugins.dir}/${plugin.dir.name}">
<fileset dir="${build.assembly.dir}/${plugin.dir.name}" />
</copy>
</target>
<target name="distro" depends="build, CompositeHash"
description="Creates archive release files of the plugin.">
<echo message="Creating plugin (archive) distribution files..." />
<property name="arg.base.filename" value="${project.name}-${kinopoisk.plugin.version}" />
<property name="plugin.zip.filepath" value="${build.dist.dir}/${arg.base.filename}.zip" />
<zip destfile="${plugin.zip.filepath}" update="true">
<zipfileset dir="${build.assembly.plugin.dir}" prefix="${plugin.dir.name}" />
</zip>
<property name="plugin.gz.filepath" value="${build.dist.dir}/${arg.base.filename}.tar.gz" />
<tar destfile="${plugin.gz.filepath}" compression="gzip">
<zipfileset dir="${build.assembly.plugin.dir}" prefix="${plugin.dir.name}" />
</tar>
<echo message="zip -> ${plugin.zip.filepath}." />
<echo message="tar.gz -> ${plugin.gz.filepath}." />
</target>
<target name="CompositeHash">
<echo message="Calculating composite hash for files" />
<fileset id="src.files" dir="${build.assembly.plugin.dir}">
<include name="**/*.py" />
<include name="**/*.pys" />
<include name="**/*.plist" />
</fileset>
<pathconvert pathsep="${line.separator}" property="sources" refid="src.files"/>
<var name="totalhash" value=""/>
<for list="${sources}" delimiter="${line.separator}" param="pyfile">
<sequential>
<local name="SHA-1_Value"/>
<checksum file="@{pyfile}" algorithm="SHA-1" property="SHA-1_Value"/>
<echo>@{pyfile}${SHA-1_Value}${line.separator}</echo>
<var name="totalhash" value="${totalhash}${SHA-1_Value}"/>
</sequential>
</for>
<echo file="${build.dir}/temp.hash">${totalhash}</echo>
<checksum file="${build.dir}/temp.hash" algorithm="SHA-1" property="total.hash" />
<delete file="${build.dir}/temp.hash" />
<echo>Hash: ${total.hash}</echo>
</target>
<target name="clean"
description="Cleans up the build directory.">
<echo message="Cleaning up local build directory ${build.dir}." />
<delete dir="${build.dir}" failonerror="false" />
</target>
<target name="build" depends="-init"
description="Builds project files - copies files to the plugin assembly directory.">
<copy todir="${build.assembly.plugin.dir}" filtering="true"
encoding="UTF-8" outputencoding="UTF-8" overwrite="true">
<filterset refid="commonFilterSet" />
<filterset>
<filter token="REPOSITORY.REVISION" value="${revision.version.number}" />
<filter token="PLUGIN.REVISION" value="${kinopoisk.plugin.version}" />
</filterset>
<fileset dir="${plugin.dir.name}">
<include name="**/*.py" />
<include name="**/*.plist" />
</fileset>
</copy>
<copy todir="${build.assembly.plugin.dir}" filtering="false">
<fileset dir="${plugin.dir.name}">
<exclude name="**/*.py" />
<exclude name="**/*.plist" />
</fileset>
</copy>
</target>
<target name="-init" depends="-get-git-revision"
description="Initializes necessary properties and creates directories for the project build.">
<condition property="isExcludeRemote" value="--exclude-remote" else="">
<isset property="excludeRemote" />
</condition>
<condition property="logLevel" else="0">
<isset property="logLevel" />
</condition>
<tstamp>
<format property="current.date" pattern="MM-dd-yyyy" />
<format property="current.time" pattern="hh:mm" />
</tstamp>
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dist.dir}" />
<mkdir dir="${build.assembly.dir}" />
<mkdir dir="${build.assembly.plugin.dir}" />
</target>
<target name="-get-git-revision" if="git.present"
description="Stores git revision number in the revision.version.number property.">
<exec executable="git" outputproperty="git.revision" failifexecutionfails="false" errorproperty="">
<arg value="describe"/>
<arg value="--tags"/>
<arg value="--always"/>
<arg value="HEAD"/>
</exec>
<condition property="revision.version.number" value="${git.revision}" else="unknown">
<and>
<isset property="git.revision"/>
<length string="${git.revision}" trim="yes" length="0" when="greater"/>
</and>
</condition>
</target>
</project>