dorian-dot 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dot +19 -2
  3. metadata +7 -8
  4. data/lib/dorian/dot.rb +0 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac91a7d5e0c81ef488f219e5924a6840fc1859e4a2c161a42a680f07397ac516
4
- data.tar.gz: 13feae4513932ff8f68e5941ee8807427755714cb6a18112ffa473a41890c4e0
3
+ metadata.gz: 928653ce534e932c8ac404596d7ba2bd5570b8e6c2abe20b1c842f3f4e4c014c
4
+ data.tar.gz: 780ab02fa21057d06829feadc1a52b269486ccc29363d6bac802f1c8a8ffef2d
5
5
  SHA512:
6
- metadata.gz: 6bc8a021e14e7780450d34c042c36e08ec1b6802871201c161ee1c97ebd2e87eb7bffa66b65310a13ccc362e02bb7edf7589967cb450ada47063c5965630aae9
7
- data.tar.gz: ecc9cb6a2d7ce874c50e93ca8af854c967218df6781bbdaa9e3b510d616a61d067bcf605dc8e4df5382863d7f904d5640ba016706bb13605a83ec2735d59b7fa
6
+ metadata.gz: e440011fd20bf84bd1e6d99fae3a8de6c396ef1dbd1a4c9189d1f37ed93b44c2944ac3a661d9fb9c4a967f24008457fe733d1e3a20799afcc47f35dce0fa06ca
7
+ data.tar.gz: 76a615b67f50029148ee480e3f3c00e23c51a84d80b52599589ba4a3be0e60db7c4f6b580034970b50dbe4c49329036a2cf293708135fdf6723a01c8213ebbb1
data/bin/dot CHANGED
@@ -1,4 +1,21 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require 'dorian/dot'
4
- Dorian::Dot.run
4
+ require "fileutils"
5
+
6
+ if ARGV.size != 1
7
+ puts "USAGE: dot DIRECTORY"
8
+ exit
9
+ end
10
+
11
+ dir = ARGV[0]
12
+ files = Dir.glob("#{dir}/**/*", File::FNM_DOTMATCH)
13
+ files = files.grep_v(%r{/\.git/})
14
+ files = files.select { |file| File.file?(file) }
15
+ files.each do |file|
16
+ file = file.gsub("//", "/")
17
+ barefile = file.gsub(dir, "").gsub(%r{^/}, "")
18
+ homefile = "#{Dir.home}/#{barefile}".gsub("//", "/")
19
+ File.delete(homefile) if File.exist?(homefile) || File.symlink?(homefile)
20
+ FileUtils.ln_s(File.expand_path(file), homefile, verbose: true)
21
+ end
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dorian-dot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Marié
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-20 00:00:00.000000000 Z
11
+ date: 2024-02-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |-
14
- Links dot files
14
+ Links dot files e.g. `dot ~/src/dotfiles`
15
15
 
16
- e.g. `dot src/clones/dotfiles`
16
+ USAGE: dot DIRECTORY
17
17
  email: dorian@dorianmarie.fr
18
18
  executables:
19
19
  - dot
@@ -21,8 +21,7 @@ extensions: []
21
21
  extra_rdoc_files: []
22
22
  files:
23
23
  - bin/dot
24
- - lib/dorian/dot.rb
25
- homepage: https://github.com/dorianmariefr/dot
24
+ homepage: https://github.com/dorianmariefr/dorian-dot
26
25
  licenses:
27
26
  - MIT
28
27
  metadata:
@@ -42,8 +41,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
41
  - !ruby/object:Gem::Version
43
42
  version: '0'
44
43
  requirements: []
45
- rubygems_version: 3.2.22
44
+ rubygems_version: 3.5.3
46
45
  signing_key:
47
46
  specification_version: 4
48
- summary: Links dot files
47
+ summary: Links dot files e.g. `dot ~/src/dotfiles`
49
48
  test_files: []
data/lib/dorian/dot.rb DELETED
@@ -1,40 +0,0 @@
1
- require "fileutils"
2
-
3
- module Dorian
4
- class Dot
5
- def self.run
6
- if ARGV.size < 1 || ARGV.size > 2 || ARGV[0] == "--help" || ARGV[0] == "-h"
7
- puts "USAGE: dot DIRECTORY [--confirm]"
8
- exit
9
- end
10
-
11
- dir = ARGV[0]
12
- confirm = ARGV[1] == "--confirm"
13
- files = Dir.glob("#{dir}/**/*", File::FNM_DOTMATCH)
14
- files = files.grep_v(/\/.git\//).grep_v(/\/\.$/).grep_v(/\/\.\.$/)
15
- files = files.select { |file| File.file?(file) }
16
- files.each do |file|
17
- file = file.gsub("//", "/")
18
- barefile = file.gsub(dir, "").gsub(/^\//, "")
19
- homefile = "#{Dir.home}/#{barefile}".gsub("//", "/")
20
-
21
- if File.exists?(homefile)
22
- if confirm
23
- FileUtils.rm(homefile)
24
- else
25
- print "#{homefile} file exists, delete? (y/N) "
26
- answer = confirm ? "yes" : $stdin.gets.strip
27
-
28
- if answer[0].to_s.downcase == "y"
29
- FileUtils.rm(homefile)
30
- else
31
- exit
32
- end
33
- end
34
- end
35
-
36
- FileUtils.ln_s(file, homefile, verbose: true)
37
- end
38
- end
39
- end
40
- end