githubgo2rpm 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0e96898574e986d9fe7a86b8919168d6d24ed7d9
4
+ data.tar.gz: 8eb6bdbabb31c33c04c7128b94af67c39204fb04
5
+ SHA512:
6
+ metadata.gz: 22125cd32bfd246b19e75667ee45e1ac18f333124ef7b377c607db8742362ba8a15101543967d9d1a48b276e8edb5550a5e7c6c6277316f83f9f000ea478aac5
7
+ data.tar.gz: a2ec8c353b6ca0ff4c0d15f466cb76638a3bbe8b4ebd464f56340144f0f3eafc69c3a1be900808b36bb9ee401273a43d9c93bd4f5ae5748fc80127283e78a5f6
data/bin/githubgo2rpm ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'githubgo2rpm'
4
+ require 'optparse'
5
+
6
+ options = {}
7
+
8
+ parser = OptionParser.new do |opts|
9
+ opts.banner = "Usage: githubgo2rpm --repo GITHUB_REPO --destination DESTINATION"
10
+
11
+ opts.on('-r', '--repo GITHUB_REPOSITORY', 'The repository of the golang library on github. e.g.: mschnitzer/example-golang-library') do |github_repository|
12
+ options[:github_repository] = github_repository
13
+ end
14
+
15
+ opts.on('-d', '--destination DESTINATION', 'The location where the spec and the _service file should be placed.') do |destination|
16
+ options[:destination] = destination
17
+ end
18
+
19
+ opts.on('-c', '--create-dir', 'Create target directory.') do |create_dir|
20
+ options[:create_dir] = create_dir
21
+ end
22
+ end.parse!
23
+
24
+ unless options[:github_repository] || options[:destination]
25
+ $stderr.puts "Invalid arguments."
26
+ exit! 1
27
+ end
28
+
29
+ GithubGo2Rpm::OBSPackage.new(options[:github_repository]).create_package(options[:destination], options[:create_dir])
@@ -0,0 +1,73 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'fileutils'
4
+
5
+ module GithubGo2Rpm
6
+ class Repository
7
+ attr_reader :details
8
+
9
+ def initialize(repository)
10
+ @repo = repository
11
+ fetch
12
+ end
13
+
14
+ private
15
+
16
+ def fetch
17
+ uri = URI("https://api.github.com/repos/#{@repo}")
18
+ @details = JSON.parse(Net::HTTP.get(uri))
19
+ end
20
+ end
21
+
22
+ class OBSPackage
23
+ def initialize(repository)
24
+ @repo = Repository.new(repository)
25
+ end
26
+
27
+ def create_package(path, create_dir = true)
28
+ path += '/' if path[-1] != '/'
29
+
30
+ package_name = "golang-github-#{@repo.details['owner']['login']}-#{@repo.details['name']}"
31
+
32
+ if create_dir
33
+ directory = "#{path}#{package_name}"
34
+ FileUtils.mkdir(directory)
35
+ else
36
+ directory = path
37
+ end
38
+
39
+ spec_file_name = "#{package_name}.spec"
40
+
41
+ File.open("#{directory}/#{spec_file_name}", 'w+') { |file| file.write(generate_spec) }
42
+ File.open("#{directory}/_service", 'w+') { |file| file.write(generate_service) }
43
+ end
44
+
45
+ def generate_spec
46
+ username = @repo.details['owner']['login']
47
+ library_name = @repo.details['name']
48
+
49
+ summary = @repo.details['description']
50
+ summary = summary[0..-2] if summary[-1] == '.' || summary[-1] == '!'
51
+
52
+ description = @repo.details['description']
53
+ description = description[0..-2] if description[-1] == '.' || description[-1] == '!'
54
+
55
+ template = File.open("#{File.dirname(File.dirname(__FILE__))}/templates/golang-spec-file.template").read
56
+ template.gsub!('%LIBRARY_NAME%', library_name)
57
+ template.gsub!('%LIBRARY_USERNAME%', username)
58
+ template.gsub!('%YEAR%', Time.now.year.to_s)
59
+ template.gsub!('%LIBRARY_SUMMARY%', summary)
60
+ template.gsub!('%LIBRARY_DESCRIPTION%', description)
61
+ template.gsub!('%LIBRARY_LICENSE%', 'MIT')
62
+ end
63
+
64
+ def generate_service
65
+ username = @repo.details['owner']['login']
66
+ library_name = @repo.details['name']
67
+
68
+ template = File.open("#{File.dirname(File.dirname(__FILE__))}/templates/_service.template").read
69
+ template.gsub!('%LIBRARY_NAME%', library_name)
70
+ template.gsub!('%LIBRARY_USERNAME%', username)
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,17 @@
1
+ <services>
2
+ <service name="tar_scm" mode="disabled">
3
+ <param name="url">https://github.com/%LIBRARY_USERNAME%/%LIBRARY_NAME%</param>
4
+ <param name="scm">git</param>
5
+ <param name="exclude">.git</param>
6
+ <param name="versionformat">0+git.%ct.%h</param>
7
+ <param name="revision">master</param>
8
+ <param name="changesgenerate">enable</param>
9
+ </service>
10
+ <service name="recompress" mode="disabled">
11
+ <param name="file">%LIBRARY_NAME%-*.tar</param>
12
+ <param name="compression">xz</param>
13
+ </service>
14
+ <service name="set_version" mode="disabled">
15
+ <param name="basename">service</param>
16
+ </service>
17
+ </services>
@@ -0,0 +1,52 @@
1
+ #
2
+ # spec file for package golang-github-%LIBRARY_USERNAME%-%LIBRARY_NAME%
3
+ #
4
+ # Copyright (c) %YEAR% SUSE LINUX GmbH, Nuernberg, Germany.
5
+ #
6
+ # All modifications and additions to the file contributed by third parties
7
+ # remain the property of their copyright owners, unless otherwise agreed
8
+ # upon. The license for this file, and modifications and additions to the
9
+ # file, is the same license as for the pristine package itself (unless the
10
+ # license for the pristine package is not an Open Source License, in which
11
+ # case the license is the MIT License). An "Open Source License" is a
12
+ # license that conforms to the Open Source Definition (Version 1.9)
13
+ # published by the Open Source Initiative.
14
+
15
+ # Please submit bugfixes or comments via http://bugs.opensuse.org/
16
+ #
17
+
18
+ %global _name %LIBRARY_NAME%
19
+ %global _devname %LIBRARY_USERNAME%
20
+ Name: golang-github-%{_devname}-%{_name}
21
+ Version: 0
22
+ Release: 0
23
+ License: %LIBRARY_LICENSE%
24
+ Summary: %LIBRARY_SUMMARY%
25
+ Url: https://github.com/%{_devname}/%{_name}
26
+ Group: Development/Languages/Golang
27
+ Source0: %{_name}-%{version}.tar.xz
28
+ Source1: %{_name}.1
29
+ BuildRequires: golang-packaging
30
+ BuildRoot: %{_tmppath}/%{name}-%{version}-build
31
+ %{go_provides}
32
+
33
+ %description
34
+ %LIBRARY_DESCRIPTION%.
35
+
36
+ %prep
37
+ %setup -q -n %{_name}-%{version}
38
+
39
+ %build
40
+ %goprep github.com/%{_devname}/%{_name}
41
+ %gobuild ...
42
+
43
+ %install
44
+ %goinstall
45
+ %gosrc
46
+
47
+ %gofilelist
48
+
49
+ %files -f file.lst
50
+ %defattr(-,root,root)
51
+
52
+ %changelog
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: githubgo2rpm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Manuel Schnitzer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: This program converts golang libraries from github to a rpm spec file.
14
+ email: webmaster@mschnitzer.de
15
+ executables:
16
+ - githubgo2rpm
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/githubgo2rpm
21
+ - lib/githubgo2rpm.rb
22
+ - templates/_service.template
23
+ - templates/golang-spec-file.template
24
+ homepage: https://github.com/mschnitzer/githubgo2rpm
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.2.5
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: Convert golang libraries on github to spec files
48
+ test_files: []