Cross package maker. DEB/RPM generation or conversion. Derived from jordansissel/fpm.

⌈⌋ branch:  cross package maker


Check-in [b52e581a05]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
SHA1:b52e581a052ba8cb652148d3b356c35a145c5de1
Date: 2014-12-15 19:55:00
User: mario
Comment:Added html_escape (despite the name actually just escapes XML) to AppData template.
Tags And Properties
  • bgcolor=#ecebfd inherited from [4e43f73a18]
  • branch=trunk inherited from [5980cef12a]
  • sym-trunk inherited from [5980cef12a]
Context
2014-12-16
15:00
[65236fbdf3] Prefix update hook plugins with `filter_` in package/ dir. (user: mario, tags: trunk)
2014-12-15
19:55
[b52e581a05] Added html_escape (despite the name actually just escapes XML) to AppData template. (user: mario, tags: trunk)
19:26
[7827ad9b42] AppData filter (`-u appdata`) which creates a basic PKG.appdata.xml for distro application centers. (user: mario, tags: trunk)
Changes

Changes to lib/fpm/package/appdata.rb.

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
..
26
27
28
29
30
31
32

33
34
35



36
37
38
39
40
41
42
43
44

45
# api: fpm
# title: AppData/AppStream
# description: Generates a pkg.appdata.xml for distribution package managers
# type: template
# depends: erb
# category: meta
# doc: http://en.wikipedia.org/wiki/AppStream, http://people.freedesktop.org/~hughsient/appdata/
# version: 0.1
#
# Creates a /usr/share/appdata/PKGNAME.appdata.xml file for consumption by
# distribution package managers.
#
#  → The point of which is to embed a shared screenshot and lookup user
#    reviews/ratings. (At least should benefit appcenter listings.)
#  → Only use this filter (-u appdata) if you're not already including a
................................................................................
#  - Doesn't split up description into <p> and <ul> sections (or store lang=).
#  - Stub screenshot used, we might need a new --screenshot flag.
#

require "fpm/package"
require "fpm/util"
require "fileutils"


# create appdata.xml file
class FPM::Package::Appdata < FPM::Package



  def update
    dest = "#{staging_path}/usr/share/appdata/#{name}.appdata.xml"
    puts dest
    FileUtils.mkdir_p(File.dirname(dest))
    File.open(dest, "w") do |xml|
      xml.write template("appstream.erb").result(binding)
    end
    #safesystem("ls", "-l", dest)
  end

end







|







 







>



>
>
>


<




<

>

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
..
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

42
43
44
45

46
47
48
# api: fpm
# title: AppData/AppStream
# description: Generates a pkg.appdata.xml for distribution package managers
# type: template
# depends: erb
# category: meta
# doc: http://en.wikipedia.org/wiki/AppStream, http://people.freedesktop.org/~hughsient/appdata/
# version: 0.2
#
# Creates a /usr/share/appdata/PKGNAME.appdata.xml file for consumption by
# distribution package managers.
#
#  → The point of which is to embed a shared screenshot and lookup user
#    reviews/ratings. (At least should benefit appcenter listings.)
#  → Only use this filter (-u appdata) if you're not already including a
................................................................................
#  - Doesn't split up description into <p> and <ul> sections (or store lang=).
#  - Stub screenshot used, we might need a new --screenshot flag.
#

require "fpm/package"
require "fpm/util"
require "fileutils"
require "erb"

# create appdata.xml file
class FPM::Package::Appdata < FPM::Package

  include ERB::Util

  def update
    dest = "#{staging_path}/usr/share/appdata/#{name}.appdata.xml"

    FileUtils.mkdir_p(File.dirname(dest))
    File.open(dest, "w") do |xml|
      xml.write template("appstream.erb").result(binding)
    end

  end

end

Changes to templates/appstream.erb.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<!-- Maintainer: <%= maintainer  %>, autogenerated by `fpm -u appdata` -->
<component type="desktop">
 <id><%= name %>.desktop</id>
 <metadata_license>CC0-1.0</metadata_license>
 <project_license><%= license %></project_license>
 <name><%= name %></name>
   <% summary, *description = (description or "no description given").split("\n") -%>
 <summary><%= summary %></summary>
 <description>
  <%=
    description[0,25].join("\n")  # should actually generate mini-html with <p> and <ul>+<li>
  %>
 </description>
 <screenshots>
  <screenshot type="default">
   <image>http://freshcode.club/img/nopreview.png</image>
   <caption>Main window..</caption>
  </screenshot>
 </screenshots>
 <url type="homepage"><%= url or "data:," %></url>
 <updatecontact><%= maintainer %></updatecontact>
 <!--project_group><%= category %></project_group-->
</component>

|

|

|
|
|
|

|
|
|







|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<!-- Maintainer: <%=h maintainer %>, autogenerated by `fpm -u appdata` -->
<component type="desktop">
 <id><%=h name %>.desktop</id>
 <metadata_license>CC0-1.0</metadata_license>
 <project_license><%=h license %></project_license>
 <name><%=h name %></name>
   <% summary, *description = ((description) or "no description given").split("\n") -%>
 <summary><%=h summary %></summary>
 <description>
  <p><%=
    h description[0,25].join("\n")  # should actually generate mini-html with <p> and <ul>+<li>
  %></p>
 </description>
 <screenshots>
  <screenshot type="default">
   <image>http://freshcode.club/img/nopreview.png</image>
   <caption>Main window..</caption>
  </screenshot>
 </screenshots>
 <url type="homepage"><%=h (url or "data:,") %></url>
 <updatecontact><%=h maintainer %></updatecontact>
 <!--project_group><%=h category %></project_group-->
</component>