go4rake 1.4.3 → 1.5.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/NOTICE +1 -1
- data/README.md +4 -2
- data/examples/go4rake.yml +2 -2
- data/lib/go4rake.rb +2 -0
- data/lib/go4rake/new.rb +35 -21
- metadata +23 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '029845c95d728b7ba040be28eeae6dc761e1aaca0410fc9ce64e42a18bdc8d38'
|
4
|
+
data.tar.gz: 45f524f451459ef570ab83a479b2760b50e775e3e77e2123045be2928d3ba543
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fd85f9dcc4ad561c5c9747fa5e6d4f3baafdf95c2dace93ad81b3cfd68045bccbf2259090e0a341a5a89d2fdbf72a52ae5a61dbb488d444e967f1e0aa5c8a58
|
7
|
+
data.tar.gz: 020da2972138e0312e4cfdeef7071eaf61fe3db2c1f51fee217c48cdfaef1e25ee261b817b828145022f6cc131d12535e052ef00e22c66a0330e7c79759228a0
|
data/NOTICE
CHANGED
data/README.md
CHANGED
@@ -50,7 +50,9 @@ These files will be also included into the ZIP files:
|
|
50
50
|
Please note that:
|
51
51
|
|
52
52
|
* If `out` is specified, ZIP files will appear in the specified
|
53
|
-
directory; if not, they will be in
|
54
|
-
|
53
|
+
directory; if not, they will be in `~/Downloads`.
|
54
|
+
Prior to 1.5.2 the default value was `.`
|
55
|
+
* Also please note that current files with the same names as your targets are overwritten.
|
56
|
+
* If `files` are not specified, a `NOTICE` file will be included in ZIP
|
55
57
|
files, if it's found in the project directory
|
56
58
|
* `arch` is appended to the file name if `arch` is a list
|
data/examples/go4rake.yml
CHANGED
data/lib/go4rake.rb
CHANGED
data/lib/go4rake/new.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rake/tasklib'
|
2
4
|
require 'yaml'
|
3
|
-
require 'zip'
|
4
5
|
require 'zip/filesystem'
|
5
6
|
|
6
7
|
# Rake tasks to cross-compile Go project and ZIP the binaries:
|
@@ -18,20 +19,31 @@ class Go4Rake < ::Rake::TaskLib
|
|
18
19
|
# Load configuration file and initialize Rake tasks for cross-compiling Go programs.
|
19
20
|
def initialize(yml = 'go4rake.yml')
|
20
21
|
begin
|
21
|
-
@
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
@yaml_file = yml
|
23
|
+
@config = YAML.load_file(@yaml_file)
|
24
|
+
@config['out'] ||= '~/Downloads' # Default to ~/Downloads, if 'out' is not specified.
|
25
|
+
|
26
|
+
init_tasks
|
27
|
+
rescue(Errno::ENOENT) => e
|
28
|
+
warn "WARNING: Skipping `build` and `zip` tasks: #{e}"
|
25
29
|
end
|
26
30
|
# `build`, `zip` and `clean` depend on config, `test` doesn't.
|
27
31
|
task_test
|
28
32
|
end
|
29
33
|
|
34
|
+
private
|
35
|
+
|
36
|
+
def init_tasks
|
37
|
+
task_build
|
38
|
+
task_zip
|
39
|
+
task_clean
|
40
|
+
end
|
41
|
+
|
30
42
|
# Initialize `build`, `zip` and `clean` tasks.
|
31
|
-
def
|
32
|
-
desc "Build this project for the platforms in #{
|
43
|
+
def task_build
|
44
|
+
desc "Build this project for the platforms in #{@yaml_file}"
|
33
45
|
task :build do
|
34
|
-
|
46
|
+
@config['platforms'].each { |os|
|
35
47
|
if os['arch'].respond_to?('each')
|
36
48
|
os['arch'].each { |arch|
|
37
49
|
build(os['name'], arch)
|
@@ -41,35 +53,35 @@ class Go4Rake < ::Rake::TaskLib
|
|
41
53
|
end
|
42
54
|
}
|
43
55
|
end
|
56
|
+
end
|
44
57
|
|
58
|
+
def task_zip
|
45
59
|
desc 'ZIP this project binaries'
|
46
|
-
task zip: [
|
47
|
-
|
48
|
-
|
49
|
-
cfg['platforms'].each { |os|
|
60
|
+
task zip: %i[build test] do
|
61
|
+
@config['platforms'].each { |os|
|
50
62
|
if os['arch'].respond_to?('each')
|
51
63
|
os['arch'].each { |arch|
|
52
|
-
zip(os['name'], arch,
|
64
|
+
zip(os['name'], arch, @config['out'], @config['files'],
|
53
65
|
os['zip'] ? "#{os['zip']}_#{arch}" : "#{os['name']}_#{arch}")
|
54
66
|
}
|
55
67
|
else
|
56
|
-
zip(os['name'], os['arch'],
|
68
|
+
zip(os['name'], os['arch'], @config['out'], @config['files'],
|
57
69
|
os['zip'] || "#{os['name']}_#{os['arch']}")
|
58
70
|
end
|
59
71
|
}
|
60
72
|
end
|
73
|
+
end
|
61
74
|
|
75
|
+
def task_clean
|
62
76
|
desc 'Delete ZIP files'
|
63
77
|
task :clean do
|
64
|
-
|
65
|
-
|
66
|
-
cfg['platforms'].each { |os|
|
78
|
+
@config['platforms'].each { |os|
|
67
79
|
if os['arch'].respond_to?('each')
|
68
80
|
os['arch'].each { |arch|
|
69
|
-
clean(
|
81
|
+
clean(@config['out'], os['zip'] ? "#{os['zip']}_#{arch}" : "#{os['name']}_#{arch}")
|
70
82
|
}
|
71
83
|
else
|
72
|
-
clean(
|
84
|
+
clean(@config['out'], os['zip'] || "#{os['name']}_#{os['arch']}")
|
73
85
|
end
|
74
86
|
}
|
75
87
|
end
|
@@ -105,8 +117,9 @@ class Go4Rake < ::Rake::TaskLib
|
|
105
117
|
# Zip the compiled files.
|
106
118
|
def zip(os, arch, dir, files, file)
|
107
119
|
setenv(os, arch)
|
108
|
-
bin = `go list -f '{{.Target}}'`.chomp
|
120
|
+
bin = `go list -f '{{.Target}}'`.chomp.delete_prefix("'").delete_suffix("'")
|
109
121
|
return unless bin
|
122
|
+
|
110
123
|
zip_file = File.expand_path(dir) + '/' + file + '.zip'
|
111
124
|
name = File.basename(bin)
|
112
125
|
unless files
|
@@ -124,7 +137,7 @@ class Go4Rake < ::Rake::TaskLib
|
|
124
137
|
|
125
138
|
# The executable file.
|
126
139
|
zip.add(name, bin)
|
127
|
-
zip.file.chmod(
|
140
|
+
zip.file.chmod(0o755, name)
|
128
141
|
end
|
129
142
|
puts("Wrote #{zip_file}")
|
130
143
|
end
|
@@ -133,6 +146,7 @@ class Go4Rake < ::Rake::TaskLib
|
|
133
146
|
def clean(dir, file)
|
134
147
|
zip_file = File.expand_path(dir) + '/' + file + '.zip'
|
135
148
|
return unless File.exist?(zip_file)
|
149
|
+
|
136
150
|
puts("Removing #{zip_file}")
|
137
151
|
File.delete(zip_file)
|
138
152
|
end
|
metadata
CHANGED
@@ -1,46 +1,52 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: go4rake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vasily Korytov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '10
|
19
|
+
version: '10'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '14'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- -
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '10'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
32
|
+
version: '14'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rubyzip
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
|
-
- - ~>
|
37
|
+
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
39
|
+
version: '2.0'
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
|
-
- - ~>
|
44
|
+
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
description:
|
42
|
-
programs
|
43
|
-
email:
|
46
|
+
version: '2.0'
|
47
|
+
description: "`build`, `zip, `test`` and `clean` tasks for cross-compilation of Go
|
48
|
+
programs"
|
49
|
+
email: v.korytov@outlook.com
|
44
50
|
executables: []
|
45
51
|
extensions: []
|
46
52
|
extra_rdoc_files: []
|
@@ -60,17 +66,16 @@ require_paths:
|
|
60
66
|
- lib
|
61
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
62
68
|
requirements:
|
63
|
-
- -
|
69
|
+
- - ">="
|
64
70
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
71
|
+
version: '2.5'
|
66
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
73
|
requirements:
|
68
|
-
- -
|
74
|
+
- - ">="
|
69
75
|
- !ruby/object:Gem::Version
|
70
76
|
version: '0'
|
71
77
|
requirements: []
|
72
|
-
|
73
|
-
rubygems_version: 2.0.14.1
|
78
|
+
rubygems_version: 3.1.2
|
74
79
|
signing_key:
|
75
80
|
specification_version: 4
|
76
81
|
summary: Rake helper for cross-compiling Go programs
|