warp-dir 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ce99a9d0405623c7ea50b88e363f95309c9b1773
4
- data.tar.gz: 149746d9e2645ffaff1cb7abc422a7e3b508aafc
3
+ metadata.gz: 61b42bdc5b12481249402bc4d6dacdf721c9fc5e
4
+ data.tar.gz: 83d013305b5d9ce4aded23b90484ea09f90c15d3
5
5
  SHA512:
6
- metadata.gz: 47407f8fe071a1d127137f358aadb7a19c626522cf3bc21bf96592fe2bb378023de3a224080f5165a28f59c209d49f0fdde3575604fe12adcd0738f9eafee2f1
7
- data.tar.gz: a67e48b9e831686f47853d14ce8b4bacf158fa8091cfafb9c7ebd574772054ef4c42c494ad4da7ae5c0b2e019b6ed69f89b074d72edf932a4d5a9e07e6f4e75c
6
+ metadata.gz: 101ddf5bada2103da584e85553ed6c60971a1771a322f722f22c8db71a8f38ac1264a6c0ef5380e064144a713d9335304b49b3283011850fc776d8e3d278d100
7
+ data.tar.gz: cd1d0d4d60306349b06e16407b30a5477dbaa45a2e66ddcfdc6685d30d49ee10394f860a6c1625a7808e5373392eba1981c3419c99a97ebd34f106785ded7100
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .idea/
1
2
  *.gem
2
3
  *.rbc
3
4
  .bundle
@@ -17,25 +18,3 @@ test/version_tmp
17
18
  tmp
18
19
  vendor/
19
20
  **/.DS_Store
20
-
21
- .idea/.rakeTasks
22
- .idea/*.iml
23
- # User-specific stuff:
24
- .idea/workspace.xml
25
- .idea/tasks.xml
26
- .idea/dictionaries
27
-
28
- # Sensitive or high-churn files:
29
- .idea/dataSources.ids
30
- .idea/dataSources.xml
31
- .idea/sqlDataSources.xml
32
- .idea/dynamic.xml
33
- .idea/uiDesigner.xml
34
-
35
- # Gradle:
36
- .idea/gradle.xml
37
- .idea/libraries
38
-
39
- # Mongo Explorer plugin:
40
- .idea/mongoSettings.xml
41
-
data/.rspec CHANGED
@@ -1,4 +1,2 @@
1
1
  --color
2
2
  --format progress
3
- --backtrace
4
- -p 1
@@ -3,11 +3,11 @@ env:
3
3
  - CODECLIMATE_REPO_TOKEN=5306e7c3069bd3fef06f717d679f41e969e13bb05efef5bbe1fd781043b0c117
4
4
  rvm:
5
5
  - 2.2.3
6
- - 2.3.0
6
+ - 2.3.1
7
7
  script: "gem install bundler rake --no-ri --no-rdoc; rake"
8
8
  notifications:
9
9
  email:
10
10
  recipients:
11
11
  - kigster@gmail.com
12
- on_success: never
12
+ on_success: change
13
13
  on_failure: always
data/README.md CHANGED
@@ -10,81 +10,102 @@
10
10
  [![Gitter](https://img.shields.io/gitter/room/gitterHQ/gitter.svg)](https://gitter.im/kigster/warp-dir)
11
11
  <hr/>
12
12
 
13
- This is a ruby implementation of the tool 'wd' (warp directory),
14
- [originally written as a zsh module](https://github.com/mfaerevaag/wd)
13
+ This is a ruby implementation of the tool `wd` (warp directory),
14
+ [originally written as a `ZSH` module](https://github.com/mfaerevaag/wd)
15
15
  by [Markus Færevaag](https://github.com/mfaerevaag).
16
16
 
17
- After finding it very useful, but having to switch to `bash` on occasion, I wanted to have a completely
18
- compatible tool that is well tested, and can be extended to do some more interesting things.
17
+ I personaly went back to `bash` after trying out `ZSH`, but it was the `wd` plugin that I really missed.
19
18
 
20
- Markus kindly offered a ruby version in a [separate branch of this module](https://github.com/mfaerevaag/wd/tree/ruby),
21
- which served as an inspiration for this gem.
19
+ While Markus kindly offered a ruby version in a [separate branch of this module](https://github.com/mfaerevaag/wd/tree/ruby),
20
+ it wasn't quite as extensible as I wanted to (or well tested), so it ended up being an inspiration for this gem.
22
21
 
23
- The overall concept comes from the realization that when we work on the command line, we
22
+ ## Warp This
24
23
 
25
- * often have to deal with a limited number of folders at any given time
26
- * it would be nice to quickly switch between these folders (which we call __warp points__).
27
- * it should be easy to add, remove, list, and validate warp points
28
- * everything should require as few characters as possible :)
24
+ WarpDir is a UNIX command line tool that works somewhat similar to the standard built-in command `cd` — "change directory".
29
25
 
30
- Some future extensions could be based on some additional realizations:
26
+ The main difference is that `wd` is able to add/remove/list folder "shortcuts", and allows you to jump to these shortcuts from anywhere on the filesystem.
31
27
 
32
- * each folder often represents a project, some of which are managed by `git`
33
- * eventually we might want to do things across all projects, such as perform group `git pull`,
34
- or even `git push` etc.
28
+ This of this as a folder-navigation super-charge tool that you'd use on a most frequently-used set of folders. This becomes __really useful__ if you are often finding youself going into a small number of deeply nested folders with a long path prefix.
35
29
 
36
- ## Installation
30
+ ## Usage
31
+
32
+ __NOTE:__ in the below examples, the characters `~ ❯ ` denote the current shell prompt, showing the current folder you are in. The command to type is on the right hand side of the "❯".
33
+
34
+ Let's first bookmark a long directory:
37
35
 
38
- Add this line to your application's Gemfile:
36
+ ```bash
37
+ ~ ❯ cd ~/workspace/arduino/robots/command-bridge/src
38
+ ~/workspace/arduino/robots/command-bridge/src ❯ wd add cbsrc
39
+ Warp point saved!
40
+
41
+ ~/workspace/arduino/robots/command-bridge/src ❯ cd ~/workspace/c++/foo/src
42
+ ~/workspace/c++/foo/src ❯ wd add foosrc
43
+ Warp point saved!
39
44
 
40
- ```ruby
41
- gem 'warp-dir'
45
+ ~/workspace/c++/foo/src ❯ cd /usr/local/Cellar
46
+ /usr/local/Cellar ❯ wd add brew
47
+ Warp point saved!
42
48
  ```
43
- And then execute:
44
49
 
45
- $ bundle
50
+ Now we can list/inspect current set of warp points:
51
+
52
+ ```bash
53
+ /usr/local/Cellar ❯ wd l
54
+ cbsrc -> ~/workspace/arduino/robots/command-bridge/src
55
+ foosrc -> ~/workspace/c++/foo/src
56
+ brew -> /usr/local/Cellar
57
+ ```
46
58
 
47
- Or install it yourself as:
59
+ Now we can jump around these warp points, as well as run 'ls' inside (even passing arbitrary arguments to the `ls` itself):
48
60
 
49
- $ gem install warp-dir --no-ri --no-rdoc
61
+ ```bash
62
+ /usr/local/Cellar ❯ wd cbsrc
63
+ ~/workspace/arduino/robots/command-bridge/src ❯ wd foosrc
64
+ ~/workspace/c++/foo/src ❯ 1 wd ls brew -- -alF | head -4 # run ls -alF inside /usr/local/Cellar
65
+ total 0
66
+ drwxrwx--- 73 kig staff 2482 May 7 15:29 ./
67
+ drwxrwx--- 21 kig staff 714 Apr 28 11:40 ../
68
+ drwxrwx--- 3 kig staff 102 Dec 24 03:14 ack/
69
+ ```
50
70
 
51
- The last step is to install the `wd` bash function, which enables the `cd`-like behavior.
52
- Choose
53
- $ warp-dir install [ --dotfile <file> ]
71
+ ### Command Completion
54
72
 
55
- And after that you need to restart your shell, and then you should get the command's
56
- "help" message by typing:
73
+ If you installed `wd` properly, it should register it's own command completion for BASH and be ready for your tabs :)
57
74
 
58
- $ wd help
75
+ Note that you can use `wd` to change directory by giving an absolute or relative directory name, just like `cd` (so not just using warp-points), so when you type `wd [TAB]` you will see all saved warp points as well as the local directories you can `cd` into.
59
76
 
60
- If the above command returns a properly formatted help like the image below, your setup
61
- is now complete!
77
+ That's basically it!
62
78
 
63
- ## Usage
79
+ ### Config File (aka. Warp Points Database)
64
80
 
65
- The usage of the tool is derived from `ZSH`-based inspiration. If it ain't broke, don't fix it!
66
- I like how `wd` can be used with very short warp points, so it's so much less typing. I often name
67
- my points `pu` so that I can jump there with `wd pu`.
81
+ All of the mappings are stored in the `~/.warprc` file, where the warp point name is followed by a colon, and the path it maps to. So it's trivial to do a global search/replace on that file in your favorite editor, if, for example, a commond top level folder had changed.
68
82
 
69
- Unlike ZSH counterpart, this tool includes full command line parsing, so
70
- you can (if you want to) use flags to achieve the same effect with more
71
- characters to type, for example all below commands do the same thing.
83
+ The format of the file was left identical to that of the `ZSH` version of `wd` so that one could switch back and force between the two versions of `wd` and still be able to use their collection of warp points.
72
84
 
73
- ```bash
74
- wd pu
75
- wd --warp --point pu
76
- wd -m warp -p pu
77
- ```
85
+ See? I think we thought of everything :)
78
86
 
79
- You can run a comman in the target directory without leaving the current via
80
- `wd ls pu`, but in this implementation you can also pass arguments to `ls` after
81
- the `--` in argument list, for example, to run `ls -1` I would do `wd ls pu -- -1`.
87
+ Happy warping!
82
88
 
83
- Here is a full command / help summary.
89
+ ### Detailed Usage
84
90
 
85
91
  ![Image](doc/wd-help.png)
86
92
 
87
- #### Notable Differences
93
+ ## `wd` Concept
94
+
95
+ The overall concept comes from the realization that when we work on the command line, we often do things that `wd` tool provides straight out of the box, such as:
96
+
97
+ * we often have to deal with a limited number of folders at any given time
98
+ * on occastion have to jump between these folders (which we call __warp points__), which may require mult-level `cd` command, for example: `cd ~/workspace/foo/src/include/; ....; cd ~/Documents/Microsoft\ Word/; ...`
99
+ * seems like it should be easy to add, remove and list warp points
100
+ * everything should require typing few characters as possible :)
101
+ * it would be great to have full BASH completion support
102
+
103
+ Some future extensions could be based on some additional realizations:
104
+
105
+ * perhaps you might want to inspect a bookmarked folder without leaving your current place.
106
+ * maybe by inspecting we mean — running a `find`, or `ls` or any other command for that matter
107
+
108
+ ### Notable Differences with original `wd`
88
109
 
89
110
  * instead of `wd add!` use `wd add -f <point>` (or --force)
90
111
 
@@ -94,6 +115,31 @@ These features will be added shortly:
94
115
  * for now history is not supported
95
116
  * for now '-' is not supported
96
117
 
118
+ ## Installation
119
+
120
+ Three steps:
121
+
122
+ 1. This `wd` requires version 2+ of ruby interpreter. Check your default ruby with `ruby --version`. You should see something like "ruby 2.3.0p0....". If you see version 1.9 or earlier, upgrade your ruby with `brew update; brew install ruby`.
123
+ 2. Install warp-dir gem:
124
+ ```bash
125
+ ~ ❯ gem install warp-dir --no-ri --no-rdoc
126
+ ```
127
+ 3. The last step is to install the `wd` BASH function and auto-completion:
128
+ ```bash
129
+ ~ ❯ warp-dir install --dotfile ~/.bash_profile
130
+ ```
131
+
132
+ This last step appends the required shell function to the shell initialization file specified with the `--dotfile` flag. If you are unsure what that means, please run the command above as is.
133
+
134
+ And step 3 you will need to restart your shell, so reopen your Terminal or [iTerm2](https://www.iterm2.com/) (please use iTerm over Terminal — it's soooo much better!), and then type:
135
+
136
+ ```bash
137
+ ~ ❯ wd help
138
+ ```
139
+
140
+ If the above command returns a properly formatted help like the image below, your setup
141
+ is now complete!
142
+
97
143
  ## Future Development
98
144
 
99
145
  I have so many cool ideas about where this can go, that I created a
data/Rakefile CHANGED
@@ -27,8 +27,8 @@ namespace :development do
27
27
  task :setup do
28
28
  sh %q{
29
29
  echo "source 'https://rubygems.org'; gemspec" > Gemfile
30
- [[ -n $(which bundle) ]] || gem install bundler --no-ri --no-rdoc
31
- bundle install
30
+ [[ -n $(which bundle) ]] || gem install bundler --no-ri --no-rdoc --quiet
31
+ bundle install --quiet
32
32
  }.gsub(%r{^\s+}m, '')
33
33
  end
34
34
 
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env bash
2
-
3
- # warp-dir shell wrapper
2
+ #
3
+ # %WARP-DIR% shell wrapper, installed by a gem 'warp-dir'
4
+ #
5
+ # © 2015-2016, Konstantin Gredeskoul
6
+ # https://github.com/kigster/warp-dir
7
+ #
8
+ #
4
9
  wd() {
5
10
  if [ -z "${warp_dir_exec_installed}" -o "${warp_dir_exec_installed}" == "1" ]; then
6
11
  $(which 'warp-dir') 2>&1 > /dev/null
@@ -1,13 +1,20 @@
1
+ require_relative 'dir/version'
1
2
  module Warp
2
3
  PROJECT_LIBS = File.dirname(File.absolute_path(__FILE__))
3
4
  PROJECT_HOME = PROJECT_LIBS + '/../..'
4
5
 
5
6
  module Dir
6
7
  # tried in order.
8
+ INSTALL_TIME = Time.now
7
9
  DOTFILES = %w(.bash_profile .bashrc .profile .bash_login).map{|f| "~/#{f}" }
8
- DOTFILE_CREATED='.bash_profile'
9
- SHELL_WRAPPER = "#{PROJECT_HOME}/bin/warp-dir.bash"
10
-
10
+ SHELL_WRAPPER_FILE = "#{PROJECT_HOME}/bin/warp-dir.bash"
11
+ SHELL_WRAPPER_DEST = ENV['HOME'] + '/.bash_wd'
12
+ SHELL_WRAPPER_REGX = %r[WarpDir \(v(\d+\.\d+\.\d+)]
13
+ SHELL_WRAPPER_SRCE = <<-eof
14
+ # WarpDir (v#{Warp::Dir::VERSION}, appended on #{INSTALL_TIME}) BEGIN
15
+ [[ -f ~/.bash_wd ]] && source ~/.bash_wd
16
+ # WarpDir (v#{Warp::Dir::VERSION}, appended on #{INSTALL_TIME}) END
17
+ eof
11
18
  class << self
12
19
  def require_all_from(folder)
13
20
  ::Dir.glob(Warp::PROJECT_LIBS + folder + '/*.rb') { |file| Kernel.require file }
@@ -1,11 +1,17 @@
1
- require 'warp/dir/command'
2
1
  require 'warp/dir'
2
+ require 'warp/dir/command'
3
+ require 'fileutils'
3
4
  class Warp::Dir::Command::Install < Warp::Dir::Command
4
5
  description %q(Installs warp-dir shell wrapper in your ~/.bashrc)
5
6
  needs_a_point? false
6
7
 
7
8
  attr_accessor :installed, :existing, :wrapper, :shell_init_files
8
9
 
10
+ # SHELL_WRAPPER_FILE
11
+ # SHELL_WRAPPER_DEST
12
+ # SHELL_WRAPPER_REGX
13
+ # SHELL_WRAPPER_SRCE
14
+
9
15
  class << self
10
16
  def wrapper_installed?
11
17
  ::Warp::Dir::DOTFILES.any?{ |file| already_installed?(file) }
@@ -15,7 +21,7 @@ class Warp::Dir::Command::Install < Warp::Dir::Command
15
21
  path = ::Warp::Dir.absolute(file_path)
16
22
  matches = if File.exists?(path)
17
23
  File.open path do |file|
18
- file.find { |line| line =~ /warp-dir/ }
24
+ file.find { |line| line =~ ::Warp::Dir::SHELL_WRAPPER_REGX }
19
25
  end
20
26
  end
21
27
  matches
@@ -25,7 +31,7 @@ class Warp::Dir::Command::Install < Warp::Dir::Command
25
31
  def initialize(*args)
26
32
  self.installed = []
27
33
  self.existing = []
28
- self.wrapper = File.read(::Warp::Dir::SHELL_WRAPPER)
34
+ self.wrapper = ::Warp::Dir::SHELL_WRAPPER_SRCE
29
35
  self.shell_init_files = ::Warp::Dir::DOTFILES
30
36
  super(*args)
31
37
  end
@@ -33,9 +39,14 @@ class Warp::Dir::Command::Install < Warp::Dir::Command
33
39
  def run(*args)
34
40
  self.shell_init_files = config[:dotfile].split(',') if config[:dotfile]
35
41
  self.shell_init_files.any? { |dotfile| append_wrapper_to(dotfile) }
42
+
43
+ # Overwrites if already there
44
+ install_bash_wd
45
+
36
46
  local_existing = self.existing
37
47
  local_installed = self.installed
38
48
  local_shell_files = self.shell_init_files
49
+
39
50
  if installed.empty?
40
51
  if existing.empty?
41
52
  on :error do
@@ -61,14 +72,25 @@ class Warp::Dir::Command::Install < Warp::Dir::Command
61
72
 
62
73
  private
63
74
 
75
+ def install_bash_wd
76
+ source = File.read(::Warp::Dir::SHELL_WRAPPER_FILE)
77
+ source.gsub!(/%WARP-DIR%/, "WarpDir (v#{::Warp::Dir::VERSION})")
78
+ File.open(::Warp::Dir::SHELL_WRAPPER_DEST, 'w') do |file|
79
+ file.puts source
80
+ end
81
+ end
82
+
64
83
  def append_wrapper_to(shell_init_file)
65
84
  file = ::Warp::Dir.absolute(shell_init_file)
66
85
  pre_installed = self.class.already_installed?(file)
67
86
  self.existing << file if pre_installed
68
87
  if File.exists?(file)
69
88
  if !pre_installed || config[:force]
70
- File.open(file, 'a') do |f|
71
- f.write(wrapper)
89
+ source = File.read(file)
90
+ source.gsub!(/# WarpDir.*BEGIN\n.*\n# WarpDir.*END/, '')
91
+ File.open(file, 'w') do |f|
92
+ f.write source
93
+ f.write wrapper
72
94
  end
73
95
  self.installed << shell_init_file
74
96
  end
@@ -2,7 +2,45 @@ require 'forwardable'
2
2
  require 'digest'
3
3
  module Warp
4
4
  module Dir
5
+ # This class encapsulates the tuple: name + path.
6
+ # It provides convenience accessors to retrieve absolute or
7
+ # realtive path of a point, optionally via a set of predefined
8
+ # filters.
9
+ #
10
+ # In addition, this class is responsible for serializing and
11
+ # deserializing itself properly.
5
12
  class Point
13
+
14
+ # This method creates/defines methods used to
15
+ # access the #full_path component of the Point instance, but
16
+ # enclosing it in a chain of provided filters.
17
+ def self.filtered_paths(path_hash)
18
+ path_hash.each_pair do |method, filters|
19
+ define_method method.to_sym do |*args|
20
+ filters.inject(self.full_path) do |memo, filter|
21
+ self.send(filter, memo)
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def self.deserialize(line)
28
+ name, path = line.split(/:/)
29
+ if name.nil? || path.nil?
30
+ raise Warp::Dir::Errors::StoreFormatError.new(
31
+ 'warprc file may be corrupt, offending line is: ' +
32
+ line, line)
33
+ end
34
+ self.new(name, path)
35
+ end
36
+
37
+ filtered_paths absolute_path: %i(quote_spaces),
38
+ path: %i(quote_spaces),
39
+ relative_path: %i(make_relative quote_spaces)
40
+
41
+ #
42
+ # Instance Methods
43
+ #
6
44
  attr_accessor :full_path, :name
7
45
 
8
46
  def initialize(name, full_path)
@@ -12,18 +50,6 @@ module Warp
12
50
  @name = name.to_sym
13
51
  end
14
52
 
15
- def absolute_path
16
- full_path
17
- end
18
-
19
- def relative_path
20
- Warp::Dir.relative full_path
21
- end
22
-
23
- def path
24
- absolute_path
25
- end
26
-
27
53
  def inspect
28
54
  sprintf("(#{object_id})[name: '%s', path: '%s']", name, relative_path)
29
55
  end
@@ -48,6 +74,20 @@ module Warp
48
74
  true
49
75
  end
50
76
 
77
+ def serialize
78
+ "#{name}:#{full_path}"
79
+ end
80
+
81
+ private
82
+
83
+ # Filters that receive a path, and return a possibly decorated path back
84
+ def make_relative(path)
85
+ Warp::Dir.relative(path)
86
+ end
87
+
88
+ def quote_spaces(path)
89
+ path =~ /\s+/ ? %Q("#{path}") : path
90
+ end
51
91
  end
52
92
  end
53
93
  end
@@ -4,6 +4,8 @@ require_relative 'base'
4
4
  module Warp
5
5
  module Dir
6
6
  module Serializer
7
+ # Serializer only assumes that Points can serialize themselves
8
+ # or deserialize themselves to/from a one-line text format.
7
9
  class Dotfile < Base
8
10
 
9
11
  def warprc_file_path
@@ -19,11 +21,8 @@ module Warp
19
21
  f.each_line do |line|
20
22
  line = line.chomp
21
23
  next if line.blank?
22
- name, path = line.split(/:/)
23
- if name.nil? || path.nil?
24
- raise Warp::Dir::Errors::StoreFormatError.new("File may be corrupt - #{config.warprc}:#{line}", line)
25
- end
26
- store.add point_name: name, point_path: path
24
+ line.gsub!(/["']/,'') # remove any quotes that may have been inserted
25
+ store.add(point: Warp::Dir::Point.deserialize(line))
27
26
  end
28
27
  end
29
28
  end
@@ -32,7 +31,7 @@ module Warp
32
31
  File.open(warprc_file_path, 'wt') do |file|
33
32
  buffer = ''
34
33
  store.points.each do |point|
35
- buffer << "#{point.name}:#{point.relative_path}\n"
34
+ buffer << "#{point.serialize}\n"
36
35
  end
37
36
  file.write(buffer)
38
37
  end
@@ -41,5 +40,3 @@ module Warp
41
40
  end
42
41
  end
43
42
  end
44
-
45
-
@@ -1,7 +1,7 @@
1
1
  require_relative '../../colored'
2
2
  module Warp
3
3
  module Dir
4
- VERSION = '1.2.0'
4
+ VERSION = '1.3.0'
5
5
 
6
6
  @install_notice = <<-EOF
7
7
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: warp-dir
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Gredeskoul
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-04 00:00:00.000000000 Z
11
+ date: 2016-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slop
@@ -94,7 +94,6 @@ files:
94
94
  - ".codeclimate.yml"
95
95
  - ".gitignore"
96
96
  - ".idea/encodings.xml"
97
- - ".idea/misc.xml"
98
97
  - ".idea/modules.xml"
99
98
  - ".idea/runConfigurations/All_Specs.xml"
100
99
  - ".idea/vcs.xml"
@@ -1,14 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
4
- <OptionsSetting value="true" id="Add" />
5
- <OptionsSetting value="true" id="Remove" />
6
- <OptionsSetting value="true" id="Checkout" />
7
- <OptionsSetting value="true" id="Update" />
8
- <OptionsSetting value="true" id="Status" />
9
- <OptionsSetting value="true" id="Edit" />
10
- <ConfirmationsSetting value="0" id="Add" />
11
- <ConfirmationsSetting value="0" id="Remove" />
12
- </component>
13
- <component name="ProjectRootManager" version="2" project-jdk-name="ruby-2.2.3-p173" project-jdk-type="RUBY_SDK" />
14
- </project>