Class: Creator

Inherits:
Object
  • Object
show all
Defined in:
lib/creator.rb

Overview

Copyright © 2013 Cornelius Schumacher <[email protected]>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Instance Method Summary collapse

Constructor Details

#initialize(settings, name) ⇒ Creator

Returns a new instance of Creator.



19
20
21
22
23
24
# File 'lib/creator.rb', line 19

def initialize settings, name
  @settings = settings
  @settings.offline = true
  @name = name
  @dir = File.join settings.manifest_path, name
end

Instance Method Details

#create(version, release_date) ⇒ Object



100
101
102
103
104
# File 'lib/creator.rb', line 100

def create version, release_date
  create_dir
  m = create_manifest version, release_date
  write_manifest m
end

#create_dirObject



52
53
54
# File 'lib/creator.rb', line 52

def create_dir
  FileUtils.mkdir_p File.join(@settings.manifest_path,@name)
end

#create_genericObject



94
95
96
97
98
# File 'lib/creator.rb', line 94

def create_generic
  create_dir
  m = create_generic_manifest
  write_manifest m
end

#create_generic_manifestObject



86
87
88
89
90
91
92
# File 'lib/creator.rb', line 86

def create_generic_manifest
  m = ManifestGeneric.new
  m.name = @name
  m.display_name = @name.capitalize
  m.platforms = [ "Linux" ]
  m
end

#create_kf5(version, release_date) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/creator.rb', line 106

def create_kf5 version, release_date
  create_dir

  m = create_manifest version, release_date

  m["authors"] = [ "The KDE Community" ]
  m["licenses"] = [ "LGPLv2.1+" ]

  vcs = "https://projects.kde.org/projects/kde/kdelibs/repository/revisions/frameworks/show/tier1/"
  vcs += @name
  m["urls"] = {
    "vcs" => vcs,
    "homepage" => "http://community.kde.org/Frameworks"
  }

  m["packages"] = {
    "source" => "http://anongit.kde.org/kdelibs/kdelibs-latest.tar.gz"
  }

  write_manifest m
end

#create_manifest(version, release_date) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/creator.rb', line 56

def create_manifest version, release_date
  m = ManifestRelease.new
  m.name = @name
  m.version = version
  m.release_date = release_date
  if version == "edge"
    m.maturity = "edge"
  else
    m.maturity = "stable"
  end
  m.platforms = [ "Linux" ]
  m
end

#is_new?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/creator.rb', line 26

def is_new?
  return !File.exists?( @dir )
end

#manifest_basenameObject



82
83
84
# File 'lib/creator.rb', line 82

def manifest_basename
  File.join @settings.manifest_path, @name, @name
end

#update(version, release_date) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/creator.rb', line 36

def update version, release_date
  filename = File.join @settings.manifest_path, @name,
    "#{@name}.#{release_date}.manifest"

  mh = ManifestHandler.new @settings
  mh.read_remote

  m = mh.manifest @name
  m.version = version
  m.release_date = release_date

  File.open( filename, "w" ) do |file|
    file.puts m.to_json
  end
end

#validate_directoryObject



30
31
32
33
34
# File 'lib/creator.rb', line 30

def validate_directory
  if !File.exists? @dir
    raise "Unable to find manifest directory '#{@dir}'"
  end
end

#write_manifest(manifest) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/creator.rb', line 70

def write_manifest manifest
  filename = manifest_basename
  if manifest.release_date
    filename += ".#{manifest.release_date}"
  end
  filename += ".manifest"

  File.open( filename, "w" ) do |file|
    file.puts manifest.to_json
  end
end