software_smithy 1.6.1 → 1.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/bin/smithy CHANGED
@@ -90,9 +90,9 @@ desc "The root level directory for software"
90
90
  arg_name "PATH"
91
91
  flag ["software-root"]
92
92
 
93
- desc "The prefix of programming environments for this machine"
94
- arg_name "NAME"
95
- flag ["prgenv-prefix"]
93
+ # desc "The prefix of programming environments for this machine"
94
+ # arg_name "NAME"
95
+ # flag ["prgenv-prefix"]
96
96
 
97
97
  desc "The root level directory for published web files"
98
98
  arg_name "PATH"
@@ -250,6 +250,7 @@ command ['build'] do |c|
250
250
  :suppress_stdout => options[:"suppress-stdout"],
251
251
  :force => options[:"force"]
252
252
  end
253
+ Smithy::Config.reindex_completion_caches
253
254
  end
254
255
  end
255
256
 
@@ -319,6 +320,7 @@ command ['new'] do |c|
319
320
  notice_command " smithy module deploy last" , "Install modulefile"
320
321
  notice_command " smithy publish last" , "Publish web description"
321
322
  end
323
+ Smithy::Config.reindex_completion_caches
322
324
  end
323
325
  end
324
326
 
@@ -511,6 +513,7 @@ command ['module'] do |c|
511
513
  notice_command " smithy edit modulefile last" , "Edit generated modulefile"
512
514
  notice_command " smithy module deploy last" , "Install modulefile"
513
515
  end
516
+ Smithy::Config.reindex_completion_caches
514
517
  end
515
518
  end
516
519
 
@@ -627,6 +630,7 @@ command ['formula'] do |c|
627
630
 
628
631
  subcommand.action do |global_options,options,args|
629
632
  FormulaCommand.install_command(options,args)
633
+ Smithy::Config.reindex_completion_caches
630
634
  end
631
635
  end
632
636
 
@@ -639,10 +643,18 @@ command ['formula'] do |c|
639
643
 
640
644
  subcommand.action do |global_options,options,args|
641
645
  FormulaCommand.create_module_command(options,args)
646
+ Smithy::Config.reindex_completion_caches
642
647
  end
643
648
  end
644
649
  end
645
650
 
651
+ desc "reindex auto-completion cache"
652
+ command ['reindex'] do |c|
653
+ c.action do |global_options,options,args|
654
+ Smithy::Config.reindex_completion_caches
655
+ end
656
+ end
657
+
646
658
  # command ['publish_cray'] do |c|
647
659
  # c.desc "See what files will be created without creating them"
648
660
  # c.switch [:n, "dry-run"], :negatable => false
@@ -4,45 +4,45 @@ fi
4
4
 
5
5
  __smithycomp_words_include ()
6
6
  {
7
- local i=1
8
- while [[ $i -lt $COMP_CWORD ]]; do
9
- if [[ "${COMP_WORDS[i]}" = "$1" ]]; then
10
- return 0
11
- fi
12
- i=$((++i))
13
- done
14
- return 1
7
+ local i=1
8
+ while [[ $i -lt $COMP_CWORD ]]; do
9
+ if [[ "${COMP_WORDS[i]}" = "$1" ]]; then
10
+ return 0
11
+ fi
12
+ i=$((++i))
13
+ done
14
+ return 1
15
15
  }
16
16
 
17
17
  # Find the previous non-switch word
18
18
  __smithycomp_prev ()
19
19
  {
20
- local idx=$((COMP_CWORD - 1))
21
- local prv="${COMP_WORDS[idx]}"
22
- while [[ $prv == -* ]]; do
23
- idx=$((--idx))
24
- prv="${COMP_WORDS[idx]}"
25
- done
20
+ local idx=$((COMP_CWORD - 1))
21
+ local prv="${COMP_WORDS[idx]}"
22
+ while [[ $prv == -* ]]; do
23
+ idx=$((--idx))
24
+ prv="${COMP_WORDS[idx]}"
25
+ done
26
26
  }
27
27
 
28
28
 
29
29
  __smithycomp ()
30
30
  {
31
- # break $1 on space, tab, and newline characters,
32
- # and turn it into a newline separated list of words
33
- local list s sep=$'\n' IFS=$' '$'\t'$'\n'
34
- local cur="${COMP_WORDS[COMP_CWORD]}"
31
+ # break $1 on space, tab, and newline characters,
32
+ # and turn it into a newline separated list of words
33
+ local list s sep=$'\n' IFS=$' '$'\t'$'\n'
34
+ local cur="${COMP_WORDS[COMP_CWORD]}"
35
35
 
36
- for s in $1; do
37
- __smithycomp_words_include "$s" && continue
38
- list="$list$s$sep"
39
- done
36
+ for s in $1; do
37
+ __smithycomp_words_include "$s" && continue
38
+ list="$list$s$sep"
39
+ done
40
40
 
41
- case "$cur" in
42
- --*=)
43
- COMPREPLY=()
44
- ;;
45
- *)
41
+ case "$cur" in
42
+ --*=)
43
+ COMPREPLY=()
44
+ ;;
45
+ *)
46
46
  IFS=$sep
47
47
  COMPREPLY=( $(compgen -W "$list" -- "$cur" | sed -e 's/[^=]$/& /g') )
48
48
  ;;
@@ -53,31 +53,31 @@ _smithy ()
53
53
  {
54
54
  #echo "cur: $cur, prev: $prev" > /dev/pts/33
55
55
 
56
- local i=1 cmd
56
+ local i=1 cmd
57
57
 
58
- if [[ -n ${ZSH_VERSION-} ]]; then
59
- emulate -L bash
60
- setopt KSH_TYPESET
58
+ if [[ -n ${ZSH_VERSION-} ]]; then
59
+ emulate -L bash
60
+ setopt KSH_TYPESET
61
61
 
62
- # workaround zsh's bug that leaves 'words' as a special
63
- # variable in versions < 4.3.12
64
- typeset -h words
65
- fi
62
+ # workaround zsh's bug that leaves 'words' as a special
63
+ # variable in versions < 4.3.12
64
+ typeset -h words
65
+ fi
66
66
 
67
- # find the subcommand
68
- while [[ $i -lt $COMP_CWORD ]]; do
69
- local s="${COMP_WORDS[i]}"
70
- case "$s" in
67
+ # find the subcommand
68
+ while [[ $i -lt $COMP_CWORD ]]; do
69
+ local s="${COMP_WORDS[i]}"
70
+ case "$s" in
71
71
  --*) ;;
72
- -*) ;;
73
- *) cmd="$s"
74
- break
75
- ;;
76
- esac
77
- i=$((++i))
78
- done
72
+ -*) ;;
73
+ *) cmd="$s"
74
+ break
75
+ ;;
76
+ esac
77
+ i=$((++i))
78
+ done
79
79
 
80
- if [[ $i -eq $COMP_CWORD ]]; then
80
+ if [[ $i -eq $COMP_CWORD ]]; then
81
81
  local cur="${COMP_WORDS[COMP_CWORD]}"
82
82
  case "$cur" in
83
83
  -*)
@@ -113,97 +113,109 @@ _smithy ()
113
113
  return
114
114
  ;;
115
115
  esac
116
- return
117
- fi
116
+ return
117
+ fi
118
118
 
119
- # subcommands have their own completion functions
120
- case "$cmd" in
121
- build|test) _smithy_build ;;
122
- edit) _smithy_edit ;;
123
- formula) _smithy_formula ;;
124
- help) _smithy_help ;;
125
- module) _smithy_module ;;
126
- new) _smithy_new ;;
127
- publish) _smithy_publish ;;
128
- repair) _smithy_repair ;;
129
- search) _smithy_search ;;
130
- show) _smithy_show ;;
131
- *) ;;
132
- esac
119
+ # subcommands have their own completion functions
120
+ case "$cmd" in
121
+ build|test) _smithy_build ;;
122
+ edit) _smithy_edit ;;
123
+ formula) _smithy_formula ;;
124
+ help) _smithy_help ;;
125
+ module) _smithy_module ;;
126
+ new) _smithy_new ;;
127
+ publish) _smithy_publish ;;
128
+ repair) _smithy_repair ;;
129
+ search) _smithy_search ;;
130
+ show) _smithy_show ;;
131
+ *) ;;
132
+ esac
133
133
  }
134
134
 
135
135
  __smithy_complete_packages ()
136
136
  {
137
- local cur="${COMP_WORDS[COMP_CWORD]}"
138
- local packages=$(smithy search --format=name ${cur})
139
- COMPREPLY=($(compgen -W "$packages" -- "$cur"))
137
+ local cur="${COMP_WORDS[COMP_CWORD]}"
138
+ local cache_file=$HOME/.smithy/completion_packages
139
+ if [[ -e $cache_file ]]
140
+ then
141
+ local packages=$(cat $cache_file)
142
+ else
143
+ local packages=$(smithy search --format=name ${cur})
144
+ fi
145
+ COMPREPLY=($(compgen -W "$packages" -- "$cur"))
140
146
  }
141
147
 
142
148
  __smithy_complete_formulas ()
143
149
  {
144
- local cur="${COMP_WORDS[COMP_CWORD]}"
145
- local packages=$(smithy formula list ${cur})
146
- COMPREPLY=($(compgen -W "$packages" -- "$cur"))
150
+ local cur="${COMP_WORDS[COMP_CWORD]}"
151
+ local cache_file=$HOME/.smithy/completion_formulas
152
+ if [[ -e $cache_file ]]
153
+ then
154
+ local packages=$(cat $cache_file)
155
+ else
156
+ local packages=$(smithy formula list ${cur})
157
+ fi
158
+ COMPREPLY=($(compgen -W "$packages" -- "$cur"))
147
159
  }
148
160
 
149
161
  _smithy_build () {
150
- local cur="${COMP_WORDS[COMP_CWORD]}"
151
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
152
- case "$cur" in
162
+ local cur="${COMP_WORDS[COMP_CWORD]}"
163
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
164
+ case "$cur" in
153
165
  --log-name=*)
154
166
  local t=`echo "$cur" | sed -e 's/--log-name=//g'`
155
167
  COMPREPLY=($(compgen -f "$t"))
156
168
  return
157
169
  ;;
158
- -*)
159
- __smithycomp "
170
+ -*)
171
+ __smithycomp "
160
172
  --disable-log
161
173
  --force
162
174
  --log-name=
163
175
  --dry-run
164
176
  --suppress-stdout"
165
- return
166
- ;;
167
- esac
177
+ return
178
+ ;;
179
+ esac
168
180
  __smithy_complete_packages
169
181
  }
170
182
 
171
183
  _smithy_publish () {
172
- local cur="${COMP_WORDS[COMP_CWORD]}"
173
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
174
- case "$cur" in
175
- -*)
176
- __smithycomp "
184
+ local cur="${COMP_WORDS[COMP_CWORD]}"
185
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
186
+ case "$cur" in
187
+ -*)
188
+ __smithycomp "
177
189
  --dry-run"
178
- return
179
- ;;
180
- esac
190
+ return
191
+ ;;
192
+ esac
181
193
  __smithy_complete_packages
182
194
  }
183
195
 
184
196
  _smithy_module () {
185
- local cur="${COMP_WORDS[COMP_CWORD]}"
186
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
197
+ local cur="${COMP_WORDS[COMP_CWORD]}"
198
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
187
199
  case "$prv" in
188
200
  module)
189
201
  __smithycomp "create deploy edit use"
190
202
  return
191
203
  ;;
192
204
  esac
193
- case "$cur" in
194
- -*)
205
+ case "$cur" in
206
+ -*)
195
207
 
196
- __smithycomp "
208
+ __smithycomp "
197
209
  --dry-run"
198
- return
199
- ;;
200
- esac
210
+ return
211
+ ;;
212
+ esac
201
213
  __smithy_complete_packages
202
214
  }
203
215
 
204
216
  _smithy_edit () {
205
- local cur="${COMP_WORDS[COMP_CWORD]}"
206
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
217
+ local cur="${COMP_WORDS[COMP_CWORD]}"
218
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
207
219
  case "$prv" in
208
220
  edit)
209
221
  __smithycomp "build test env modulefile"
@@ -214,25 +226,25 @@ _smithy_edit () {
214
226
  return
215
227
  ;;
216
228
  esac
217
- case "$cur" in
229
+ case "$cur" in
218
230
  --editor=*)
219
231
  local t=`echo "$cur" | sed -e 's/--editor=//g'`
220
232
  COMPREPLY=($(compgen -c "$t"))
221
233
  return
222
234
  ;;
223
- -*)
224
- __smithycomp "
235
+ -*)
236
+ __smithycomp "
225
237
  --split
226
238
  --editor="
227
- return
228
- ;;
229
- esac
239
+ return
240
+ ;;
241
+ esac
230
242
  __smithy_complete_packages
231
243
  }
232
244
 
233
245
  _smithy_formula () {
234
- local cur="${COMP_WORDS[COMP_CWORD]}"
235
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
246
+ local cur="${COMP_WORDS[COMP_CWORD]}"
247
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
236
248
  case "$prv" in
237
249
  formula)
238
250
  case "$cur" in
@@ -294,8 +306,8 @@ _smithy_formula () {
294
306
  }
295
307
 
296
308
  _smithy_search () {
297
- local cur="${COMP_WORDS[COMP_CWORD]}"
298
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
309
+ local cur="${COMP_WORDS[COMP_CWORD]}"
310
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
299
311
 
300
312
  case "$prv" in
301
313
  --format=*)
@@ -303,18 +315,18 @@ _smithy_search () {
303
315
  return
304
316
  ;;
305
317
  esac
306
- case "$cur" in
307
- -*)
308
- __smithycomp "--format="
309
- return
310
- ;;
311
- esac
318
+ case "$cur" in
319
+ -*)
320
+ __smithycomp "--format="
321
+ return
322
+ ;;
323
+ esac
312
324
  __smithy_complete_packages
313
325
  }
314
326
 
315
327
  _smithy_new () {
316
- local cur="${COMP_WORDS[COMP_CWORD]}"
317
- local prv="${COMP_WORDS[COMP_CWORD-1]}"
328
+ local cur="${COMP_WORDS[COMP_CWORD]}"
329
+ local prv="${COMP_WORDS[COMP_CWORD-1]}"
318
330
 
319
331
  case "$prv" in
320
332
  -t)
@@ -322,22 +334,22 @@ _smithy_new () {
322
334
  return
323
335
  ;;
324
336
  esac
325
- case "$cur" in
337
+ case "$cur" in
326
338
  --tarball=*)
327
339
  local t=`echo "$cur" | sed -e 's/--tarball=//g'`
328
340
  COMPREPLY=($(compgen -f "$t"))
329
341
  return
330
342
  ;;
331
- -*)
332
- __smithycomp "
343
+ -*)
344
+ __smithycomp "
333
345
  --existing-scripts=
334
346
  --dry-run
335
347
  --tarball=
336
348
  --web-description
337
349
  --skip-modulefile"
338
- return
339
- ;;
340
- esac
350
+ return
351
+ ;;
352
+ esac
341
353
  __smithy_complete_packages
342
354
  }
343
355
 
@@ -350,15 +362,15 @@ _smithy_show () {
350
362
  }
351
363
 
352
364
  _smithy_repair () {
353
- local cur="${COMP_WORDS[COMP_CWORD]}"
365
+ local cur="${COMP_WORDS[COMP_CWORD]}"
354
366
 
355
- case "$cur" in
356
- -*)
357
- __smithycomp "
367
+ case "$cur" in
368
+ -*)
369
+ __smithycomp "
358
370
  --dry-run"
359
- return
360
- ;;
361
- esac
371
+ return
372
+ ;;
373
+ esac
362
374
  __smithy_complete_packages
363
375
  }
364
376
 
@@ -1,15 +1,35 @@
1
1
  #compdef smithy
2
2
 
3
3
  _smithy_packages() {
4
- packages=(`smithy search --format=name`)
4
+ cache_file=$HOME/.smithy/completion_packages
5
+ if [[ -e $cache_file ]]
6
+ then
7
+ packages=(`cat $cache_file`)
8
+ else
9
+ packages=(`smithy search --format=name`)
10
+ fi
11
+ _wanted packages expl 'packages' compadd -a packages
5
12
  }
6
13
 
7
14
  _smithy_formulas() {
8
- formulas=(`smithy formula list`)
15
+ cache_file=$HOME/.smithy/completion_formulas
16
+ if [[ -e $cache_file ]]
17
+ then
18
+ formulas=(`cat $cache_file`)
19
+ else
20
+ formulas=(`smithy formula list`)
21
+ fi
22
+ _wanted packages expl 'formulas' compadd -a formulas
9
23
  }
10
24
 
11
25
  _smithy_architectures() {
12
- arches=(`smithy show arch --all`)
26
+ cache_file=$HOME/.smithy/completion_arches
27
+ if [[ -e $cache_file ]]
28
+ then
29
+ arches=(`cat $cache_file`)
30
+ else
31
+ arches=(`smithy show arch --all`)
32
+ fi
13
33
  _wanted packages expl 'architectures' compadd -a arches
14
34
  }
15
35
 
@@ -29,7 +49,6 @@ _1st_arguments=(
29
49
  )
30
50
 
31
51
  local expl
32
- local -a formulae
33
52
 
34
53
  _arguments \
35
54
  '(--arch=)--arch=[Machine architecture to operate on]:architecture:_smithy_architectures' \
@@ -46,10 +65,6 @@ _arguments \
46
65
  '(-v --verbose)'{-v,--verbose}'[Be more verbose]' \
47
66
  '(--web-root=)--web-root=[The root level directory for web files]:directory:_files -/' \
48
67
  '*:: :->subcmds' && return 0
49
- #[[ "$PREFIX" = --* ]] && _arguments -- \
50
- #'*=FILE*:file:_files' \
51
- #'*=PATH*:directory:_files -/' \
52
- #'*=NAME*:directory:_files -/' && return 0
53
68
 
54
69
  # Match Sub-command
55
70
  if (( CURRENT == 1 )); then
@@ -77,7 +92,6 @@ case "$words[1]" in
77
92
 
78
93
  if [[ "$state" == forms ]]; then
79
94
  _smithy_packages
80
- _wanted packages expl 'packages' compadd -a packages
81
95
  fi
82
96
  ;;
83
97
 
@@ -101,7 +115,6 @@ case "$words[1]" in
101
115
 
102
116
  if [[ "$state" == forms ]]; then
103
117
  _smithy_packages
104
- _wanted packages expl 'packages' compadd -a packages
105
118
  fi
106
119
  ;;
107
120
 
@@ -124,7 +137,6 @@ case "$words[1]" in
124
137
 
125
138
  if [[ "$state" == forms ]]; then
126
139
  _smithy_packages
127
- _wanted packages expl 'packages' compadd -a packages
128
140
  fi
129
141
  ;;
130
142
 
@@ -144,7 +156,6 @@ case "$words[1]" in
144
156
 
145
157
  if [[ "$state" == forms ]]; then
146
158
  _smithy_packages
147
- _wanted packages expl 'packages' compadd -a packages
148
159
  fi
149
160
  ;;
150
161
 
@@ -173,7 +184,6 @@ case "$words[1]" in
173
184
 
174
185
  if [[ "$state" == forms ]]; then
175
186
  _smithy_packages
176
- _wanted packages expl 'packages' compadd -a packages
177
187
  fi
178
188
  ;;
179
189
 
@@ -190,9 +200,9 @@ case "$words[1]" in
190
200
  )
191
201
 
192
202
  # not sure how to make this work right
193
- # _arguments \
203
+ # [[ "$PREFIX" = -* ]] && _arguments \
194
204
  # '(-d --directories=)'{-d,--directories=}'[Specify one or more additional formula directories separated with commas]:directory:_files -/' \
195
- # '1: :->forms' && return 0
205
+ # '1: :->subcmds' && return 0
196
206
 
197
207
  # Match subsub-command
198
208
  if (( CURRENT == 2 )); then
@@ -200,20 +210,25 @@ case "$words[1]" in
200
210
  return
201
211
  fi
202
212
 
213
+ # echo $state > /dev/ttys004
214
+
203
215
  # Match subsub-command arguments
204
- if (( CURRENT == 3 )); then
216
+ if (( CURRENT >= 3 )); then
205
217
  case "$words[2]" in
206
218
  install)
207
- _arguments \
219
+ [[ "$PREFIX" = -* ]] && _arguments \
208
220
  '(--clean)--clean[clean existing install prefix]' \
209
221
  '(--no-clean)--no-clean[leave existing install prefix files intact]' \
210
222
  '(-f --formula-name)'{-f,--formula-name}'[Formula name]' \
211
223
  '(-m --modulefile)'{-m,--modulefile}'[Create modulefiles as well]' \
212
- '1: :->forms' && return 0
213
- if [[ "$state" == forms ]]; then
214
- _smithy_formulas
215
- _wanted packages expl 'formulas' compadd -a formulas
216
- fi
224
+ '1: :->subcmds' && return 0
225
+ _smithy_formulas
226
+ ;;
227
+ create_modulefile)
228
+ _smithy_formulas
229
+ ;;
230
+ display)
231
+ _smithy_formulas
217
232
  ;;
218
233
  esac
219
234
 
@@ -65,7 +65,7 @@ module Smithy
65
65
 
66
66
  set_hostname_and_arch
67
67
  options_to_merge[:arch] = @arch
68
- options_to_merge[:"prgenv-prefix"] = get_prgenv_prefix
68
+ # options_to_merge[:"prgenv-prefix"] = get_prgenv_prefix
69
69
 
70
70
  # Merge the config file values with command line values,
71
71
  # options on the command line take precedence.
@@ -123,18 +123,18 @@ module Smithy
123
123
  config_file_hash.try(:[], "compilers")
124
124
  end
125
125
 
126
- def get_prgenv_prefix
127
- default_prefix = "PrgEnv-"
126
+ # def get_prgenv_prefix
127
+ # default_prefix = "PrgEnv-"
128
128
 
129
- default_prefix_from_config = @config_file_hash.try(:[], "programming-environment-prefix").try(:[], "default")
130
- default_prefix = default_prefix_from_config unless default_prefix_from_config.blank?
129
+ # default_prefix_from_config = @config_file_hash.try(:[], "programming-environment-prefix").try(:[], "default")
130
+ # default_prefix = default_prefix_from_config unless default_prefix_from_config.blank?
131
131
 
132
- prefix_from_config = @config_file_hash.try(:[], "programming-environment-prefix").try(:[], @arch)
132
+ # prefix_from_config = @config_file_hash.try(:[], "programming-environment-prefix").try(:[], @arch)
133
133
 
134
- return prefix_from_config unless prefix_from_config.blank?
134
+ # return prefix_from_config unless prefix_from_config.blank?
135
135
 
136
- return default_prefix
137
- end
136
+ # return default_prefix
137
+ # end
138
138
 
139
139
  def set_hostname_and_arch
140
140
  @hostname ||= ENV.try(:[], 'HOSTNAME').try(:dup)
@@ -179,6 +179,25 @@ module Smithy
179
179
  end
180
180
  end
181
181
 
182
+ def reindex_completion_caches
183
+ notice "Reindexing packages"
184
+ FormulaCommand.initialize_directories
185
+ formulas = FormulaCommand.formula_names
186
+ packages = Package.all.collect{|s| s.gsub(/#{full_root}\//, '')}
187
+
188
+ FileUtils.mkdir_p(File.join(ENV["HOME"], ".smithy"))
189
+
190
+ File.open(File.join(ENV["HOME"], ".smithy", "completion_formulas"), "w+") do |f|
191
+ f.puts formulas
192
+ end
193
+ File.open(File.join(ENV["HOME"], ".smithy", "completion_packages"), "w+") do |f|
194
+ f.puts packages
195
+ end
196
+ File.open(File.join(ENV["HOME"], ".smithy", "completion_arches"), "w+") do |f|
197
+ f.puts @config_file_hash["hostname-architectures"].values.uniq.sort
198
+ end
199
+ end
200
+
182
201
  def example_config
183
202
  example = {}
184
203
  example["software-root"] = "/sw"
@@ -197,11 +216,11 @@ module Smithy
197
216
  "analysis-x64" => "lens",
198
217
  "smoky" => "smoky"
199
218
  }
200
- example["programming-environment-prefix"] = {
201
- "default" => "PrgEnv-",
202
- "smoky" => "PE-",
203
- "sith" => "PE-"
204
- }
219
+ # example["programming-environment-prefix"] = {
220
+ # "default" => "PrgEnv-",
221
+ # "smoky" => "PE-",
222
+ # "sith" => "PE-"
223
+ # }
205
224
  example["hostname-architectures"] = {
206
225
  "everest-login" => "redhat6",
207
226
  "everest" => "redhat6",
@@ -53,7 +53,7 @@ module Smithy
53
53
  File.read(formula_file_path(name))
54
54
  end
55
55
 
56
- def self.initialize_directories(options)
56
+ def self.initialize_directories(options = {})
57
57
  prepend_formula_directory(options[:d]) if options[:d]
58
58
  end
59
59
 
@@ -36,5 +36,5 @@
36
36
  # }}}
37
37
 
38
38
  module Smithy
39
- VERSION = '1.6.1'
39
+ VERSION = '1.6.2'
40
40
  end
@@ -52,16 +52,16 @@ Build scripts are shell scripts that live inside of a package\'s PREFIX and exec
52
52
 
53
53
  /sw/xk6/subversion/1\.6\.17
54
54
  `\-\-\- sles11\.1_gnu4\.3\.4
55
- `\-\-\- bin
56
- `\-\-\- build\-notes
57
- `\-\-\- dependencies
58
- `\-\-\- include
59
- `\-\-\- lib
60
- `\-\-\- rebuild
61
- `\-\-\- relink
62
- `\-\-\- remodule
63
- `\-\-\- retest
64
- `\-\-\- share
55
+ |\-\-\- bin
56
+ |\-\-\- build\-notes
57
+ |\-\-\- dependencies
58
+ |\-\-\- include
59
+ |\-\-\- lib
60
+ |\-\-\- rebuild
61
+ |\-\-\- relink
62
+ |\-\-\- remodule
63
+ |\-\-\- retest
64
+ |\-\-\- share
65
65
  `\-\-\- subversion\-1\.6\.17
66
66
  .
67
67
  .fi
@@ -86,10 +86,10 @@ A package installed with a formula has a simpler prefix directory structure\. Th
86
86
 
87
87
  /sw/xk6/subversion/1\.7\.8
88
88
  `\-\-\- sles11\.1_gnu4\.3\.4
89
- `\-\-\- bin
90
- `\-\-\- include
91
- `\-\-\- lib
92
- `\-\-\- source
89
+ |\-\-\- bin
90
+ |\-\-\- include
91
+ |\-\-\- lib
92
+ |\-\-\- source
93
93
  `\-\-\- share
94
94
  .
95
95
  .fi
@@ -183,14 +183,14 @@ Assuming we install subversion with the previous command and our software\-root
183
183
  .nf
184
184
 
185
185
  /sw/xk6/subversion/1\.7\.8
186
- `\-\-\- modulefile
186
+ |\-\-\- modulefile
187
187
  | `\-\-\- subversion
188
188
  | `\-\-\- 1\.7\.8
189
189
  `\-\-\- sles11\.1_gnu4\.3\.4
190
- `\-\-\- bin
191
- `\-\-\- include
192
- `\-\-\- lib
193
- `\-\-\- source
190
+ |\-\-\- bin
191
+ |\-\-\- include
192
+ |\-\-\- lib
193
+ |\-\-\- source
194
194
  `\-\-\- share
195
195
  .
196
196
  .fi
@@ -445,5 +445,211 @@ smithy publish petsc
445
445
  .
446
446
  .IP "" 0
447
447
  .
448
+ .SH "SMITHY CONFIG FILE"
449
+ To see an up to date example of what a smithy config file should look like run \fBsmithy show example_config\fR\. Most of the options specified in a config file can be overridden by global command line options\. See \fBsmithy help\fR for info on global command line options\. The smithy config file uses the yaml \fIhttp://www\.yaml\.org/\fR syntax and looks something like this:
450
+ .
451
+ .IP "" 4
452
+ .
453
+ .nf
454
+
455
+ \-\-\-
456
+ software\-root: /sw
457
+ download\-cache: /sw/sources
458
+ formula\-directories:
459
+ \- /sw/tools/smithy/formulas
460
+ \- /sw/tools/smithy/another_formula_directory
461
+ global\-error\-log: /sw/tools/smithy/exceptions\.log
462
+ file\-group\-name: ccsstaff
463
+ descriptions\-root: /sw/descriptions
464
+ web\-root: /sw/descriptions_in_html
465
+ web\-architecture\-names:
466
+ xk6: titan
467
+ xk7: titan
468
+ analysis\-x64: lens
469
+ smoky: smoky
470
+ hostname\-architectures:
471
+ everest\-login: redhat6
472
+ everest: redhat6
473
+ lens: analysis\-x64
474
+ sith\-login: redhat6
475
+ sith: redhat6
476
+ smoky\-login: smoky
477
+ titan\-login: xk6
478
+ titan\-ext: xk6
479
+ yona\-login: yona
480
+ yona: yona
481
+ .
482
+ .fi
483
+ .
484
+ .IP "" 0
485
+ .
486
+ .SS "software\-root"
487
+ This option defines the top level directory used as the location of architecture directories\. Good choices might be \fB/opt/smithy\fR or \fB/usr/local/smithy\fR\. Someplace under your home directory would work too\.
488
+ .
489
+ .SS "file\-group\-name"
490
+ Software compiled with smithy is intended to be group writable so that more that one user may install software in the same location\. This option defines the group name used for installing software\.
491
+ .
492
+ .SS "hostname\-architectures"
493
+ This option defines what hostnames map to which architecture directories\. Smithy will use the mapped directories whenever it is run on machines with hostnames specified by this option\. Smithy will ignore trailing digits on hostnames\. For example:
494
+ .
495
+ .IP "" 4
496
+ .
497
+ .nf
498
+
499
+ hostname\-architectures:
500
+ everest: redhat6
501
+ titan\-login: xk6
502
+ titan\-ext: xk6
503
+ yona\-login: yona
504
+ yona: yona
505
+ .
506
+ .fi
507
+ .
508
+ .IP "" 0
509
+ .
510
+ .P
511
+ Would produce the following matches:
512
+ .
513
+ .IP "\(bu" 4
514
+ everest > redhat6
515
+ .
516
+ .IP "\(bu" 4
517
+ titan\-login1 > xk6
518
+ .
519
+ .IP "\(bu" 4
520
+ titan\-ext12 > xk6
521
+ .
522
+ .IP "\(bu" 4
523
+ yona\-login2 > yona
524
+ .
525
+ .IP "" 0
526
+ .
527
+ .SS "download\-cache"
528
+ This directory is used when software archives are downloaded via formulas or through the \fBsmithy new \-\-tarfile=\fR option\.
529
+ .
530
+ .SS "formula\-directories"
531
+ This option specifies one or more directories where formulas are stored\. If multiple directories are used then smithy will use the first formula it finds in the order directories are specified\.
532
+ .
533
+ .SS "global\-error\-log"
534
+ This file will log internal errors smithy encounters\. It is usually used for development\. You can also get extra error output by setting \fBGLI_DEBUG=true\fR in your shell\.
535
+ .
536
+ .SS "web\-architecture\-names"
537
+ The \fBsmithy publish\fR command outputs architecture names at the top of description files\. If you wish to use a different name this option allows for that\. For example:
538
+ .
539
+ .IP "" 4
540
+ .
541
+ .nf
542
+
543
+ web\-architecture\-names:
544
+ xk6: titan
545
+ xk7: titan
546
+ analysis\-x64: lens
547
+ .
548
+ .fi
549
+ .
550
+ .IP "" 0
551
+ .
552
+ .SS "web\-root"
553
+ This directory is the target output directory when running \fBsmithy publish\fR
554
+ .
555
+ .SS "descriptions\-root"
556
+ Setting this option changes the way smithy handles description files\. When NOT set smithy will expect descriptions to live inside each application folder inside each architecture folder\. For example, assuming a software\-root of \fB/sw\fR and an architecture of \fBxk6\fR smithy would expect the description files in these locations:
557
+ .
558
+ .IP "" 4
559
+ .
560
+ .nf
561
+
562
+ /sw
563
+ |\-\-\- redhat6
564
+ | |\-\-\- subversion
565
+ | | |\-\-\- 1\.6\.17
566
+ | | |\-\-\- 1\.7\.8
567
+ | | `\-\-\- description\.markdown
568
+ | `\-\-\- git
569
+ | |\-\-\- 1\.7\.9\.5
570
+ | |\-\-\- 1\.8\.2\.1
571
+ | `\-\-\- description\.markdown
572
+ `\-\-\- xk6
573
+ |\-\-\- subversion
574
+ | |\-\-\- 1\.6\.17
575
+ | |\-\-\- 1\.7\.8
576
+ | `\-\-\- description\.markdown
577
+ `\-\-\- git
578
+ |\-\-\- 1\.7\.9\.5
579
+ |\-\-\- 1\.8\.2\.1
580
+ `\-\-\- description\.markdown
581
+ .
582
+ .fi
583
+ .
584
+ .IP "" 0
585
+ .
586
+ .P
587
+ This setup has multiple description files per application\. This might make sense if your documentation is highly dependent on the architecture\. If we set \fBdescriptions\-root\fR to \fB/sw/descriptions\fR smithy would expect the descriptions in:
588
+ .
589
+ .IP "" 4
590
+ .
591
+ .nf
592
+
593
+ /sw
594
+ |\-\-\- redhat6
595
+ | |\-\-\- subversion
596
+ | | |\-\-\- 1\.6\.17
597
+ | | `\-\-\- 1\.7\.8
598
+ | `\-\-\- git
599
+ | |\-\-\- 1\.7\.9\.5
600
+ | `\-\-\- 1\.8\.2\.1
601
+ |\-\-\- xk6
602
+ | |\-\-\- subversion
603
+ | | |\-\-\- 1\.6\.17
604
+ | | `\-\-\- 1\.7\.8
605
+ | `\-\-\- git
606
+ | |\-\-\- 1\.7\.9\.5
607
+ | `\-\-\- 1\.8\.2\.1
608
+ `\-\-\- descriptions
609
+ |\-\-\- subversion
610
+ | `\-\-\- description\.markdown
611
+ `\-\-\- git
612
+ `\-\-\- description\.markdown
613
+ .
614
+ .fi
615
+ .
616
+ .IP "" 0
617
+ .
618
+ .P
619
+ With this we have only one description file per application\.
620
+ .
621
+ .SS "compilers"
622
+ This option allows you to override the complier definition for creating modulefiles\. The syntax is yaml and the default values are:
623
+ .
624
+ .IP "" 4
625
+ .
626
+ .nf
627
+
628
+ compilers:
629
+ \- :prg_env: PrgEnv\-gnu
630
+ :compiler_name: gcc
631
+ :human_name: gnu
632
+ :regex: !ruby/regexp /(gnu|gcc)(\.*)/
633
+ :build_name_regex: !ruby/regexp /(gnu|gcc)([\ed\e\.]+)/
634
+ \- :prg_env: PrgEnv\-pgi
635
+ :compiler_name: pgi
636
+ :human_name: pgi
637
+ :regex: !ruby/regexp /(pgi)(\.*)/
638
+ :build_name_regex: !ruby/regexp /(pgi)([\ed\e\.]+)/
639
+ \- :prg_env: PrgEnv\-intel
640
+ :compiler_name: intel
641
+ :human_name: intel
642
+ :regex: !ruby/regexp /(intel)(\.*)/
643
+ :build_name_regex: !ruby/regexp /(intel)([\ed\e\.]+)/
644
+ \- :prg_env: PrgEnv\-cray
645
+ :compiler_name: cce
646
+ :human_name: cray
647
+ :regex: !ruby/regexp /(cce|cray)(\.*)/
648
+ :build_name_regex: !ruby/regexp /(cce|cray)([\ed\e\.]+)/
649
+ .
650
+ .fi
651
+ .
652
+ .IP "" 0
653
+ .
448
654
  .SH "SEE ALSO"
449
655
  smithyformula(5)
@@ -1,6 +1,6 @@
1
1
  == smithy - Smithy will help you build, test, and install software with ease.
2
2
 
3
- v1.6.1
3
+ v1.6.2
4
4
 
5
5
  === Global Options
6
6
  === --arch NAME
@@ -31,13 +31,6 @@ Group name for files created by smithy
31
31
  [Default Value] None
32
32
 
33
33
 
34
- === --prgenv-prefix NAME
35
-
36
- The prefix of programming environments for this machine
37
-
38
- [Default Value] None
39
-
40
-
41
34
  === --software-root PATH
42
35
 
43
36
  The root level directory for software
@@ -302,6 +295,10 @@ See what files will be created without creating them
302
295
 
303
296
 
304
297
 
298
+ ==== Command: <tt>reindex </tt>
299
+ reindex auto-completion cache
300
+
301
+
305
302
  ==== Command: <tt>repair NAME</tt>
306
303
  Repair a package
307
304
 
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.1
4
+ version: 1.6.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-23 00:00:00.000000000 Z
12
+ date: 2013-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: awesome_print
16
- requirement: &6195940 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *6195940
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: interactive_editor
27
- requirement: &6194100 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *6194100
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: cucumber
38
- requirement: &6202960 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *6202960
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: debugger
49
- requirement: &6213580 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *6213580
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: rake
60
- requirement: &6221940 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *6221940
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: rdoc
71
- requirement: &6217040 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *6217040
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: aruba
82
- requirement: &6231860 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *6231860
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: ronn
93
- requirement: &6230800 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *6230800
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: rspec
104
- requirement: &6229600 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *6229600
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: fuubar
115
- requirement: &6227920 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ! '>='
@@ -120,21 +165,31 @@ dependencies:
120
165
  version: '0'
121
166
  type: :development
122
167
  prerelease: false
123
- version_requirements: *6227920
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
124
174
  - !ruby/object:Gem::Dependency
125
175
  name: gli
126
- requirement: &6224920 !ruby/object:Gem::Requirement
176
+ requirement: !ruby/object:Gem::Requirement
127
177
  none: false
128
178
  requirements:
129
- - - =
179
+ - - '='
130
180
  - !ruby/object:Gem::Version
131
181
  version: 2.7.0
132
182
  type: :runtime
133
183
  prerelease: false
134
- version_requirements: *6224920
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - '='
188
+ - !ruby/object:Gem::Version
189
+ version: 2.7.0
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: kramdown
137
- requirement: &6238200 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
138
193
  none: false
139
194
  requirements:
140
195
  - - ! '>='
@@ -142,10 +197,15 @@ dependencies:
142
197
  version: 1.1.0
143
198
  type: :runtime
144
199
  prerelease: false
145
- version_requirements: *6238200
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: 1.1.0
146
206
  - !ruby/object:Gem::Dependency
147
207
  name: open4
148
- requirement: &6236360 !ruby/object:Gem::Requirement
208
+ requirement: !ruby/object:Gem::Requirement
149
209
  none: false
150
210
  requirements:
151
211
  - - ! '>='
@@ -153,10 +213,15 @@ dependencies:
153
213
  version: '0'
154
214
  type: :runtime
155
215
  prerelease: false
156
- version_requirements: *6236360
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
157
222
  - !ruby/object:Gem::Dependency
158
223
  name: rainbow
159
- requirement: &6233620 !ruby/object:Gem::Requirement
224
+ requirement: !ruby/object:Gem::Requirement
160
225
  none: false
161
226
  requirements:
162
227
  - - ! '>='
@@ -164,21 +229,31 @@ dependencies:
164
229
  version: '0'
165
230
  type: :runtime
166
231
  prerelease: false
167
- version_requirements: *6233620
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
168
238
  - !ruby/object:Gem::Dependency
169
239
  name: activesupport
170
- requirement: &6246620 !ruby/object:Gem::Requirement
240
+ requirement: !ruby/object:Gem::Requirement
171
241
  none: false
172
242
  requirements:
173
- - - =
243
+ - - '='
174
244
  - !ruby/object:Gem::Version
175
245
  version: 3.2.14
176
246
  type: :runtime
177
247
  prerelease: false
178
- version_requirements: *6246620
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - '='
252
+ - !ruby/object:Gem::Version
253
+ version: 3.2.14
179
254
  - !ruby/object:Gem::Dependency
180
255
  name: terminal-table
181
- requirement: &6241040 !ruby/object:Gem::Requirement
256
+ requirement: !ruby/object:Gem::Requirement
182
257
  none: false
183
258
  requirements:
184
259
  - - ! '>='
@@ -186,7 +261,12 @@ dependencies:
186
261
  version: 1.4.5
187
262
  type: :runtime
188
263
  prerelease: false
189
- version_requirements: *6241040
264
+ version_requirements: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ! '>='
268
+ - !ruby/object:Gem::Version
269
+ version: 1.4.5
190
270
  description:
191
271
  email: anthony.digirolamo@gmail.com
192
272
  executables:
@@ -256,7 +336,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
256
336
  version: '0'
257
337
  segments:
258
338
  - 0
259
- hash: 1350694811849315920
339
+ hash: -1093726032562910331
260
340
  required_rubygems_version: !ruby/object:Gem::Requirement
261
341
  none: false
262
342
  requirements:
@@ -265,10 +345,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
345
  version: '0'
266
346
  segments:
267
347
  - 0
268
- hash: 1350694811849315920
348
+ hash: -1093726032562910331
269
349
  requirements: []
270
350
  rubyforge_project:
271
- rubygems_version: 1.8.11
351
+ rubygems_version: 1.8.23
272
352
  signing_key:
273
353
  specification_version: 3
274
354
  summary: Smithy can help maintain a collection of software installed from source.