sublime_text_kit 0.4.0 → 1.0.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: d173993643e980feb91e623938bfa50be976e514
4
- data.tar.gz: 8f065e8668bbe900fd3227cf3cbd163e5434bfb5
3
+ metadata.gz: daef9d1fb25afffabeafc440ba2263086f5a6f11
4
+ data.tar.gz: ca7141c16811f8d87e38879079126a21ec47c9e8
5
5
  SHA512:
6
- metadata.gz: 79199642c7b5deb93287f908db304dd8549b89079c407fc669841d0d8bb9e0c7b916a9b0a226f6695a74386dffbd9061d05bf858b273afa22523382aedaeb77e
7
- data.tar.gz: aaa6e737013786db418efa92c217d3d08456fa6774b2a81cb239f9d740bb8c26ad7445afca915c2f5fa3dc0c09faea35c0c44580fa5aee39638043288d30487d
6
+ metadata.gz: 7b0299ab99e1957eb5eb3c30947a7a83e1c23737d4c70da90e579e0cfa1735435fcd4a94292e8da8bf7d4a527d9d5d18708f244385a533d272bcc6c669a04891
7
+ data.tar.gz: f47dd9c9780516b952adb8851cf73aea9875c58214b414a7dcef0d43f68731ef9cbdecbca60ef2a601aad6fdf4fbb44cd2c2092291338c26b6c397728f1e5b82
checksums.yaml.gz.sig CHANGED
@@ -1 +1,2 @@
1
- � �5��r⠪�m�>$İ_��uX���ٮ3��%��;UHERF�L_}�q�F�4r!�ם��;�����O�5��Uꞣ�h ��V�8/Pk�|�� ���i�&:o �A0f�~�J�#J����^z��Ie`->�� h?�3�N{еc�CjlLP��U��M!� e6���&ME!ȣ�C�������wϘ�n�����͉�V��Œ�'�y��Ȑ�e���ı�����ln��܁�N��
1
+ GɃ�uq��s���GFtz}/2W��-X��I���^t6�����qẒ?�kKZ>�ma��ߢ��fH�KTܣ��[ ĝů��Qk�V�n&�/��7���(H7�@���FW?躠/��±���c�Tq}"L5�^k/"������
2
+ �Z���Q;�+���S�F��V��xF�S[��4��c"6�� � D Eέ��v�(]\@dtC�@+u��a+�8𬝾�,$�3p�5�� ����%�;�+^dn!�
data/README.md CHANGED
@@ -7,21 +7,23 @@
7
7
  [![Travis CI Status](https://secure.travis-ci.org/bkuhlmann/sublime_text_kit.png)](http://travis-ci.org/bkuhlmann/sublime_text_kit)
8
8
  [![Gittip](http://img.shields.io/gittip/bkuhlmann.svg)](https://www.gittip.com/bkuhlmann)
9
9
 
10
- Provides a collection of utilities that aid in Sublime Text managment. These utilities are fairly sparse at the
11
- moment but will grow over time as new needs arise.
10
+ Provides a collection of utilities that aid in Sublime Text management.
12
11
 
13
12
  # Features
14
13
 
15
- * Rebuilds recent workspace history (via Project -> Recent Projects) from existing project files (assumes
16
- workspaces are in a single directory) so one can easily toggle between up-to-date project information via
17
- the COMMAND+CONTROL+P shortcut.
14
+ - Creates project metadata (i.e. *.sublime-project files) for easy project switching via the `COMMAND+CONTROL+P`
15
+ shortcut.
16
+ - Destroys project metadata (i.e. *.sublime-project and *.sublime-workspace files).
17
+ - Rebuilds recent workspace history (via Project -> Recent Projects) from existing project files (assumes workspaces are
18
+ in a single directory) so one can easily toggle between up-to-date project information via the `COMMAND+CONTROL+P`
19
+ shortcut.
18
20
 
19
21
  # Requirements
20
22
 
21
23
  0. Any of the following Ruby VMs:
22
- * [MRI 2.x.x](http://www.ruby-lang.org)
23
- * [JRuby 1.x.x](http://jruby.org)
24
- * [Rubinius 2.x.x](http://rubini.us)
24
+ - [MRI 2.x.x](http://www.ruby-lang.org)
25
+ - [JRuby 1.x.x](http://jruby.org)
26
+ - [Rubinius 2.x.x](http://rubini.us)
25
27
  0. [Sublime Text 2](http://www.sublimetext.com).
26
28
 
27
29
  # Setup
@@ -45,7 +47,24 @@ You can define settings by creating the following file:
45
47
  Example:
46
48
 
47
49
  ---
48
- :workspaces_path: ~/Dropbox/Cache/Sublime
50
+ :project_roots:
51
+ - "~/Dropbox/Development/Misc"
52
+ - "~/Dropbox/Development/OSS"
53
+ - "~/Dropbox/Development/Work"
54
+ :workspace_dir: "~/Dropbox/Cache/Sublime"
55
+
56
+ The project roots are the root level directories to where project folders are located. When project metadata (i.e.
57
+ *.sublime-project) is generated, the name of the metadata file will be the same name as that of the project folder. All
58
+ project metadata, regardless of root location, is written to the same workspace directory. If using the example settings
59
+ shown above and assuming the following directory structure exists...
60
+
61
+ ~/Dropbox/Development/Misc/example
62
+ ~/Dropbox/Development/OSS/sublime_text_kit
63
+
64
+ ...the project metadata will be created in the workspace directory as follows:
65
+
66
+ ~/Dropbox/Cache/Sublime/example.sublime-project
67
+ ~/Dropbox/Cache/Sublime/sublime_text_kit.sublime-project
49
68
 
50
69
  # Usage
51
70
 
@@ -53,18 +72,18 @@ From the command line, type: stk
53
72
 
54
73
  stk -e, [--edit] # Edit settings in default editor (assumes $EDITOR environment variable).
55
74
  stk -h, [--help=HELP] # Show this message or get help for a command.
75
+ stk -p, [--project] # Manage project metadata.
56
76
  stk -s, [--session] # Manage session data.
57
77
  stk -v, [--version] # Show version.
58
78
 
59
- For session options, type: stk help --session
79
+ For project options, type: stk --project
60
80
 
61
- -r, [--rebuild-recent-workspaces] # Rebuild recent workspaces.
81
+ -c, [--create], [--no-create] # Create project metadata.
82
+ -D, [--destroy], [--no-destroy] # Destroy all project metadata.
62
83
 
63
- # Troubleshooting
84
+ For session options, type: stk --session
64
85
 
65
- * When rebuilding workspaces, ensure Sublime Text is shutdown or changes won't be applied.
66
- * When rebuilding workspaces, ensure workspaces_path (as defined via settings.yml) points to a directory containing
67
- both *.sublime-project and *.sublime-workspace files.
86
+ -r, [--rebuild-recent-workspaces] # Rebuild recent workspaces.
68
87
 
69
88
  # Tests
70
89
 
@@ -72,13 +91,34 @@ To test, run:
72
91
 
73
92
  bundle exec rspec spec
74
93
 
94
+ # Workflow
95
+
96
+ The following demonstrates a common workflow that makes you more productive with Sublime Text:
97
+
98
+ 0. Run: `stk -e` (define Sublime Text Kit settings for project roots and workspace directory).
99
+ 0. Shutdown Sublime Text (i.e. `CONTROL+Q`).
100
+ 0. Run: `stk -p -D` (optional -- start with a clean slate. WARNING: This deletes all project metadata in the workspace
101
+ dir).
102
+ 0. Run: `stk -p -c` (creates project metadata so Sublime Text knows where to source the project from).
103
+ 0. Run: `stk -s -r` (rebuilds Sublime Text recent workspace metadata based on the project metadata created in Step #4).
104
+ 0. Launch Sublime Text
105
+ 0. Type: `COMMAND+CONTROL+P` to toggle between projects. Notice that you can easily (fuzzy type) project names to jump
106
+ between them.
107
+ 0. Breeze through your project workload with ease. :)
108
+
109
+ # Troubleshooting
110
+
111
+ - When rebuilding workspaces, ensure Sublime Text is shutdown or changes won't be applied.
112
+ - When rebuilding workspaces, ensure workspace_dir (as defined via settings.yml) points to a directory containing
113
+ *.sublime-project files.
114
+
75
115
  # Versioning
76
116
 
77
117
  Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
78
118
 
79
- * Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
80
- * Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
81
- * Major (X.y.z) - Incremented for any backwards incompatible public API changes.
119
+ - Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
120
+ - Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
121
+ - Major (X.y.z) - Incremented for any backwards incompatible public API changes.
82
122
 
83
123
  # Contributions
84
124
 
@@ -11,10 +11,26 @@ module SublimeTextKit
11
11
  # Initialize.
12
12
  def initialize args = [], options = {}, config = {}
13
13
  super args, options, config
14
- @settings_file = File.join ENV["HOME"], ".sublime", "settings.yml"
14
+ @settings_file = File.join ENV.fetch("HOME"), ".sublime", "settings.yml"
15
15
  @settings = load_yaml @settings_file
16
16
  end
17
17
 
18
+ desc "-p, [--project]", "Manage project metadata."
19
+ map %w(-p --project) => :project
20
+ method_option :create, aliases: "-c", desc: "Create project metadata.", type: :boolean, default: false
21
+ method_option :destroy, aliases: "-D", desc: "Destroy all project metadata.", type: :boolean, default: false
22
+ def project
23
+ say
24
+
25
+ case
26
+ when options[:create] then create_project_metadata
27
+ when options[:destroy] then destroy_project_metadata
28
+ else help("--project")
29
+ end
30
+
31
+ say
32
+ end
33
+
18
34
  desc "-s, [--session]", "Manage session data."
19
35
  map %w(-s --session) => :session
20
36
  method_option :rebuild_recent_workspaces, aliases: "-r", desc: "Rebuild recent workspaces.", type: :boolean, default: false
@@ -22,8 +38,8 @@ module SublimeTextKit
22
38
  say
23
39
 
24
40
  case
25
- when options[:rebuild_recent_workspaces] then rebuild_recent_workspaces
26
- else help("--session")
41
+ when options[:rebuild_recent_workspaces] then rebuild_recent_workspaces
42
+ else help("--session")
27
43
  end
28
44
 
29
45
  say
@@ -49,11 +65,39 @@ module SublimeTextKit
49
65
 
50
66
  private
51
67
 
68
+ def project_roots
69
+ @project_roots ||= @settings.fetch :project_roots, []
70
+ end
71
+
72
+ def workspace_dir
73
+ @workspace_dir ||= File.expand_path @settings.fetch(:workspace_dir)
74
+ end
75
+
76
+ def create_project_metadata
77
+ info "Creating project metadata..."
78
+ info "Workspaces Path: #{workspace_dir}"
79
+ project_roots.each do |project_root|
80
+ info "Processing project root: #{File.expand_path project_root}..."
81
+ SublimeTextKit::ProjectMetadata.create project_root, workspace_dir
82
+ end
83
+ info "Project metadata created."
84
+ end
85
+
86
+ def destroy_project_metadata
87
+ if yes? "Delete all project metadata in #{workspace_dir}?"
88
+ info "Deleting project metadata..."
89
+ SublimeTextKit::ProjectMetadata.delete workspace_dir
90
+ info "Project metadata deleted."
91
+ else
92
+ info "Project metadata deletion aborted."
93
+ end
94
+ end
95
+
52
96
  def rebuild_recent_workspaces
53
97
  info "Rebuilding recent workspaces..."
54
- session = SublimeTextKit::Session.new workspaces_path: @settings[:workspaces_path]
55
- info "Workspaces Path: #{session.workspaces_absolute_path}"
98
+ info "Workspaces Path: #{workspace_dir}"
56
99
  info "Sublime Text Session: #{SublimeTextKit::Session.session_path}"
100
+ session = SublimeTextKit::Session.new workspace_dir: workspace_dir
57
101
  session.rebuild_recent_workspaces
58
102
  info "Recent workspaces rebuilt."
59
103
  end
@@ -0,0 +1,40 @@
1
+ require "multi_json"
2
+ require "pathname"
3
+
4
+ module SublimeTextKit
5
+ class ProjectMetadata
6
+ attr_reader :name, :project_dir, :workspace_dir, :project_file
7
+
8
+ def self.create projects_dir, workspace_dir
9
+ projects_dir = File.expand_path projects_dir
10
+ project_paths = ::Pathname.new(projects_dir).children.select {|child| child if child.directory? }
11
+ project_paths.each { |project_dir| new(project_dir, workspace_dir).save }
12
+ end
13
+
14
+ def self.delete workspace_dir
15
+ workspace_dir = File.expand_path workspace_dir
16
+ ::Pathname.glob("#{workspace_dir}/*.sublime-*").each(&:delete)
17
+ end
18
+
19
+ def initialize project_dir, workspace_dir
20
+ @name = File.basename project_dir
21
+ @project_dir = File.expand_path project_dir
22
+ @workspace_dir = File.expand_path workspace_dir
23
+ @project_file = File.join @workspace_dir, "#{name}.sublime-project"
24
+ end
25
+
26
+ def to_h
27
+ {
28
+ folders: [
29
+ {path: "#{project_dir}"}
30
+ ]
31
+ }
32
+ end
33
+
34
+ def save
35
+ unless File.exist? project_file
36
+ File.open(project_file, 'w') { |file| file.write MultiJson.dump(to_h, pretty: true) }
37
+ end
38
+ end
39
+ end
40
+ end
@@ -2,10 +2,10 @@ require "multi_json"
2
2
 
3
3
  module SublimeTextKit
4
4
  class Session
5
- attr_accessor :workspaces_path
5
+ attr_reader :workspace_dir
6
6
 
7
7
  def self.home_path
8
- ENV["HOME"]
8
+ ENV.fetch "HOME"
9
9
  end
10
10
 
11
11
  def self.session_path
@@ -13,15 +13,11 @@ module SublimeTextKit
13
13
  end
14
14
 
15
15
  def initialize options = {}
16
- @workspaces_path = options.fetch :workspaces_path, ''
17
- end
18
-
19
- def workspaces_absolute_path
20
- File.expand_path workspaces_path
16
+ @workspace_dir = File.expand_path options.fetch(:workspace_dir)
21
17
  end
22
18
 
23
19
  def workspaces
24
- Dir["#{workspaces_absolute_path}/*.sublime-project"].sort
20
+ Dir["#{workspace_dir}/*.sublime-project"].sort
25
21
  end
26
22
 
27
23
  def rebuild_recent_workspaces
@@ -40,7 +36,7 @@ module SublimeTextKit
40
36
  end
41
37
 
42
38
  def save_session json
43
- File.open(self.class.session_path, 'w') { |file| file.write MultiJson.dump(json) }
39
+ File.open(self.class.session_path, 'w') { |file| file.write MultiJson.dump(json, pretty: true) }
44
40
  end
45
41
  end
46
42
  end
@@ -1,3 +1,3 @@
1
1
  module SublimeTextKit
2
- VERSION = "0.4.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -1,2 +1,3 @@
1
1
  require "sublime_text_kit/version"
2
+ require "sublime_text_kit/project_metadata"
2
3
  require "sublime_text_kit/session"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sublime_text_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -30,7 +30,7 @@ cert_chain:
30
30
  fMlZDUGx3lQarp/vPjK+6XH7DLXjBEKqeIGBIpLthYUvDxJRp23C+T3liGSL32vg
31
31
  mSpxxwmK95GDFuEy2mNPaxnazdkw8c+7DbrSpzd/CnNZkRgitxOavs8=
32
32
  -----END CERTIFICATE-----
33
- date: 2014-07-07 00:00:00.000000000 Z
33
+ date: 2014-09-21 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: pry-byebug
@@ -200,6 +200,20 @@ dependencies:
200
200
  - - ">="
201
201
  - !ruby/object:Gem::Version
202
202
  version: '0'
203
+ - !ruby/object:Gem::Dependency
204
+ name: terminal-notifier-guard
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ type: :development
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
203
217
  - !ruby/object:Gem::Dependency
204
218
  name: codeclimate-test-reporter
205
219
  requirement: !ruby/object:Gem::Requirement
@@ -215,7 +229,8 @@ dependencies:
215
229
  - !ruby/object:Gem::Version
216
230
  version: '0'
217
231
  description: Command line utilities for Sublime Text packaged as a Ruby Gem.
218
- email: brooke@redalchemist.com
232
+ email:
233
+ - brooke@redalchemist.com
219
234
  executables:
220
235
  - stk
221
236
  extensions: []
@@ -228,6 +243,7 @@ files:
228
243
  - bin/stk
229
244
  - lib/sublime_text_kit.rb
230
245
  - lib/sublime_text_kit/cli.rb
246
+ - lib/sublime_text_kit/project_metadata.rb
231
247
  - lib/sublime_text_kit/session.rb
232
248
  - lib/sublime_text_kit/version.rb
233
249
  homepage: https://github.com/bkuhlmann/sublime_text_kit
@@ -250,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
250
266
  version: '0'
251
267
  requirements: []
252
268
  rubyforge_project:
253
- rubygems_version: 2.3.0
269
+ rubygems_version: 2.4.1
254
270
  signing_key:
255
271
  specification_version: 4
256
272
  summary: Command line utilities for Sublime Text.
metadata.gz.sig CHANGED
Binary file