software_smithy 1.6.2 → 1.6.3
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.
- data/bin/smithy +2 -1
- data/etc/completion/zsh/_smithy +11 -5
- data/lib/smithy/config.rb +11 -6
- data/lib/smithy/download_cache.rb +1 -1
- data/lib/smithy/file_operations.rb +2 -2
- data/lib/smithy/formula.rb +5 -4
- data/lib/smithy/formula_command.rb +9 -8
- data/lib/smithy/module_file.rb +4 -1
- data/lib/smithy_version.rb +1 -1
- data/smithy.rdoc +1 -1
- metadata +4 -4
data/bin/smithy
CHANGED
@@ -43,6 +43,7 @@ $: << File.expand_path(@@smithy_bin_root + '/lib')
|
|
43
43
|
|
44
44
|
require 'English'
|
45
45
|
require 'fileutils'
|
46
|
+
require 'etc'
|
46
47
|
|
47
48
|
require 'rubygems'
|
48
49
|
require 'open4'
|
@@ -57,7 +58,7 @@ require 'active_support/core_ext/string'
|
|
57
58
|
require 'active_support/inflector'
|
58
59
|
|
59
60
|
# require 'debugger' #XXX
|
60
|
-
# require '
|
61
|
+
# require 'pp' #XXX
|
61
62
|
# require 'pry'
|
62
63
|
# require 'pry-doc'
|
63
64
|
|
data/etc/completion/zsh/_smithy
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#compdef smithy
|
2
2
|
|
3
3
|
_smithy_packages() {
|
4
|
-
cache_file=$HOME/.smithy/completion_packages
|
5
|
-
if [[ -e $cache_file ]]
|
4
|
+
cache_file=$HOME/.smithy/completion_packages
|
5
|
+
if [[ -e $cache_file ]]
|
6
6
|
then
|
7
7
|
packages=(`cat $cache_file`)
|
8
8
|
else
|
@@ -13,7 +13,7 @@ _smithy_packages() {
|
|
13
13
|
|
14
14
|
_smithy_formulas() {
|
15
15
|
cache_file=$HOME/.smithy/completion_formulas
|
16
|
-
if [[ -e $cache_file ]]
|
16
|
+
if [[ -e $cache_file ]]
|
17
17
|
then
|
18
18
|
formulas=(`cat $cache_file`)
|
19
19
|
else
|
@@ -24,7 +24,7 @@ _smithy_formulas() {
|
|
24
24
|
|
25
25
|
_smithy_architectures() {
|
26
26
|
cache_file=$HOME/.smithy/completion_arches
|
27
|
-
if [[ -e $cache_file ]]
|
27
|
+
if [[ -e $cache_file ]]
|
28
28
|
then
|
29
29
|
arches=(`cat $cache_file`)
|
30
30
|
else
|
@@ -219,7 +219,7 @@ case "$words[1]" in
|
|
219
219
|
[[ "$PREFIX" = -* ]] && _arguments \
|
220
220
|
'(--clean)--clean[clean existing install prefix]' \
|
221
221
|
'(--no-clean)--no-clean[leave existing install prefix files intact]' \
|
222
|
-
'(-f --formula-name)'{-f,--formula-name}'[Formula name]' \
|
222
|
+
'(-f --formula-name=)'{-f,--formula-name=}'[Formula name]:formula:_smithy_formulas' \
|
223
223
|
'(-m --modulefile)'{-m,--modulefile}'[Create modulefiles as well]' \
|
224
224
|
'1: :->subcmds' && return 0
|
225
225
|
_smithy_formulas
|
@@ -230,6 +230,12 @@ case "$words[1]" in
|
|
230
230
|
display)
|
231
231
|
_smithy_formulas
|
232
232
|
;;
|
233
|
+
new)
|
234
|
+
[[ "$PREFIX" = -* ]] && _arguments \
|
235
|
+
'(-h --homepage=)'{-h,--homepage=}'[Formula homepage]' \
|
236
|
+
'(-n --name=)'{-n,--name=}'[Formula name]' \
|
237
|
+
'1: :->subcmds' && return 0
|
238
|
+
;;
|
233
239
|
esac
|
234
240
|
|
235
241
|
return
|
data/lib/smithy/config.rb
CHANGED
@@ -161,8 +161,13 @@ module Smithy
|
|
161
161
|
return s
|
162
162
|
end
|
163
163
|
|
164
|
+
def homedir
|
165
|
+
@homedir ||= File.join(Dir.home(Etc.getlogin))
|
166
|
+
@homedir
|
167
|
+
end
|
168
|
+
|
164
169
|
def last_prefix
|
165
|
-
rc_file = File.join(
|
170
|
+
rc_file = File.join(homedir, '.smithyrc')
|
166
171
|
if File.exists?(rc_file)
|
167
172
|
h = YAML.load_file(rc_file).stringify_keys rescue nil
|
168
173
|
return h["last"]
|
@@ -172,7 +177,7 @@ module Smithy
|
|
172
177
|
end
|
173
178
|
|
174
179
|
def save_last_prefix(prefix)
|
175
|
-
rc_file = File.join(
|
180
|
+
rc_file = File.join(homedir, '.smithyrc')
|
176
181
|
h = {:last => prefix.encode('UTF-8')}
|
177
182
|
File.open(rc_file, "w+") do |f|
|
178
183
|
f.write(h.to_yaml)
|
@@ -185,15 +190,15 @@ module Smithy
|
|
185
190
|
formulas = FormulaCommand.formula_names
|
186
191
|
packages = Package.all.collect{|s| s.gsub(/#{full_root}\//, '')}
|
187
192
|
|
188
|
-
FileUtils.mkdir_p(File.join(
|
193
|
+
FileUtils.mkdir_p(File.join(homedir, ".smithy"))
|
189
194
|
|
190
|
-
File.open(File.join(
|
195
|
+
File.open(File.join(homedir, ".smithy", "completion_formulas"), "w+") do |f|
|
191
196
|
f.puts formulas
|
192
197
|
end
|
193
|
-
File.open(File.join(
|
198
|
+
File.open(File.join(homedir, ".smithy", "completion_packages"), "w+") do |f|
|
194
199
|
f.puts packages
|
195
200
|
end
|
196
|
-
File.open(File.join(
|
201
|
+
File.open(File.join(homedir, ".smithy", "completion_arches"), "w+") do |f|
|
197
202
|
f.puts @config_file_hash["hostname-architectures"].values.uniq.sort
|
198
203
|
end
|
199
204
|
end
|
@@ -197,7 +197,7 @@ module Smithy
|
|
197
197
|
|
198
198
|
def install_from_string(content, dest, options = {})
|
199
199
|
if options[:noop]
|
200
|
-
updated_file = File.join(
|
200
|
+
updated_file = File.join(Smithy::Config.homedir+"/.smithy_#{File.basename(dest)}_#{Time.now.to_i}")
|
201
201
|
else
|
202
202
|
updated_file = File.join(File.dirname(dest), ".#{File.basename(dest)}_#{Time.now.to_i}")
|
203
203
|
end
|
@@ -218,7 +218,7 @@ module Smithy
|
|
218
218
|
dest = args[:destination]
|
219
219
|
|
220
220
|
if options[:noop]
|
221
|
-
rendered_file =
|
221
|
+
rendered_file = Smithy::Config.homedir+"/.#{File.basename(dest)}_#{Time.now.to_i}"
|
222
222
|
else
|
223
223
|
rendered_file = "#{File.dirname(dest)}/.#{File.basename(dest)}_#{Time.now.to_i}"
|
224
224
|
end
|
data/lib/smithy/formula.rb
CHANGED
@@ -30,6 +30,7 @@ module Smithy
|
|
30
30
|
@module_commands = nil # re-evaluate module_commands block
|
31
31
|
@module_setup = ""
|
32
32
|
raise "please specify modules OR modules_command, not both" if modules.present? && module_commands.present?
|
33
|
+
raise "module_commands method must return an array" if module_commands.present? && module_commands.class != Array
|
33
34
|
if ENV["MODULESHOME"]
|
34
35
|
@modulecmd = "modulecmd sh"
|
35
36
|
@modulecmd = "#{ENV["MODULESHOME"]}/bin/modulecmd sh" if File.exists?("#{ENV["MODULESHOME"]}/bin/modulecmd")
|
@@ -108,8 +109,8 @@ module Smithy
|
|
108
109
|
m = ModuleFile.new :package => package
|
109
110
|
FileUtils.mkdir_p(File.dirname(m.module_file))
|
110
111
|
FileOperations.render_erb(:erb_string => modulefile, :binding => m.get_binding, :destination => m.module_file)
|
111
|
-
FileOperations.make_group_writable(m.
|
112
|
-
FileOperations.set_group(m.
|
112
|
+
FileOperations.make_group_writable(m.module_path, :recursive => true)
|
113
|
+
FileOperations.set_group(m.module_path, package.group, :recursive => true)
|
113
114
|
return true
|
114
115
|
end
|
115
116
|
|
@@ -131,9 +132,9 @@ module Smithy
|
|
131
132
|
end
|
132
133
|
|
133
134
|
def module_environment_variable(mod, var)
|
134
|
-
module_display = `#{@modulecmd} display #{mod} 2>&1`
|
135
|
+
module_display = `#{module_setup} #{@modulecmd} display #{mod} 2>&1`
|
135
136
|
if module_display =~ /(\S+)\s+#{var}\s+(.*)$/
|
136
|
-
return $2
|
137
|
+
return $2.strip
|
137
138
|
else
|
138
139
|
return ""
|
139
140
|
end
|
@@ -7,7 +7,7 @@ module Smithy
|
|
7
7
|
# 3. smithy's built in formulas
|
8
8
|
def self.formula_directories
|
9
9
|
unless @formula_directories
|
10
|
-
@formula_directories = [ File.join(
|
10
|
+
@formula_directories = [ File.join(Smithy::Config.homedir, ".smithy/formulas") ]
|
11
11
|
if Smithy::Config.global[:"formula-directories"]
|
12
12
|
Smithy::Config.global[:"formula-directories"].reverse.each do |dir|
|
13
13
|
@formula_directories << dir
|
@@ -81,15 +81,16 @@ module Smithy
|
|
81
81
|
raise "unknown formula #{formula_name}" unless formula_names.include?(formula_name)
|
82
82
|
|
83
83
|
require formula_file_path(formula_name)
|
84
|
-
|
84
|
+
|
85
|
+
formula_class = "#{formula_name.underscore.camelize}Formula".constantize
|
86
|
+
version = formula_class.version if version.blank?
|
87
|
+
build = operating_system if build.blank?
|
88
|
+
p = Package.new :path => [name, version, build].join("/"), :group_writable => !formula_class.disable_group_writable
|
89
|
+
|
90
|
+
f = "#{formula_name.underscore.camelize}Formula".constantize.new(p)
|
85
91
|
# Set the actual formula file path, otherwise it's just formula.rb
|
86
92
|
f.formula_file = formula_file_path(formula_name)
|
87
93
|
|
88
|
-
version = f.version if version.blank?
|
89
|
-
build = operating_system if build.blank?
|
90
|
-
p = Package.new :path => [name, version, build].join("/"), :group_writable => f.group_writable?
|
91
|
-
f.set_package(p) if p.valid?
|
92
|
-
|
93
94
|
return f
|
94
95
|
end
|
95
96
|
|
@@ -165,7 +166,7 @@ module Smithy
|
|
165
166
|
@formula_homepage = options[:homepage]
|
166
167
|
@formula_homepage = "#{URI(@formula_url).scheme}://#{URI(@formula_url).host}/" unless options[:homepage]
|
167
168
|
|
168
|
-
destination = File.join(
|
169
|
+
destination = File.join(Smithy::Config.homedir, ".smithy/formulas")
|
169
170
|
destination = Smithy::Config.global[:"formula-directories"].first if Smithy::Config.global[:"formula-directories"]
|
170
171
|
FileUtils::mkdir_p(destination)
|
171
172
|
|
data/lib/smithy/module_file.rb
CHANGED
@@ -133,10 +133,13 @@ module Smithy
|
|
133
133
|
def module_build_list(package, builds, args = {})
|
134
134
|
output = ""
|
135
135
|
|
136
|
-
|
137
136
|
notice "Multiple Builds Found" if Smithy::Config.global[:verbose]
|
138
137
|
notice_info "Build Name".rjust(25)+" Required Modules" if Smithy::Config.global[:verbose]
|
139
138
|
ModuleFile::compilers.each_with_index do |e,i|
|
139
|
+
|
140
|
+
prgenv = e[:prg_env]
|
141
|
+
prgenv.gsub!(/PrgEnv-/, args.fetch(:prgenv_prefix)) if args[:prgenv_prefix]
|
142
|
+
|
140
143
|
if i == 0
|
141
144
|
output << "if "
|
142
145
|
else
|
data/lib/smithy_version.rb
CHANGED
data/smithy.rdoc
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: software_smithy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: awesome_print
|
@@ -336,7 +336,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
336
336
|
version: '0'
|
337
337
|
segments:
|
338
338
|
- 0
|
339
|
-
hash: -
|
339
|
+
hash: -3602502256992475544
|
340
340
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
341
341
|
none: false
|
342
342
|
requirements:
|
@@ -345,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
345
345
|
version: '0'
|
346
346
|
segments:
|
347
347
|
- 0
|
348
|
-
hash: -
|
348
|
+
hash: -3602502256992475544
|
349
349
|
requirements: []
|
350
350
|
rubyforge_project:
|
351
351
|
rubygems_version: 1.8.23
|