sublime_text_kit 0.4.0 → 1.0.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 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