falkorlib 0.8.10 → 0.9.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +60 -117
  3. data/README.md +46 -10
  4. data/binscripts/bootstrap.sh +8 -10
  5. data/completion/_falkor +16 -1
  6. data/falkorlib.gemspec +14 -14
  7. data/lib/falkorlib/bootstrap/base.rb +37 -32
  8. data/lib/falkorlib/bootstrap/git.rb +19 -4
  9. data/lib/falkorlib/bootstrap/latex.rb +7 -2
  10. data/lib/falkorlib/bootstrap/vagrant.rb +17 -10
  11. data/lib/falkorlib/cli.rb +16 -1
  12. data/lib/falkorlib/common.rb +3 -3
  13. data/lib/falkorlib/config.rb +3 -3
  14. data/lib/falkorlib/gem_tasks.rb +1 -1
  15. data/lib/falkorlib/git_tasks.rb +1 -1
  16. data/lib/falkorlib/puppet_tasks.rb +1 -1
  17. data/lib/falkorlib/version.rb +2 -1
  18. data/spec/falkorlib/bootstrap_latex_spec.rb +6 -5
  19. data/spec/falkorlib/bootstrap_spec.rb +45 -1
  20. data/spec/falkorlib/git_spec.rb +2 -2
  21. data/spec/falkorlib/gitflow_spec.rb +5 -4
  22. data/templates/gitignore/All.gitignore +2 -0
  23. data/templates/gitignore/Python.gitignore +162 -0
  24. data/templates/gitignore/TeX.gitignore +309 -0
  25. data/templates/latex/beamer/.Makefile.local +1 -0
  26. data/templates/latex/beamer/_content.md.erb +1 -1
  27. data/templates/latex/beamer/main.tex.erb +20 -8
  28. data/templates/latex/images/logo_ANSSI.png +0 -0
  29. data/templates/latex/images/logo_RF.png +0 -0
  30. data/templates/motd/motd.erb +2 -2
  31. data/templates/vagrant/.gitignore +14 -0
  32. data/templates/vagrant/Vagrantfile.erb +53 -15
  33. data/templates/vagrant/vagrant/config.yaml.sample +9 -6
  34. data/templates/vagrant/vagrant/scripts/bootstrap.sh +32 -14
  35. metadata +86 -79
  36. data/templates/latex/images/logo_UL.pdf +0 -0
  37. data/templates/latex/images/logo_ULHPC.pdf +0 -0
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Mon 2020-04-20 16:13 svarrette>
3
+ # Time-stamp: <Sat 2024-08-31 16:34 svarrette>
4
4
  ################################################################################
5
5
  # Interface for the main Bootstrapping operations
6
6
  #
@@ -215,11 +215,26 @@ module FalkorLib
215
215
  run %( git crypt add-gpg-user #{k} )
216
216
  end
217
217
  end
218
+ end # gitcrypt
218
219
 
220
+ ###### gitignore ######
221
+ # Initialize .gitignore in the [current] directory
222
+ def gitignore(dir = Dir.pwd, options = {})
223
+ path = normalized_path(dir)
224
+ unless File.directory?(path)
225
+ warning "The directory '#{path}' does not exist yet."
226
+ warning 'Do you want to create (and git init) this directory?'
227
+ really_continue?
228
+ run %(mkdir -p #{path})
229
+ end
230
+ templatedir = File.join( FalkorLib.templates, 'gitignore')
231
+ src_gitignore = 'All.gitignore' # Default without any option
232
+ src_gitignore = 'TeX.gitignore' if options[:latex]
233
+ src_gitignore = 'Python.gitignore' if options[:python]
234
+ src_gitignore = 'All.gitignore' if options[:all]
235
+ run %(cp #{templatedir}/#{src_gitignore} #{path}/.gitignore)
236
+ end # gitignore
219
237
 
220
238
 
221
-
222
- end # gitcrypt
223
-
224
239
  end # module Bootstrap
225
240
  end # module FalkorLib
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Mon 2017-01-16 23:15 svarrette>
3
+ # Time-stamp: <Thu 2023-11-23 18:13 svarrette>
4
4
  ################################################################################
5
5
  # Interface for the main Bootstrapping operations
6
6
  #
@@ -100,12 +100,17 @@ module FalkorLib
100
100
  info "populating '#{src_project_dir}'"
101
101
  #FalkorLib::Bootstrap::Link.root(srcdir, { :verbose => true} )
102
102
  FalkorLib::Bootstrap::Link.makefile(srcdir, :no_interaction => true)
103
- [ '_style.sty', '.gitignore' ].each do |f|
103
+ [ '_style.sty' ].each do |f|
104
104
  Dir.chdir( srcdir ) do
105
105
  dst = ".makefile.d/latex/#{f}"
106
106
  run %( ln -s #{dst} #{f} ) unless File.exist?( File.join(srcdir, f) )
107
107
  end
108
108
  end
109
+ [ '.gitignore' ].each do |f| # .gitignore no longer accepted as symlink
110
+ Dir.chdir( srcdir ) do
111
+ run %( cp .makefile.d/latex/#{f} #{f} ) unless File.exist?( File.join(srcdir, f) )
112
+ end
113
+ end
109
114
  if type == :beamer
110
115
  f = 'beamerthemeFalkor.sty'
111
116
  dst = "#{FalkorLib.config[:git][:submodulesdir]}/beamerthemeFalkor/#{f}"
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Mon 2020-04-20 10:23 svarrette>
3
+ # Time-stamp: <Mon 2023-12-04 16:37 svarrette>
4
4
  ################################################################################
5
5
  # Interface for Bootstrapping MkDocs
6
6
  #
@@ -39,9 +39,23 @@ module FalkorLib
39
39
  "Select OS to configure within your vagrant boxes by default",
40
40
  (config[:boxes].keys.find_index(config[:os]) + 1))
41
41
  end
42
+ # Eventually adapt default provider and IP range
43
+ providers = ['virtualbox', 'libvirt']
44
+ default_provider = (config[:os] =~ /_uefi$/) ? 'libvirt': 'virtualbox'
45
+ info "OS selected: #{config[:os]} (thus with default provider: #{default_provider})"
46
+ config[:provider] = select_from(providers,
47
+ "Confirm vagrant hypervisor provider:",
48
+ providers.find_index(default_provider)+1)
49
+ config[:range] = case config[:provider]
50
+ when 'libvirt'
51
+ '192.168.122.1/24'
52
+ else
53
+ '192.168.56.0/21'
54
+ end
42
55
  [ :ram, :vcpus, :domain, :range ].each do |k|
43
56
  config[k.to_sym] = ask("\tDefault #{k.capitalize}:", config[k.to_sym])
44
57
  end
58
+
45
59
  puts config.to_yaml
46
60
  FalkorLib::GitFlow.start('feature', 'vagrant', rootdir) if (use_git && FalkorLib::GitFlow.init?(rootdir))
47
61
  init_from_template(templatedir, rootdir, config,
@@ -55,15 +69,8 @@ module FalkorLib
55
69
  [ 'bootstrap.sh'].each do |f|
56
70
  FalkorLib::Git.add(File.join(scriptsdir, "#{f}")) if use_git
57
71
  end
58
- #puppetdir = File.join(confdir, 'puppet')
59
- Dir.chdir( rootdir ) do
60
- run %(git ignore '.vagrant/' ) if command?('git-ignore')
61
- # run %(ln -s README.md index.md )
62
- # run %(ln -s README.md contributing/index.md )
63
- # run %(ln -s README.md setup/index.md )
64
- end
65
- if File.exist?(File.join(rootdir, '.gitignore'))
66
- FalkorLib::Git.add(File.join(rootdir, '.gitignore')) if use_git
72
+ [ '.gitignore', '.ruby-version' ].each do |f|
73
+ FalkorLib::Git.add(File.join(rootdir, "#{f}")) if (use_git && File.exist?(File.join(rootdir, "#{f}")))
67
74
  end
68
75
  return 0
69
76
  #exit_status.to_i
data/lib/falkorlib/cli.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Mon 2020-04-20 17:04 svarrette>
3
+ # Time-stamp: <Sat 2024-08-31 16:30 svarrette>
4
4
  ################################################################################
5
5
  # Interface for the CLI
6
6
  #
@@ -93,6 +93,21 @@ CONFIG_LONG_DESC
93
93
  FalkorLib::Bootstrap.gitcrypt(path, options)
94
94
  end # gitcrypt
95
95
 
96
+ ###### gitignore ######
97
+ method_option :all, :aliases => ['--all', '-a' ], :type => :boolean, :default => true,
98
+ :desc => "Ignore all files (except .gitignore)"
99
+ method_option :latex, :aliases => ['--latex', '--tex', '-l' ], :type => :boolean, :default => false,
100
+ :desc => "Setup .gitignore for LaTeX sources"
101
+ method_option :python, :aliases => '-p', :type => :boolean, :default => false,
102
+ :desc => "Setup .gitignore for Python project"
103
+ #......................................
104
+ desc "gitignore <PATH> [options]", "Initialize .gitignore for the [current] directory (by default, ignore all files but .gitignore"
105
+ def gitignore(path = '.')
106
+ FalkorLib::Bootstrap.gitignore(path, options)
107
+ end # gitignore
108
+
109
+
110
+
96
111
  ###### init ######
97
112
  desc "init <PATH> [options]", "Bootstrap a Git Repository"
98
113
  long_desc <<-INIT_LONG_DESC
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Sun 2020-04-12 14:38 svarrette>
3
+ # Time-stamp: <Thu 2023-11-23 23:06 svarrette>
4
4
  ################################################################################
5
5
 
6
6
  require "falkorlib"
@@ -66,7 +66,7 @@ module FalkorLib #:nodoc:
66
66
  def warning(str)
67
67
  puts cyan("/!\\ WARNING: " + str)
68
68
  end
69
- alias_method :warn, :warning
69
+ # alias_method :warn, :warning # FIXME erb invokes also its own warn method
70
70
 
71
71
  ## Print an error message and abort
72
72
  def error(str)
@@ -375,7 +375,7 @@ module FalkorLib #:nodoc:
375
375
  next
376
376
  end
377
377
  #puts config.to_yaml
378
- content += ERB.new(File.read(erb.to_s), nil, '<>').result(binding)
378
+ content += ERB.new(File.read(erb.to_s), trim_mode: '<>').result(binding)
379
379
  end
380
380
  # error "Unable to find the template file #{erbfile}" unless File.exists? (erbfile )
381
381
  # template = File.read("#{erbfile}")
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  ################################################################################
3
- # Time-stamp: <Thu 2022-06-02 19:14 svarrette>
3
+ # Time-stamp: <Tue 2023-11-21 17:21 svarrette>
4
4
  ################################################################################
5
5
  # FalkorLib Configuration
6
6
  #
@@ -56,8 +56,8 @@ module FalkorLib #:nodoc:
56
56
  #:custom_cfg => '.falkorlib.yaml',
57
57
  :rvm => {
58
58
  # See https://www.ruby-lang.org/en/downloads/branches/ for stable branches
59
- :rubies => [ '3.1.2', '3.0.4', '2.7.6'],
60
- :version => '3.1.2',
59
+ :rubies => [ '3.2.2', '3.1.4', '3.0.6', '2.7.8'],
60
+ :version => '3.1.4',
61
61
  :versionfile => '.ruby-version',
62
62
  :gemsetfile => '.ruby-gemset'
63
63
  },
@@ -1 +1 @@
1
- lib/falkorlib/tasks/gem.rb
1
+ tasks/gem.rb
@@ -1 +1 @@
1
- lib/falkorlib/tasks/git.rb
1
+ tasks/git.rb
@@ -1 +1 @@
1
- lib/falkorlib/tasks/puppet.rb
1
+ tasks/puppet.rb
@@ -19,7 +19,7 @@ module FalkorLib #:nodoc:
19
19
  # MAJOR: Defines the major version
20
20
  # MINOR: Defines the minor version
21
21
  # PATCH: Defines the patch version
22
- MAJOR, MINOR, PATCH = 0, 8, 10
22
+ MAJOR, MINOR, PATCH = 0, 9, 1
23
23
 
24
24
  module_function
25
25
 
@@ -75,3 +75,4 @@ module FalkorLib #:nodoc:
75
75
  end
76
76
 
77
77
 
78
+
@@ -3,7 +3,7 @@
3
3
  #########################################
4
4
  # bootstrap_latex_spec.rb
5
5
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
6
- # Time-stamp: <Thu 2017-08-17 22:28 svarrette>
6
+ # Time-stamp: <Thu 2023-11-23 18:18 svarrette>
7
7
  #
8
8
  # @description Check the Bootstrapping operations for LaTeX-based projects
9
9
  #
@@ -92,17 +92,18 @@ describe FalkorLib::Bootstrap do
92
92
 
93
93
  # check src directory
94
94
  expect(Dir.exist?(srcdir)).to be true
95
- src_latex_symlinks = [ 'Makefile', '_style.sty', '.gitignore' ]
95
+ src_latex_symlinks = [ 'Makefile', '_style.sty' ]
96
96
  src_latex_symlinks.each do |f|
97
97
  file = File.join(srcdir, f)
98
98
  expect(File.exist?(file)).to be true
99
99
  expect(File.readlink(file)).to include '.makefile.d/latex'
100
100
  end
101
101
 
102
- src_latex_files = [ "#{name}.tex" ]
103
- src_latex_files << '_content.md' if type == :beamer
104
- src_latex_files = [ '_abstract.tex', '_conclusion.tex', '_experiments.tex', '_introduction.tex', 'biblio.bib', '_related_works.tex' ] if type == :article
102
+ src_latex_files = [ "#{name}.tex", '.gitignore' ]
103
+ src_latex_files += [ '_content.md', '.Makefile.local' ] if type == :beamer
104
+ src_latex_files += [ '_abstract.tex', '_conclusion.tex', '_experiments.tex', '_introduction.tex', 'biblio.bib', '_related_works.tex' ] if type == :article
105
105
  src_latex_files.each do |f|
106
+ # $stderr.puts "=> checking file: #{f}"
106
107
  file = File.join(srcdir, f)
107
108
  expect(File.exist?(file)).to be true
108
109
  end
@@ -2,7 +2,7 @@
2
2
  #########################################
3
3
  # bootstrap_spec.rb
4
4
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
5
- # Time-stamp: <Mon 2020-04-20 09:58 svarrette>
5
+ # Time-stamp: <Sat 2024-08-31 16:18 svarrette>
6
6
  #
7
7
  # @description Check the basic Bootstrapping operations
8
8
  #
@@ -186,6 +186,50 @@ describe FalkorLib::Bootstrap do
186
186
  expect(File).to exist( File.join(dir, f))
187
187
  end
188
188
  end
189
+
190
+ it "#gitignore -- git ignore population from default templates (ignore all)" do
191
+ c = FalkorLib::Bootstrap.gitignore(dir, { :no_interaction => true })
192
+ gitignore = File.join(dir, '.gitignore')
193
+ expect(File).to exist( gitignore )
194
+ # Default .gitignore should ignore itself
195
+ File.read(File.realpath( gitignore )) do |f|
196
+ f.should include "!.gitignore"
197
+ end
198
+ end
199
+
200
+ it "#gitignore -- git ignore population from LaTeX templates" do
201
+ c = FalkorLib::Bootstrap.gitignore(dir, { :latex => true, :no_interaction => true })
202
+ gitignore = File.join(dir, '.gitignore')
203
+ expect(File).to exist( gitignore )
204
+ # Default .gitignore should ignore itself
205
+ File.read(File.realpath( gitignore )) do |f|
206
+ [
207
+ "*.aux",
208
+ "*.synctex",
209
+ "/*.pdf", # ignore local PDF
210
+ ].each do |pattern|
211
+ f.should include "#{pattern}"
212
+ end
213
+ end
214
+ end
215
+
216
+ it "#gitignore -- git ignore population from Python templates" do
217
+ c = FalkorLib::Bootstrap.gitignore(dir, { :python => true, :no_interaction => true })
218
+ gitignore = File.join(dir, '.gitignore')
219
+ expect(File).to exist( gitignore )
220
+ # Default .gitignore should ignore itself
221
+ File.read(File.realpath( gitignore )) do |f|
222
+ [
223
+ "__pycache__/",
224
+ "*.egg-info",
225
+ "*.nox",
226
+ ].each do |pattern|
227
+ f.should include "#{pattern}"
228
+ end
229
+ end
230
+ end
231
+
232
+
189
233
  end
190
234
 
191
235
  if (ctx == :with_git and !ENV['TRAVIS_CI_RUN'])
@@ -2,7 +2,7 @@
2
2
  #########################################
3
3
  # git_spec.rb
4
4
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
5
- # Time-stamp: <Sun 2022-06-05 17:15 svarrette>
5
+ # Time-stamp: <Wed 2023-11-22 17:21 svarrette>
6
6
  #
7
7
  # @description Check the Git operations
8
8
  #
@@ -316,7 +316,7 @@ describe FalkorLib::Git do
316
316
 
317
317
  [ :subtrees, :submodules ].each do |type|
318
318
  it "#config_warn(#{type})" do
319
- t = capture(:stdout) { FalkorLib::Git.config_warn(type) }
319
+ t = capture(:stderr) { FalkorLib::Git.config_warn(type) }
320
320
  expect(t).to include "FalkorLib.config.git"
321
321
  expect(t).to include "FalkorLib.config.git.submodulesdir" if type == :submodules
322
322
  end
@@ -2,7 +2,7 @@
2
2
  #########################################
3
3
  # gitflow_spec.rb
4
4
  # @author Sebastien Varrette <Sebastien.Varrette@uni.lu>
5
- # Time-stamp: <Sun 2020-04-12 15:15 svarrette>
5
+ # Time-stamp: <Wed 2023-11-22 09:52 svarrette>
6
6
  #
7
7
  # @description Check the Git Flow operations -- see https://github.com/nvie/gitflow
8
8
  #
@@ -50,7 +50,7 @@ describe FalkorLib::GitFlow do
50
50
  it "#branch" do
51
51
  expected = {
52
52
  :master => 'production',
53
- :develop => 'devel'
53
+ :develop => 'master'
54
54
  }
55
55
  expected.each do |type,v|
56
56
  b = FalkorLib::GitFlow.branches(type.to_sym, dir)
@@ -82,9 +82,10 @@ describe FalkorLib::GitFlow do
82
82
  c = FalkorLib::GitFlow.guess_gitflow_config(dir)
83
83
  {
84
84
  :master => 'production',
85
- :develop => 'devel'
85
+ :develop => 'master'
86
86
  }.each do |type,v|
87
- expect(c[:branches][type.to_sym]).to eq(v)
87
+ expect(c[:branches][type.to_sym]).to eq(v) if v.is_a? String
88
+ expect(v).to include(c[:branches][type.to_sym]) if v.is_a? Array
88
89
  end
89
90
  {
90
91
  :feature => 'feature/',
@@ -0,0 +1,2 @@
1
+ *
2
+ !.gitignore
@@ -0,0 +1,162 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # poetry
98
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102
+ #poetry.lock
103
+
104
+ # pdm
105
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106
+ #pdm.lock
107
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108
+ # in version control.
109
+ # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
110
+ .pdm.toml
111
+ .pdm-python
112
+ .pdm-build/
113
+
114
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
115
+ __pypackages__/
116
+
117
+ # Celery stuff
118
+ celerybeat-schedule
119
+ celerybeat.pid
120
+
121
+ # SageMath parsed files
122
+ *.sage.py
123
+
124
+ # Environments
125
+ .env
126
+ .venv
127
+ env/
128
+ venv/
129
+ ENV/
130
+ env.bak/
131
+ venv.bak/
132
+
133
+ # Spyder project settings
134
+ .spyderproject
135
+ .spyproject
136
+
137
+ # Rope project settings
138
+ .ropeproject
139
+
140
+ # mkdocs documentation
141
+ /site
142
+
143
+ # mypy
144
+ .mypy_cache/
145
+ .dmypy.json
146
+ dmypy.json
147
+
148
+ # Pyre type checker
149
+ .pyre/
150
+
151
+ # pytype static type analyzer
152
+ .pytype/
153
+
154
+ # Cython debug symbols
155
+ cython_debug/
156
+
157
+ # PyCharm
158
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
159
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
160
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
161
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
162
+ #.idea/