githubgo2rpm 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []