ignore-it 1.0.2 → 1.1.0
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.
- checksums.yaml +4 -4
- data/bin/ignore-it +4 -2
- data/default_config.yml +8 -0
- data/lib/ignore_it.rb +62 -24
- data/lib/ignore_it/config.rb +49 -0
- data/lib/ignore_it/creator.rb +69 -38
- data/lib/ignore_it/list.rb +36 -2
- metadata +31 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 80d9566a34fc947b8be73b0c0c807829ee5a610cf4f07b9c078ef88532f4256d
|
4
|
+
data.tar.gz: 731a3c6d125d0b3a3e8654410788dd8b257ab9812397c3d4f7dc8cb4aea6dc1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35a98c0914b2b4213b45353fdfa11b396b383cd78fd467a228f5073d8ae792c538a72130c5c60ddce176648a1e6237d7bf50596f31ca549ce0615cc099115042
|
7
|
+
data.tar.gz: 93e85ef86fab76aa03bf1337151261829815c313a373497fa28c6b5a262580278dc14a02ddd941c51e671c463066f228b634706dae71d45d1779add536ec86cd
|
data/bin/ignore-it
CHANGED
data/default_config.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
########################
|
2
|
+
# CONFIG for ignore-it #
|
3
|
+
########################
|
4
|
+
|
5
|
+
# Set ABSOLUTE path to the directory where own gitignore files are stored
|
6
|
+
# Default path is ~/.ignore-it/gitignores
|
7
|
+
# OPTIONS: "default", "absolute_path"
|
8
|
+
own_gitignore_path: "default"
|
data/lib/ignore_it.rb
CHANGED
@@ -1,42 +1,80 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'net/http'
|
2
3
|
require 'json'
|
3
4
|
require 'colorize'
|
4
5
|
require 'readline'
|
5
6
|
require 'ignore_it/list'
|
7
|
+
require 'ignore_it/config'
|
6
8
|
require 'ignore_it/creator'
|
9
|
+
require 'thor'
|
7
10
|
|
8
11
|
module IgnoreIt
|
9
|
-
class
|
10
|
-
|
11
|
-
|
12
|
-
@
|
13
|
-
@options = {}
|
14
|
-
@list = List.new
|
12
|
+
class CLI < Thor
|
13
|
+
def initialize(*args)
|
14
|
+
super
|
15
|
+
@config = Config.new
|
15
16
|
@creator = Creator.new
|
17
|
+
@list = List.new
|
18
|
+
$glob_settings[:output] = "./.gitignore"
|
16
19
|
end
|
17
20
|
|
18
|
-
|
21
|
+
class_options force: :boolean, output: :string
|
19
22
|
|
20
|
-
|
23
|
+
desc "add [templateName]", "Select gitignore template to create a .gitignore file
|
24
|
+
or add a template to an existing .gitignore file"
|
25
|
+
def add(*templateName)
|
26
|
+
if options[:output]
|
27
|
+
return false unless @creator.check_output_path(options[:output])
|
28
|
+
$glob_settings[:output] = if options[:output][-1] == '/'
|
29
|
+
options[:output] + '.gitignore'
|
30
|
+
else
|
31
|
+
options[:output] + '/.gitignore'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
if options[:force]
|
35
|
+
$glob_settings[:force] = true
|
36
|
+
end
|
37
|
+
templateName.each do |name|
|
38
|
+
name = name.downcase
|
39
|
+
if @list.check_list(name)
|
40
|
+
@creator.create_api_ignore(name)
|
41
|
+
else
|
42
|
+
puts "The template #{name} you tried to fetch does not exist".colorize(:red)
|
43
|
+
puts "Please checkout the available templates with " + "ignore-it list".colorize(:green)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
21
47
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
else
|
31
|
-
puts "The template you tried to fetch does not exist".colorize(:red)
|
32
|
-
puts "Please checkout the available templates with " + "ignore-it -l".colorize(:green)
|
33
|
-
end
|
34
|
-
# @options[:file] = true
|
48
|
+
desc "own [fileName]", "Select user-created template from the folder specified in ~/.ignore-it/config.yml. Default is ~/.ignore-it/gitignores/."
|
49
|
+
def own(*fileName)
|
50
|
+
if options[:output]
|
51
|
+
return false unless @creator.check_output_path(options[:output])
|
52
|
+
$glob_settings[:output] = if options[:output][-1] == '/'
|
53
|
+
options[:output] + '.gitignore'
|
54
|
+
else
|
55
|
+
options[:output] + '/.gitignore'
|
35
56
|
end
|
36
|
-
|
37
|
-
|
57
|
+
end
|
58
|
+
if options[:force] == true
|
59
|
+
$glob_settings[:force] = true
|
60
|
+
end
|
61
|
+
fileName.each do |name|
|
62
|
+
if @list.check_own_files(name)
|
63
|
+
@creator.create_own_ignore(name)
|
64
|
+
else
|
65
|
+
puts "The template #{name} you tried to create does not exist".colorize(:red)
|
66
|
+
puts "The following templates are available:".colorize(:red)
|
67
|
+
@list.show_own_files
|
38
68
|
end
|
39
|
-
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
desc "list", "Show List of available .gitignore entries"
|
73
|
+
def list
|
74
|
+
puts "---- Available templates from gitignore.io: ----"
|
75
|
+
@list.show_list
|
76
|
+
puts "---- Available user templates (see ~/.ignore-it/config.yml) ----"
|
77
|
+
@list.show_own_files
|
40
78
|
end
|
41
79
|
end
|
42
80
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module IgnoreIt
|
5
|
+
class Config
|
6
|
+
attr_accessor :config
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
$glob_settings = {}
|
10
|
+
create_initial_config
|
11
|
+
load_config
|
12
|
+
end
|
13
|
+
|
14
|
+
def print_config
|
15
|
+
puts $glob_settings.to_yaml
|
16
|
+
end
|
17
|
+
|
18
|
+
# Load user config from config directory
|
19
|
+
def load_config
|
20
|
+
Dir.chdir(Dir.home) do
|
21
|
+
if File.exist?(".ignore-it/config.yml")
|
22
|
+
$glob_settings = YAML.load_file(".ignore-it/config.yml")
|
23
|
+
else
|
24
|
+
puts "Failed to load user config in ~/.ignore-it/config.yml".colorize(:red)
|
25
|
+
puts "Defaulting...".colorize(:red)
|
26
|
+
$glob_settings = YAML.load_file(find_gem_root + "/default_config.yml")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Find the gems install directory
|
32
|
+
def find_gem_root
|
33
|
+
spec = Gem::Specification.find_by_name("ignore-it")
|
34
|
+
spec.gem_dir
|
35
|
+
end
|
36
|
+
|
37
|
+
# Create initial user config and folders in home directory
|
38
|
+
def create_initial_config
|
39
|
+
Dir.chdir(Dir.home) do
|
40
|
+
unless Dir.exist?(".ignore-it")
|
41
|
+
Dir.mkdir(".ignore-it")
|
42
|
+
Dir.mkdir(".ignore-it/gitignores")
|
43
|
+
defaultConfig = File.read(find_gem_root + "/default_config.yml")
|
44
|
+
File.write(".ignore-it/config.yml", defaultConfig)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/ignore_it/creator.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# lib/creation.rb
|
2
3
|
require 'ignore_it/list'
|
3
4
|
require 'readline'
|
@@ -6,55 +7,85 @@ require 'colorize'
|
|
6
7
|
module IgnoreIt
|
7
8
|
class Creator
|
8
9
|
def initialize
|
9
|
-
list = List.new
|
10
|
-
@jsonResponse = list.jsonResponse
|
10
|
+
@list = List.new
|
11
|
+
@jsonResponse = @list.jsonResponse
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
-
def create_ignore(name)
|
15
|
-
template = @jsonResponse[name]
|
16
|
-
contents = template["contents"]
|
17
|
-
|
14
|
+
def create_file(contents, name)
|
18
15
|
puts "Creating .gitignore for " + name.colorize(:green)
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
# puts "wut"
|
16
|
+
unless $glob_settings[:force]
|
17
|
+
if File.exist?($glob_settings[:output])
|
18
|
+
sttySave = %x(stty -g).chomp # Store the state of the terminal
|
19
|
+
overwrite = false
|
20
|
+
append = false
|
21
|
+
begin
|
22
|
+
puts "File" + " .gitignore ".colorize(:yellow) + "already exists!"
|
23
|
+
puts "Overwrite or append? [y => yes | a => append | n => no]?"
|
24
|
+
while (line = Readline.readline('> ', true).downcase)
|
25
|
+
if line == "y"
|
26
|
+
overwrite = true
|
27
|
+
break
|
28
|
+
elsif line == "n"
|
29
|
+
break
|
30
|
+
elsif line == "a"
|
31
|
+
append = true
|
32
|
+
break
|
33
|
+
elsif (line != "y") || (line != "n") || (line != "a")
|
34
|
+
puts "Please provide a correct format (y or n)".colorize(:red)
|
35
|
+
end
|
40
36
|
end
|
37
|
+
rescue Interrupt
|
38
|
+
system('stty', sttySave) # Restore
|
39
|
+
exit
|
41
40
|
end
|
42
|
-
rescue Interrupt => e
|
43
|
-
system('stty', sttySave) # Restore
|
44
|
-
exit
|
45
|
-
end
|
46
41
|
|
47
|
-
|
48
|
-
|
49
|
-
|
42
|
+
if overwrite
|
43
|
+
File.write($glob_settings[:output], contents)
|
44
|
+
puts ".gitignore has been created!".colorize(:green)
|
45
|
+
elsif append
|
46
|
+
gitignoreContents = File.read($glob_settings[:output])
|
47
|
+
puts "Adding .gitignore content from " + name.colorize(:green) + " to existing .gitignore File"
|
48
|
+
gitignoreContents += contents
|
49
|
+
File.write($glob_settings[:output], gitignoreContents)
|
50
|
+
else
|
51
|
+
puts ".gitignore has NOT been created! Terminating process!".colorize(:red)
|
52
|
+
end
|
50
53
|
else
|
51
|
-
|
54
|
+
File.write($glob_settings[:output], contents)
|
55
|
+
puts ".gitignore has been created!".colorize(:green)
|
52
56
|
end
|
53
|
-
|
54
57
|
else
|
55
|
-
File.write(
|
58
|
+
File.write($glob_settings[:output], contents)
|
56
59
|
puts ".gitignore has been created!".colorize(:green)
|
57
60
|
end
|
58
61
|
end
|
62
|
+
|
63
|
+
def create_own_ignore(name)
|
64
|
+
contents = ""
|
65
|
+
if $glob_settings["own_gitignore_path"] == "default"
|
66
|
+
Dir.chdir(Dir.home) do
|
67
|
+
contents = File.read(".ignore-it/gitignores/" + name)
|
68
|
+
end
|
69
|
+
else
|
70
|
+
Dir.chdir($glob_settings["own_gitignore_path"]) do
|
71
|
+
contents = File.read(name)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
create_file(contents, name)
|
75
|
+
end
|
76
|
+
|
77
|
+
def create_api_ignore(name)
|
78
|
+
template = @jsonResponse[name]
|
79
|
+
contents = template["contents"]
|
80
|
+
create_file(contents, name)
|
81
|
+
end
|
82
|
+
|
83
|
+
def check_output_path(name)
|
84
|
+
if Dir.exist?(name)
|
85
|
+
true
|
86
|
+
else
|
87
|
+
puts "The Output Path you provided does currently not exist, please create it manually before using --output".colorize(:red)
|
88
|
+
end
|
89
|
+
end
|
59
90
|
end
|
60
91
|
end
|
data/lib/ignore_it/list.rb
CHANGED
@@ -10,10 +10,44 @@ module IgnoreIt
|
|
10
10
|
@url = "https://www.toptal.com/developers/gitignore/api/list?format=json"
|
11
11
|
@response = Net::HTTP.get(URI(@url))
|
12
12
|
@jsonResponse = JSON.parse(@response)
|
13
|
+
load_own_files
|
13
14
|
end
|
14
15
|
|
15
|
-
attr_reader :jsonResponse
|
16
|
+
attr_reader :jsonResponse, :ownFiles
|
16
17
|
|
18
|
+
# Load own gitignore templates from the directory specified in the config file
|
19
|
+
def load_own_files
|
20
|
+
@ownFiles = if $glob_settings["own_gitignore_path"] == "default"
|
21
|
+
Dir.chdir(Dir.home) do
|
22
|
+
Dir.entries(".ignore-it/gitignores/").select do |files|
|
23
|
+
files unless files =~ /^..?$/ # some regex magic to remove "." and ".."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
else
|
27
|
+
Dir.chdir($glob_settings["own_gitignore_path"]) do
|
28
|
+
Dir.entries(".").select do |files|
|
29
|
+
files unless files =~ /^..?$/
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Check if the requested template exists
|
36
|
+
def check_own_files(file)
|
37
|
+
if @ownFiles.include?(file)
|
38
|
+
exists = true
|
39
|
+
end
|
40
|
+
exists
|
41
|
+
end
|
42
|
+
|
43
|
+
# Print all own gitignore templates
|
44
|
+
def show_own_files
|
45
|
+
@ownFiles.each do |file|
|
46
|
+
puts file
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Check the API List
|
17
51
|
def check_list(file)
|
18
52
|
exists = false
|
19
53
|
|
@@ -27,9 +61,9 @@ module IgnoreIt
|
|
27
61
|
exists
|
28
62
|
end
|
29
63
|
|
64
|
+
# Print all gitignore templates fetched by the API
|
30
65
|
def show_list
|
31
66
|
sortedArray = @jsonResponse.sort
|
32
|
-
|
33
67
|
sortedArray.each do |entry|
|
34
68
|
puts entry.first
|
35
69
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ignore-it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Macho
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-11-
|
12
|
+
date: 2020-11-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -17,28 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 11.
|
20
|
+
version: 11.2.2
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 11.
|
27
|
+
version: 11.2.2
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: minitest
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: colorize
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,15 +53,35 @@ dependencies:
|
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 0.8.1
|
56
|
-
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: thor
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.0.1
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.0.1
|
70
|
+
description: |2
|
71
|
+
Feel it's sometimes cumbersome to browse to a website, only to download a .gitignore?
|
72
|
+
We've got your back!
|
73
|
+
ignore-it is a small cli tool, which helps in fetching and creating .gitignore files from gitignore.io or local custom templates.
|
74
|
+
We try to keep runtime dependencies as small as possible and are using mostly standard ruby libraries.
|
57
75
|
email:
|
58
76
|
executables:
|
59
77
|
- ignore-it
|
60
78
|
extensions: []
|
61
79
|
extra_rdoc_files: []
|
62
80
|
files:
|
81
|
+
- "./default_config.yml"
|
63
82
|
- bin/ignore-it
|
64
83
|
- lib/ignore_it.rb
|
84
|
+
- lib/ignore_it/config.rb
|
65
85
|
- lib/ignore_it/creator.rb
|
66
86
|
- lib/ignore_it/list.rb
|
67
87
|
homepage:
|
@@ -87,5 +107,5 @@ requirements: []
|
|
87
107
|
rubygems_version: 3.0.3
|
88
108
|
signing_key:
|
89
109
|
specification_version: 4
|
90
|
-
summary: ignore-it your command line tool for
|
110
|
+
summary: ignore-it your command line tool for creating .gitignore files
|
91
111
|
test_files: []
|