golden 0.5.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/exe/golden +70 -3
- data/lib/crucible.rb +56 -7
- data/lib/golden.rb +1 -0
- data/lib/golden/logo-banner.rb +11 -0
- data/lib/golden/version.rb +23 -0
- metadata +50 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 563173c01910c4a67941add131949b606c7691071808a05420fa44eeca9f5b58
|
4
|
+
data.tar.gz: 3c2705e9b064a45f4c74bfb21a52a39620908c54b63bae302232ac7e48896b94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 613d514dea41b19b19130f4cf99c6c7fe83f785336db8e5c45dff685a917de4b068d46879ae7835a7d658b4da3d7eead38fa0c24516ce959224b569b24aaf80d
|
7
|
+
data.tar.gz: 2613d2a111f93cff7cffad8beb6dafb31e3a5341556b723119924276cb2f223ed27bf85275772aba6e4d4e8fd58384be5d5cef35b9b469dde67d606900b08f6c
|
data/exe/golden
CHANGED
@@ -3,8 +3,20 @@ require "thor"
|
|
3
3
|
require 'open3'
|
4
4
|
require 'json'
|
5
5
|
require_relative("../lib/crucible.rb")
|
6
|
+
require_relative("../lib/golden/logo-banner.rb")
|
6
7
|
module Golden
|
7
8
|
class Cli < Thor
|
9
|
+
desc "add [path]", "add library at [path] to the list of known packages"
|
10
|
+
method_option :verbose, :aliases => "-v", :desc => "Build with verbose logging"
|
11
|
+
def add(path=nil)
|
12
|
+
self.load(options)
|
13
|
+
if(!path)
|
14
|
+
path = Dir.pwd
|
15
|
+
end
|
16
|
+
@crucible.add(path)
|
17
|
+
self.save
|
18
|
+
end
|
19
|
+
|
8
20
|
desc "build [fileName]", "build library named [fileName]"
|
9
21
|
method_option :verbose, :aliases => "-v", :desc => "Build with verbose logging"
|
10
22
|
def build(fileName)
|
@@ -37,18 +49,22 @@ module Golden
|
|
37
49
|
method_option :verbose, :aliases => "-v", :desc => "List with package detail"
|
38
50
|
def list
|
39
51
|
self.load(options)
|
40
|
-
if(!@crucible.packages || @crucible.packages.keys.length
|
52
|
+
if(!@crucible.packages || @crucible.packages.keys.length <= 1)
|
41
53
|
puts "No libraries have yet been built. Navigate to a go project and build one using 'golden build (LibraryName).'"
|
42
54
|
else
|
43
55
|
puts "Golden has access to the following libraries:"
|
44
56
|
if(@crucible.verbose?)
|
45
57
|
@crucible.packages.each do |name, location|
|
46
|
-
|
58
|
+
if(name != "_config")
|
59
|
+
puts "#{name}\t#{location}"
|
60
|
+
end
|
47
61
|
end
|
48
62
|
else
|
49
|
-
|
63
|
+
packages = @crucible.packages.keys.filter{|pkg| pkg != "_config"}
|
64
|
+
puts packages
|
50
65
|
end
|
51
66
|
end
|
67
|
+
self.save
|
52
68
|
end
|
53
69
|
|
54
70
|
desc "install [fileName]", "install a library built with golden to the current ruby project"
|
@@ -61,6 +77,32 @@ module Golden
|
|
61
77
|
else
|
62
78
|
puts "No libraries named #{packageName} are yet known to golden. You can list all known libraries with 'golden list'"
|
63
79
|
end
|
80
|
+
self.save
|
81
|
+
end
|
82
|
+
|
83
|
+
desc "version", "show gem version info"
|
84
|
+
def version
|
85
|
+
self.load({})
|
86
|
+
puts "Golden v#{Golden.gem_version}"
|
87
|
+
if(@crucible.get_config("since_last_update_check") != 10 || @crucible.silence_update_notifications?)
|
88
|
+
puts Golden::Logo.build
|
89
|
+
end
|
90
|
+
self.save
|
91
|
+
end
|
92
|
+
|
93
|
+
desc "config", "configure Golden"
|
94
|
+
method_option :true, :aliases => "-t", :desc => "set a boolean config option to true"
|
95
|
+
method_option :false, :aliases => "-f", :desc => "set a boolean config option to false"
|
96
|
+
def config(config_name, value=nil)
|
97
|
+
self.load({})
|
98
|
+
if(!!options[:true])
|
99
|
+
value = true
|
100
|
+
elsif(!!options[:false])
|
101
|
+
value = false
|
102
|
+
end
|
103
|
+
|
104
|
+
@crucible.config(config_name, value)
|
105
|
+
self.save
|
64
106
|
end
|
65
107
|
|
66
108
|
protected
|
@@ -68,6 +110,31 @@ module Golden
|
|
68
110
|
@crucible = Golden::Crucible.new(options)
|
69
111
|
end
|
70
112
|
def save
|
113
|
+
count = @crucible.get_config("since_last_update_check")
|
114
|
+
if(count >= 10 && !@crucible.silence_update_notifications?)
|
115
|
+
if(@crucible.get_config("update_available"))
|
116
|
+
update = @crucible.get_config("update_available")
|
117
|
+
else
|
118
|
+
update = Golden.update_available?
|
119
|
+
end
|
120
|
+
if(!!update)
|
121
|
+
if(!@crucible.get_config("update_available") || @crucible.get_config("update_available").join('.') != update.join("."))
|
122
|
+
@crucible.config('update_available', update) # store any discovered update locally to prevent spamming rubygems
|
123
|
+
end
|
124
|
+
puts "\n"
|
125
|
+
puts Golden::Logo.build
|
126
|
+
puts "An update is available! You're currently using v#{Golden.gem_version}. "
|
127
|
+
puts "To update to v#{update.join(".")} type 'gem update golden'"
|
128
|
+
puts "\n"
|
129
|
+
puts "Be sure to also update the gemfile or gemspec for any projects that use golden to load libraries."
|
130
|
+
puts "To silence these notifications, run 'golden config silence_updates -t'"
|
131
|
+
end
|
132
|
+
@crucible.config("since_last_update_check", 0)
|
133
|
+
else
|
134
|
+
if(!@crucible.silence_update_notifications?) #stop incrementing if updates are silenced
|
135
|
+
@crucible.config("since_last_update_check", count+1)
|
136
|
+
end
|
137
|
+
end
|
71
138
|
@crucible.save
|
72
139
|
end
|
73
140
|
end
|
data/lib/crucible.rb
CHANGED
@@ -13,8 +13,20 @@ module Golden
|
|
13
13
|
else
|
14
14
|
@packages = JSON.parse(File.open(@pkgLogFile).read)
|
15
15
|
end
|
16
|
+
set_base_config
|
17
|
+
end
|
18
|
+
def add(path)
|
19
|
+
if(File.directory?(path))
|
20
|
+
golden_data = JSON.parse(File.open(File.expand_path(path)+"/golden.json").read)
|
21
|
+
elsif(File.basename == "golden" && File.extname(path) == "json")
|
22
|
+
golden_data = JSON.parse(File.open(path).read)
|
23
|
+
end
|
24
|
+
golden_data.keys.each do |libName|
|
25
|
+
puts "Adding #{libName}"
|
26
|
+
@packages[libName] = File.dirname(path)
|
27
|
+
end
|
28
|
+
self.save()
|
16
29
|
end
|
17
|
-
|
18
30
|
def build(fileName,dir)
|
19
31
|
libName,extension = fileName.split('.')
|
20
32
|
if(!extension)
|
@@ -67,17 +79,32 @@ module Golden
|
|
67
79
|
golden_data[libName] = {}
|
68
80
|
exports.each do |e|
|
69
81
|
function_name = e.chomp.lstrip
|
70
|
-
declaration_regex = Regexp.new("func #{function_name}\s?\((?<args>.*)\) (?<returns>.*) {")
|
82
|
+
declaration_regex = Regexp.new('\s*'+"func #{function_name}\s?\((?<args>.*)\) (?<returns>.*) {")
|
71
83
|
export_data = {}
|
72
84
|
export_data[:args] = {}
|
73
|
-
|
85
|
+
declaration = source_code.scan(declaration_regex).flatten
|
86
|
+
args = declaration[0]
|
74
87
|
args = args[1,args.length-2]
|
75
88
|
args = args.split(',')
|
76
|
-
|
89
|
+
|
90
|
+
args.each_with_index do |arg, i|
|
77
91
|
name, type = arg.split(" ")
|
78
|
-
|
92
|
+
if(!!type && type != "")
|
93
|
+
export_data[:args][name] = type
|
94
|
+
else
|
95
|
+
type = nil
|
96
|
+
next_args = args.slice(i+1, args.length)
|
97
|
+
next_args.each do |next_arg|
|
98
|
+
potential_type = next_arg.split(" ")[1]
|
99
|
+
if(!!potential_type && !type && potential_type != "")
|
100
|
+
type = potential_type
|
101
|
+
end
|
102
|
+
end
|
103
|
+
export_data[:args][name] = type
|
104
|
+
end
|
79
105
|
end
|
80
|
-
|
106
|
+
|
107
|
+
export_data[:returns] = declaration[1]
|
81
108
|
# require "pry"
|
82
109
|
# binding.pry
|
83
110
|
golden_data[libName][function_name] = export_data
|
@@ -92,7 +119,15 @@ module Golden
|
|
92
119
|
end
|
93
120
|
@packages[libName] = dir
|
94
121
|
end
|
95
|
-
|
122
|
+
def config(config_name, value)
|
123
|
+
@packages["_config"][config_name] = value
|
124
|
+
end
|
125
|
+
def get_config(config_name)
|
126
|
+
@packages["_config"][config_name]
|
127
|
+
end
|
128
|
+
def unset_config(config_name)
|
129
|
+
@packages["_config"].delete(config_name)
|
130
|
+
end
|
96
131
|
def install(packageName)
|
97
132
|
cwd = Dir.pwd
|
98
133
|
extDestination = File.expand_path(cwd+"/bin")
|
@@ -118,11 +153,25 @@ module Golden
|
|
118
153
|
end
|
119
154
|
def clear
|
120
155
|
@packages = {}
|
156
|
+
set_base_config
|
121
157
|
save
|
122
158
|
end
|
159
|
+
def set_base_config
|
160
|
+
if(!@packages["_config"])
|
161
|
+
@packages["_config"] = {}
|
162
|
+
self.save
|
163
|
+
end
|
164
|
+
if(!@packages["_config"]["since_last_update_check"])
|
165
|
+
@packages["_config"]["since_last_update_check"] = 0
|
166
|
+
self.save
|
167
|
+
end
|
168
|
+
end
|
123
169
|
def verbose?
|
124
170
|
return (!!@options && !!@options[:verbose])
|
125
171
|
end
|
172
|
+
def silence_update_notifications?
|
173
|
+
return (@packages["_config"]["silence_updates"])
|
174
|
+
end
|
126
175
|
def save
|
127
176
|
# @pkgLogFile = File.expand_path(File.dirname(__FILE__)+"/../packages.json") # Installation specific package log
|
128
177
|
File.open(@pkgLogFile,"w") do |f|
|
data/lib/golden.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
module Golden
|
3
|
+
def self.gem_version
|
4
|
+
Gem::Version.new VERSION::STRING
|
5
|
+
end
|
6
|
+
def self.update_available? # Returns true if update is required
|
7
|
+
current = Gem.latest_version_for("golden").segments
|
8
|
+
if((VERSION::MAJOR < current[0]) || (VERSION::FEATURE < current[1]) || (VERSION::PATCH < current[2]))
|
9
|
+
return current
|
10
|
+
end
|
11
|
+
end
|
12
|
+
module VERSION
|
13
|
+
MAJOR = 0
|
14
|
+
FEATURE = 6
|
15
|
+
PATCH = 2
|
16
|
+
PRE = "0"
|
17
|
+
if(PRE && PRE != "0")
|
18
|
+
STRING = [MAJOR, FEATURE, PATCH, PRE].compact.join(".")
|
19
|
+
else
|
20
|
+
STRING = [MAJOR, FEATURE, PATCH].compact.join(".")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: golden
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Greg Mikeska
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02
|
11
|
+
date: 2021-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -24,6 +24,48 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: tty-font
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.5.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.5.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pastel
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.8.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: thor
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.1'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.1'
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: pry
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,14 +86,14 @@ dependencies:
|
|
44
86
|
requirements:
|
45
87
|
- - "~>"
|
46
88
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
89
|
+
version: '2'
|
48
90
|
type: :development
|
49
91
|
prerelease: false
|
50
92
|
version_requirements: !ruby/object:Gem::Requirement
|
51
93
|
requirements:
|
52
94
|
- - "~>"
|
53
95
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
96
|
+
version: '2'
|
55
97
|
- !ruby/object:Gem::Dependency
|
56
98
|
name: rake
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,6 +134,8 @@ files:
|
|
92
134
|
- exe/golden
|
93
135
|
- lib/crucible.rb
|
94
136
|
- lib/golden.rb
|
137
|
+
- lib/golden/logo-banner.rb
|
138
|
+
- lib/golden/version.rb
|
95
139
|
homepage: https://github.com/gmikeska/golden
|
96
140
|
licenses: []
|
97
141
|
metadata: {}
|
@@ -99,6 +143,7 @@ post_install_message:
|
|
99
143
|
rdoc_options: []
|
100
144
|
require_paths:
|
101
145
|
- lib
|
146
|
+
- lib/golden
|
102
147
|
required_ruby_version: !ruby/object:Gem::Requirement
|
103
148
|
requirements:
|
104
149
|
- - ">="
|
@@ -110,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
155
|
- !ruby/object:Gem::Version
|
111
156
|
version: '0'
|
112
157
|
requirements: []
|
113
|
-
rubygems_version: 3.
|
158
|
+
rubygems_version: 3.1.4
|
114
159
|
signing_key:
|
115
160
|
specification_version: 4
|
116
161
|
summary: Golden is a development tool that makes it easier to wrap Go libraries for
|