fsorg 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fsorg.rb +12 -5
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68068de4061b604e9b71e8134e9f17dd1d902c0a6e7c269cbfbb0c13d6dd5d24
4
- data.tar.gz: bd84015820aedcd7a7510bdc75d17655552159ff22713a0d63f396950e36e6aa
3
+ metadata.gz: e1ce86ca67be5d602db8974b0741160b2b3c5d9c2036af4c335c565de0729529
4
+ data.tar.gz: f305cfa72e0b889ceca6dda5e6046d82aabf37ed2049657c97f7c5e2654281da
5
5
  SHA512:
6
- metadata.gz: 61a442489d374f4274df638384f9955323398930f6b002a550e4f288ddfffb68c1d4e596d4eb9f60c5730f57994bb64269325906ae52dec3d93153a92bb9b9d3
7
- data.tar.gz: 293cbf041418dcd7b05fc63234ec5de5505c2e38c3efff48322d15525cc6240fb761deb380dcdec1bf51b39e92844852bcf0d656d5b2bdf118dbb1b98f80e156
6
+ metadata.gz: '080d45289d3ddcab4f72b467cd40f5958c0dc94983f84738498201f62eec41ff98438e7019e8c3389efc030176f21a9fe757a96a7f95598927063602ab285535'
7
+ data.tar.gz: 8cf2527ec7f16ac0bf2cd63d5d2ad4c241a783f5135d911320cbce438728cac46214c4529133581739bd4e67269ba6ff1e2b74f5dafdbd833750af7e08f7bf9f
data/lib/fsorg.rb CHANGED
@@ -132,7 +132,7 @@ class Fsorg
132
132
  filepath = @document_path.parent.join(line.sub /^INCLUDE /, "")
133
133
  included_raw = File.new(filepath).read.strip
134
134
  included_fsorg = Fsorg.new(@root_directory, @data, included_raw, filepath)
135
- included_fsorg.preprocess
135
+ included_fsorg.preprocess
136
136
  @data = included_fsorg.data.merge @data
137
137
  output += included_fsorg.document.lines(chomp: true)
138
138
  else
@@ -145,7 +145,6 @@ class Fsorg
145
145
 
146
146
  def store_writes
147
147
  output = []
148
-
149
148
 
150
149
  @document = output.join "\n"
151
150
  end
@@ -392,7 +391,7 @@ class Fsorg
392
391
  puts "#{indentation}> ".cyan.bold + dest.relative_path_from(@root_directory).to_s + (future_file[:permissions] ? " mode #{future_file[:permissions]}".yellow : "")
393
392
  end
394
393
  unless dry_run
395
- dest.write deindent replace_data future_file[:content]
394
+ dest.write ensure_final_newline deindent replace_data future_file[:content]
396
395
  # Not using dest.chmod as the syntax for permissions is more than just integers,
397
396
  # and matches in fact the exact syntax of chmod's argument, per the manpage, chmod(1) (line "Each MODE is of the form…")
398
397
  `chmod #{future_file[:permissions]} #{dest}` if future_file[:permissions]
@@ -400,9 +399,9 @@ class Fsorg
400
399
  end
401
400
 
402
401
  def replace_data(content)
403
- content.gsub /\{\{(?<variable>[^}]+?)\}\}/ do |interpolation|
402
+ content.gsub /\{\{(?<variable>[^}]+?)\}\}/ do |interpolation|
404
403
  variable = interpolation[2..-3]
405
- @data[variable.to_sym]
404
+ @data[variable.to_sym]
406
405
  end
407
406
  end
408
407
 
@@ -452,6 +451,14 @@ def deindent(text)
452
451
  end.join "\n"
453
452
  end
454
453
 
454
+ def ensure_final_newline(text)
455
+ unless text.end_with? "\n"
456
+ text + "\n"
457
+ else
458
+ text
459
+ end
460
+ end
461
+
455
462
  def capture_output
456
463
  old_stdout = $stdout
457
464
  old_stderr = $stderr
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fsorg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ewen Le Bihan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-04-27 00:00:00.000000000 Z
11
+ date: 2022-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt