materielize 1.0.0 → 1.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.
@@ -1,3 +1,3 @@
1
1
  module Materielize
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
data/lib/materielize.rb CHANGED
@@ -45,13 +45,17 @@ module Materielize
45
45
  FileUtils.rm_rf(root_path)
46
46
  end
47
47
 
48
- def init_cfg_files
49
- @overwrite_all = false # initialize this do as to not inadvertently cause disaster on a second call or somesuch.
48
+ def init_cfg_files(options = {})
49
+ @overwrite_all = {force_all: false}.merge(options)[:force_all] # initialize if not indicated so as to not inadvertently cause disaster on a second call or somesuch.
50
50
  @project_root = Dir.getwd
51
51
  @root = File.expand_path(default_config_dir, root_dir)
52
52
 
53
- copy([root_dir, default_config_dir]) do |item|
54
- yield(item)
53
+ begin
54
+ copy([root_dir, default_config_dir]) do |item|
55
+ yield(item)
56
+ end
57
+ rescue Interrupt => e
58
+ puts e
55
59
  end
56
60
  end
57
61
 
@@ -132,8 +136,9 @@ module Materielize
132
136
 
133
137
  # Check for a user cancellation before anything is done.
134
138
  if %w[c C].include?(options[:confirmation])
135
- report_back(block, message: "Operation cancelled.")
136
- return
139
+ message = "User cancelled operation."
140
+ report_back(block, message: message)
141
+ raise Interrupt.new(message)
137
142
  end
138
143
  end
139
144
 
@@ -27,9 +27,11 @@ namespace :materiel do
27
27
 
28
28
  desc "Copy default config files into place."
29
29
  task :init_config_files do
30
+ force = parse_args(ARGV)
31
+
30
32
  setup = Materielize::ConfigSetup.new
31
33
 
32
- setup.init_cfg_files do |item|
34
+ setup.init_cfg_files(force_all: force) do |item|
33
35
  if item[:needs_confirmation]
34
36
  item[:confirmation] = ask(item[:message])
35
37
  puts
@@ -40,4 +42,22 @@ namespace :materiel do
40
42
 
41
43
  puts "Done."
42
44
  end
45
+
46
+ def parse_args(args)
47
+ if args.count > 2
48
+ puts "'force' is the only option"
49
+ puts "EX: rake materiel:init_config_files force"
50
+ raise ArgumentError
51
+ end
52
+
53
+ # No args given
54
+ return false if args.count == 1
55
+
56
+ # Swallow the arg so that it's not considered a real rake task by rake
57
+ option = args[1]
58
+ task option.to_sym do ; end
59
+
60
+ # Return true if force given as an arg.
61
+ return args[1].downcase == "force"
62
+ end
43
63
  end
@@ -198,17 +198,17 @@ describe Materielize::ConfigSetup do
198
198
  file1_path = "materiel/default_config_files/#{sub1}/config_file.txt"
199
199
 
200
200
  # Place spoof file in its 'production' location to be found by process
201
- FileUtils.cp(existing_file_name, "./root.txt")
202
- @files_to_nuke << "root.txt"
201
+ FileUtils.cp(existing_file_name, "./config_file.txt")
202
+ @files_to_nuke << "config_file.txt"
203
203
 
204
204
 
205
205
  # Creating file path of default_cfg_file here for organization
206
206
  Dir.mkdir("config")
207
207
  @paths_to_nuke << "config"
208
- file2_path = "materiel/default_config_files/root.txt"
208
+ file2_path = "materiel/default_config_files/config_file.txt"
209
209
 
210
210
  # Place spoof file in its 'production' location to be found by process
211
- FileUtils.cp(existing_file_name, "config/root.txt")
211
+ FileUtils.cp(existing_file_name, "config/config_file.txt")
212
212
 
213
213
  create_subdirectory(sub1)
214
214
 
@@ -217,17 +217,20 @@ describe Materielize::ConfigSetup do
217
217
  FileUtils.cp(src_file_name, file1_path)
218
218
  FileUtils.cp(src_file_name, file2_path)
219
219
 
220
+ prompts = 0
220
221
  @setup.init_cfg_files do |item|
221
222
  if item[:needs_confirmation] == true
222
223
  # Deny the process's request to write over the file.
223
224
  item[:confirmation] = "n"
225
+ prompts += 1
224
226
  end
225
227
  end
228
+ prompts.should eq 2
226
229
 
227
- FileUtils.identical?(existing_file_name, "root.txt").should be true
228
- FileUtils.identical?(existing_file_name, "config/root.txt").should be true
229
- FileUtils.identical?(src_file_name, "root.txt").should be false
230
- FileUtils.identical?(src_file_name, "config/root.txt").should be false
230
+ FileUtils.identical?(existing_file_name, "config_file.txt").should be true
231
+ FileUtils.identical?(existing_file_name, "config/config_file.txt").should be true
232
+ FileUtils.identical?(src_file_name, "config_file.txt").should be false
233
+ FileUtils.identical?(src_file_name, "config/config_file.txt").should be false
231
234
  end
232
235
 
233
236
  it "overwrites existing files if the user indicates yes" do
@@ -356,10 +359,10 @@ describe Materielize::ConfigSetup do
356
359
 
357
360
  i = 0
358
361
  @setup.init_cfg_files do |item|
359
- i += 1
360
362
  if item[:needs_confirmation] == true
361
363
  # Cancel the whole deal.
362
364
  item[:confirmation] = "c"
365
+ i += 1
363
366
  end
364
367
  end
365
368
  i.should eq 1 # There should have been one prompt
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: materielize
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
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: 2012-09-16 00:00:00.000000000 Z
12
+ date: 2012-09-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec