sublime_text_kit 2.0.0 → 3.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: 5cba74006e1c0762c5f6315ffecc80c916edb758
4
- data.tar.gz: f40453ee36378702f4480b9368692dc9535e2955
3
+ metadata.gz: 4a314305161fb7d4e24fa3d19a53838ce27f1708
4
+ data.tar.gz: fe173ec68939df2d472460f9350eab1caaaf620d
5
5
  SHA512:
6
- metadata.gz: 034b7546cc13db1748b3fedc393122ccf2584b64d6bb8d972799d08c8705d043d64efdb4d32524e4d08337d29fa0b95782b784747866648563603630ff15f2d6
7
- data.tar.gz: a27974c98239debab3c42d6e89a4145dd245402d7acee92173ad7154ecc0df2a0912e45b53bccdb845eca896cd9aeb88771f57bcd1f02d74cf7df38f03185052
6
+ metadata.gz: 9e38ddf46046f2dba762e4dbbf15e29e6c62465a135973c0d2db60c72e31f92903014939d77c8624f1359089d67f566e07a2d9e9489e019ad56734636dc29da9
7
+ data.tar.gz: 789a7ff63ca6eb6a2ba5d9383e70de11432de3c6a685da1ffc97aeda9d42f168d23f101e00c05e6c4be832d6326728fb622d450504ddc9176feff50024986ec6
Binary file
data.tar.gz.sig CHANGED
@@ -1,3 +1,2 @@
1
- Sr[x�#��~���Lk��-�DAU?�˶
2
- ������l�_�r��\u ~��by���֞Y6���!<;�m��` B����u5_p%�;�#�J�p��oN/N��[J*���>�����ٌ�u���h"ZJ�~茣\��eq">O�ZrڲT�����{��)Ǹs�������h4SS�7��S�q � Ϧ���&d8�'6����R�e&���v �zA���"$��
3
- ��6�bl_QՁ��C#�$��f`
1
+ J+��+?ƌ�gr��Q�ϵ�Tv�סڗ0u��(B��u��'���������zt #�*��Gʈ������Ÿ}Wߨѹ� V󤿝�w,~
2
+ 죕��� >�� ���f�O�dF
data/README.md CHANGED
@@ -11,12 +11,13 @@ Provides a collection of utilities that aid in Sublime Text management.
11
11
 
12
12
  # Features
13
13
 
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.
14
+ - Provides project metadata (i.e. *.sublime-project and *.sublime-workspace files) management for project
15
+ switching via the `CONTROL+COMMAND+P` shortcut.
16
+ - Rebuilds project history (Project -> Recent Projects) from existing project files (assumes project
17
+ metadata is in a directory) so one can easily toggle between up-to-date project information via the
18
+ `CONTROL+COMMAND+P` shortcut.
19
+
20
+ [![asciicast](https://asciinema.org/a/19858.png)](https://asciinema.org/a/19858)
20
21
 
21
22
  # Requirements
22
23
 
@@ -50,12 +51,12 @@ Example:
50
51
  - "~/Dropbox/Development/Misc"
51
52
  - "~/Dropbox/Development/OSS"
52
53
  - "~/Dropbox/Development/Work"
53
- :workspace_dir: "~/Dropbox/Cache/Sublime"
54
+ :metadata_dir: "~/Dropbox/Cache/Sublime"
54
55
 
55
- The project roots are the root level directories to where project folders are located. When project metadata (i.e.
56
- *.sublime-project) is generated, the name of the metadata file will be the same name as that of the project folder. All
57
- project metadata, regardless of root location, is written to the same workspace directory. If using the example settings
58
- shown above and assuming the following directory structure exists...
56
+ The project roots define the root level directories where project folders are located. When project metadata (i.e.
57
+ *.sublime-project, *.sublime-workspace) is generated, the name of the metadata file will be the same name as that
58
+ of the project folder. All project metadata, regardless of root location, is written to the same metadata directory.
59
+ If using the example settings shown above and assuming the following directory structure exists...
59
60
 
60
61
  ~/Dropbox/Development/Misc/example
61
62
  ~/Dropbox/Development/OSS/sublime_text_kit
@@ -63,26 +64,30 @@ shown above and assuming the following directory structure exists...
63
64
  ...the project metadata will be created in the workspace directory as follows:
64
65
 
65
66
  ~/Dropbox/Cache/Sublime/example.sublime-project
67
+ ~/Dropbox/Cache/Sublime/example.sublime-workspace
66
68
  ~/Dropbox/Cache/Sublime/sublime_text_kit.sublime-project
69
+ ~/Dropbox/Cache/Sublime/sublime_text_kit.sublime-workspace
67
70
 
68
71
  # Usage
69
72
 
70
- From the command line, type: stk
73
+ From the command line, type: `stk`
71
74
 
75
+ stk -c, [--configure] # Configure Sublime Text with current settings.
72
76
  stk -e, [--edit] # Edit settings in default editor (assumes $EDITOR environment variable).
73
77
  stk -h, [--help=HELP] # Show this message or get help for a command.
74
- stk -p, [--project] # Manage project metadata.
75
- stk -s, [--session] # Manage session data.
78
+ stk -m, [--metadata] # Manage project/workspace metadata.
79
+ stk -s, [--session] # Manage session metadata.
76
80
  stk -v, [--version] # Show version.
77
81
 
78
- For project options, type: stk --project
82
+ For metadata options, type: `stk --metadata`
79
83
 
80
- -c, [--create], [--no-create] # Create project metadata.
81
- -D, [--destroy], [--no-destroy] # Destroy all project metadata.
84
+ -c, [--create], [--no-create] # Create metadata.
85
+ -D, [--destroy], [--no-destroy] # Destroy metadata.
86
+ -R, [--rebuild], [--no-rebuild] # Rebuild metadata.
82
87
 
83
- For session options, type: stk --session
88
+ For session options, type: `stk --session`
84
89
 
85
- -r, [--rebuild-recent-workspaces] # Rebuild recent workspaces.
90
+ -r, [--rebuild-session], [--no-rebuild-session] # Rebuild session metadata.
86
91
 
87
92
  # Tests
88
93
 
@@ -90,26 +95,35 @@ To test, run:
90
95
 
91
96
  bundle exec rspec spec
92
97
 
98
+ # Upgrading
99
+
100
+ For those upgrading from Sublime Text Kit v2.0.0 or earlier, be mindful of the following changes:
101
+
102
+ 0. Ensure you are using Sublime Text 3 (it is currently in Beta but your v2.0.0 license will work).
103
+ 0. Update the `~/.sublime/settings.yml` file to switch from a `workspace_dir` to a `metadata_dir` instead.
104
+ 0. Run the following commands to rebuild your project/workspace and session metadata:
105
+
106
+ stk -m -R # Destroys and rebuilds your existing project/workspace metadata to Sublime Text 3 format.
107
+ skt -s -r # Rebuilds your session history with project metadata as generated above.
108
+
93
109
  # Workflow
94
110
 
95
- The following demonstrates a common workflow that makes you more productive with Sublime Text:
111
+ The following demonstrates a default Sublime Text setup:
96
112
 
97
- 0. Run: `stk -e` (define Sublime Text Kit settings for project roots and workspace directory).
113
+ 0. Run: `stk -e` (define Sublime Text Kit settings for project roots and metadata directory).
98
114
  0. Shutdown Sublime Text (i.e. `CONTROL+Q`).
99
- 0. Run: `stk -p -D` (optional -- start with a clean slate. WARNING: This deletes all project metadata in the workspace
100
- dir).
101
- 0. Run: `stk -p -c` (creates project metadata so Sublime Text knows where to source the project from).
102
- 0. Run: `stk -s -r` (rebuilds Sublime Text recent workspace metadata based on the project metadata created in Step #4).
103
- 0. Launch Sublime Text
104
- 0. Type: `COMMAND+CONTROL+P` to toggle between projects. Notice that you can easily (fuzzy type) project names to jump
105
- between them.
115
+ 0. Run: `stk -c` (creates project metadata and rebuilds the session metadata so Sublime Text has a complete project
116
+ history from which to jump through via the `CONTROL+COMMMAND+P` shortcut).
117
+ ).
118
+ 0. Launch Sublime Text and use the `CONTROL+COMMAND+P` keyboard shortcut to toggle between projects. Notice that
119
+ you can (fuzzy type) project names to jump between them.
106
120
  0. Breeze through your project workload with ease. :)
107
121
 
108
122
  # Troubleshooting
109
123
 
110
124
  - When rebuilding workspaces, ensure Sublime Text is shutdown or changes won't be applied.
111
125
  - When rebuilding workspaces, ensure workspace_dir (as defined via settings.yml) points to a directory containing
112
- *.sublime-project files.
126
+ *.sublime-project and *.sublime-workspace files.
113
127
 
114
128
  # Versioning
115
129
 
@@ -119,13 +133,14 @@ Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
119
133
  - Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
120
134
  - Major (X.y.z) - Incremented for any backwards incompatible public API changes.
121
135
 
122
- # Contributions
136
+ # Code of Conduct
123
137
 
124
- Read [CONTRIBUTING](CONTRIBUTING.md) for details.
138
+ Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By participating in this project
139
+ you agree to abide by its terms.
125
140
 
126
- # Credits
141
+ # Contributions
127
142
 
128
- Developed by [Brooke Kuhlmann](https://www.alchemists.io) at [Alchemists](https://www.alchemists.io).
143
+ Read [CONTRIBUTING](CONTRIBUTING.md) for details.
129
144
 
130
145
  # License
131
146
 
@@ -136,3 +151,8 @@ Read the [LICENSE](LICENSE.md) for details.
136
151
 
137
152
  Read the [CHANGELOG](CHANGELOG.md) for details.
138
153
  Built with [Gemsmith](https://github.com/bkuhlmann/gemsmith).
154
+
155
+ # Credits
156
+
157
+ Developed by [Brooke Kuhlmann](https://www.alchemists.io) at [Alchemists](https://www.alchemists.io).
158
+
@@ -1,3 +1,5 @@
1
1
  require "sublime_text_kit/version"
2
- require "sublime_text_kit/project_metadata"
3
2
  require "sublime_text_kit/session"
3
+ require "sublime_text_kit/metadata/base"
4
+ require "sublime_text_kit/metadata/project_metadata"
5
+ require "sublime_text_kit/metadata/workspace_metadata"
@@ -3,7 +3,7 @@ require "thor"
3
3
  require "thor/actions"
4
4
  require "thor_plus/actions"
5
5
 
6
- module SublimeTextKit
6
+ module SublimeTextKit
7
7
  class CLI < Thor
8
8
  include Thor::Actions
9
9
  include ThorPlus::Actions
@@ -15,30 +15,54 @@ module SublimeTextKit
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
18
+ desc "-c, [--configure]", "Configure Sublime Text with current settings."
19
+ map %w(-c --configure) => :configure
20
+ def configure
21
+ create_metadata
22
+ say
23
+ rebuild_session
24
+ end
25
+
26
+ desc "-s, [--session]", "Manage session metadata."
27
+ map %w(-s --session) => :session
28
+ method_option :rebuild_session, aliases: "-r", desc: "Rebuild session metadata.", type: :boolean, default: false
29
+ def session
30
+ say
31
+
32
+ case
33
+ when options[:rebuild_session] then rebuild_session
34
+ else help("--session")
35
+ end
36
+
37
+ say
38
+ end
39
+
40
+ desc "-m, [--metadata]", "Manage project/workspace metadata."
41
+ map %w(-m --metadata) => :metadata
42
+ method_option :create, aliases: "-c", desc: "Create metadata.", type: :boolean, default: false
43
+ method_option :destroy, aliases: "-D", desc: "Destroy metadata.", type: :boolean, default: false
44
+ method_option :rebuild, aliases: "-R", desc: "Rebuild metadata.", type: :boolean, default: false
45
+ def metadata
23
46
  say
24
47
 
25
48
  case
26
- when options[:create] then create_project_metadata
27
- when options[:destroy] then destroy_project_metadata
28
- else help("--project")
49
+ when options[:create] then create_metadata
50
+ when options[:destroy] then destroy_metadata
51
+ when options[:rebuild] then rebuild_metadata
52
+ else help("--metadata")
29
53
  end
30
54
 
31
55
  say
32
56
  end
33
57
 
34
- desc "-s, [--session]", "Manage session data."
58
+ desc "-s, [--session]", "Manage session metadata."
35
59
  map %w(-s --session) => :session
36
- method_option :rebuild_recent_workspaces, aliases: "-r", desc: "Rebuild recent workspaces.", type: :boolean, default: false
60
+ method_option :rebuild_session, aliases: "-r", desc: "Rebuild session metadata.", type: :boolean, default: false
37
61
  def session
38
62
  say
39
63
 
40
64
  case
41
- when options[:rebuild_recent_workspaces] then rebuild_recent_workspaces
65
+ when options[:rebuild_session] then rebuild_session
42
66
  else help("--session")
43
67
  end
44
68
 
@@ -69,37 +93,58 @@ module SublimeTextKit
69
93
  @project_roots ||= @settings.fetch :project_roots, []
70
94
  end
71
95
 
72
- def workspace_dir
73
- @workspace_dir ||= File.expand_path @settings.fetch(:workspace_dir)
96
+ def metadata_dir
97
+ @metadata_dir ||= File.expand_path @settings.fetch(:metadata_dir)
74
98
  end
75
99
 
76
- def create_project_metadata
77
- info "Creating project metadata..."
78
- info "Workspaces Path: #{workspace_dir}"
100
+ def create_metadata
101
+ info "Creating metadata..."
102
+ info "Metadata Path: #{metadata_dir}"
79
103
  project_roots.each do |project_root|
80
104
  info "Processing project root: #{File.expand_path project_root}..."
81
- SublimeTextKit::ProjectMetadata.create project_root, workspace_dir
105
+ SublimeTextKit::Metadata::Project.create project_root, metadata_dir
106
+ SublimeTextKit::Metadata::Workspace.create project_root, metadata_dir
107
+ end
108
+ info "Metadata created."
109
+ end
110
+
111
+ def destroy_metadata
112
+ if yes? "Delete metadata in #{metadata_dir}?"
113
+ info "Deleting metadata..."
114
+ SublimeTextKit::Metadata::Project.delete metadata_dir
115
+ SublimeTextKit::Metadata::Workspace.delete metadata_dir
116
+ info "Metadata deleted."
117
+ else
118
+ info "Metadata deletion aborted."
82
119
  end
83
- info "Project metadata created."
84
120
  end
85
121
 
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."
122
+ def rebuild_metadata
123
+ if yes? "Rebuild metadata in #{metadata_dir}?"
124
+ info "Deleting metadata..."
125
+ SublimeTextKit::Metadata::Project.delete metadata_dir
126
+ SublimeTextKit::Metadata::Workspace.delete metadata_dir
127
+
128
+ info "Creating metadata..."
129
+ project_roots.each do |project_root|
130
+ info "Processing project root: #{File.expand_path project_root}..."
131
+ SublimeTextKit::Metadata::Project.create project_root, metadata_dir
132
+ SublimeTextKit::Metadata::Workspace.create project_root, metadata_dir
133
+ end
134
+
135
+ info "Metadata rebuilt."
91
136
  else
92
- info "Project metadata deletion aborted."
137
+ info "Metadata rebuild aborted."
93
138
  end
94
139
  end
95
140
 
96
- def rebuild_recent_workspaces
97
- info "Rebuilding recent workspaces..."
98
- info "Workspaces Path: #{workspace_dir}"
99
- info "Sublime Text Session: #{SublimeTextKit::Session.session_path}"
100
- session = SublimeTextKit::Session.new workspace_dir: workspace_dir
141
+ def rebuild_session
142
+ info "Rebuilding session metadata..."
143
+ info "Metadata (project/workspace) Path: #{metadata_dir}"
144
+ info "Session Path: #{SublimeTextKit::Session.session_path}"
145
+ session = SublimeTextKit::Session.new metadata_dir
101
146
  session.rebuild_recent_workspaces
102
- info "Recent workspaces rebuilt."
147
+ info "Session metadata rebuilt."
103
148
  end
104
149
  end
105
150
  end
@@ -0,0 +1,58 @@
1
+ require "multi_json"
2
+ require "pathname"
3
+
4
+ module SublimeTextKit
5
+ module Metadata
6
+ class Base
7
+ attr_reader :name, :project_dir, :metadata_dir, :metadata_file
8
+
9
+ def self.create projects_dir, metadata_dir
10
+ instance = new projects_dir, metadata_dir
11
+ return unless valid_dir?(instance.project_dir, "Projects")
12
+ return unless valid_dir?(instance.metadata_dir, "Metadata")
13
+
14
+ project_paths = ::Pathname.new(instance.project_dir).children.select {|child| child.directory? }
15
+ project_paths.each { |project_dir| new(project_dir, metadata_dir).save }
16
+ end
17
+
18
+ def self.delete metadata_dir
19
+ instance = new '', metadata_dir
20
+ return unless valid_dir?(instance.metadata_dir, "Metadata")
21
+
22
+ ::Pathname.glob("#{instance.metadata_dir}/*.#{instance.file_extension}").each(&:delete)
23
+ end
24
+
25
+ def initialize project_dir, metadata_dir
26
+ @name = File.basename project_dir
27
+ @project_dir = File.expand_path project_dir
28
+ @metadata_dir = File.expand_path metadata_dir
29
+ @metadata_file = File.join @metadata_dir, "#{name}.#{file_extension}"
30
+ end
31
+
32
+ def file_extension
33
+ "sublime-unknown"
34
+ end
35
+
36
+ def to_h
37
+ {}
38
+ end
39
+
40
+ def save
41
+ unless File.exist? metadata_file
42
+ File.open(metadata_file, 'w') { |file| file.write MultiJson.dump(to_h, pretty: true) }
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ def self.valid_dir? dir, label
49
+ if File.exist?(dir)
50
+ true
51
+ else
52
+ puts "#{label} directory doesn't exist: #{dir}."
53
+ false
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,21 @@
1
+ module SublimeTextKit
2
+ module Metadata
3
+ class Project < Base
4
+ def initialize project_dir, metadata_dir
5
+ super project_dir, metadata_dir
6
+ end
7
+
8
+ def file_extension
9
+ "sublime-project"
10
+ end
11
+
12
+ def to_h
13
+ {
14
+ folders: [
15
+ {path: "#{project_dir}"}
16
+ ]
17
+ }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ module SublimeTextKit
2
+ module Metadata
3
+ class Workspace < Base
4
+ def initialize project_dir, metadata_dir
5
+ super project_dir, metadata_dir
6
+ end
7
+
8
+ def file_extension
9
+ "sublime-workspace"
10
+ end
11
+
12
+ def to_h
13
+ {
14
+ expanded_folders: ["#{project_dir}"],
15
+ select_project: {
16
+ selected_items: [
17
+ [name, File.join(metadata_dir, "#{name}.sublime-project")]
18
+ ]
19
+ }
20
+ }
21
+ end
22
+ end
23
+ end
24
+ end
@@ -2,22 +2,22 @@ require "multi_json"
2
2
 
3
3
  module SublimeTextKit
4
4
  class Session
5
- attr_reader :workspace_dir
5
+ attr_reader :metadata_dir
6
6
 
7
7
  def self.home_path
8
8
  ENV.fetch "HOME"
9
9
  end
10
10
 
11
11
  def self.session_path
12
- "#{home_path}/Library/Application Support/Sublime Text 2/Settings/Session.sublime_session"
12
+ "#{home_path}/Library/Application Support/Sublime Text 3/Local/Session.sublime_session"
13
13
  end
14
14
 
15
- def initialize options = {}
16
- @workspace_dir = File.expand_path options.fetch(:workspace_dir)
15
+ def initialize metadata_directory
16
+ @metadata_dir = File.expand_path metadata_directory
17
17
  end
18
18
 
19
19
  def workspaces
20
- Dir["#{workspace_dir}/*.sublime-project"].sort
20
+ Dir["#{metadata_dir}/*.sublime-workspace"].sort
21
21
  end
22
22
 
23
23
  def rebuild_recent_workspaces
@@ -1,3 +1,3 @@
1
1
  module SublimeTextKit
2
- VERSION = "2.0.0"
2
+ VERSION = "3.0.0"
3
3
  end
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: 2.0.0
4
+ version: 3.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: 2015-01-01 00:00:00.000000000 Z
33
+ date: 2015-05-11 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: pry-byebug
@@ -257,7 +257,9 @@ files:
257
257
  - bin/stk
258
258
  - lib/sublime_text_kit.rb
259
259
  - lib/sublime_text_kit/cli.rb
260
- - lib/sublime_text_kit/project_metadata.rb
260
+ - lib/sublime_text_kit/metadata/base.rb
261
+ - lib/sublime_text_kit/metadata/project_metadata.rb
262
+ - lib/sublime_text_kit/metadata/workspace_metadata.rb
261
263
  - lib/sublime_text_kit/session.rb
262
264
  - lib/sublime_text_kit/version.rb
263
265
  homepage: https://github.com/bkuhlmann/sublime_text_kit
@@ -280,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
282
  version: '0'
281
283
  requirements: []
282
284
  rubyforge_project:
283
- rubygems_version: 2.4.5
285
+ rubygems_version: 2.4.6
284
286
  signing_key:
285
287
  specification_version: 4
286
288
  summary: Command line utilities for Sublime Text.
metadata.gz.sig CHANGED
Binary file
@@ -1,59 +0,0 @@
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
- workspace_dir = File.expand_path workspace_dir
11
-
12
- return unless valid_dir?(projects_dir, "Projects")
13
- return unless valid_dir?(workspace_dir, "Workspace")
14
-
15
- project_paths = ::Pathname.new(projects_dir).children.select {|child| child if child.directory? }
16
- project_paths.each { |project_dir| new(project_dir, workspace_dir).save }
17
- end
18
-
19
- def self.delete workspace_dir
20
- workspace_dir = File.expand_path workspace_dir
21
-
22
- return unless valid_dir?(workspace_dir, "Workspace")
23
-
24
- ::Pathname.glob("#{workspace_dir}/*.sublime-*").each(&:delete)
25
- end
26
-
27
- def initialize project_dir, workspace_dir
28
- @name = File.basename project_dir
29
- @project_dir = File.expand_path project_dir
30
- @workspace_dir = File.expand_path workspace_dir
31
- @project_file = File.join @workspace_dir, "#{name}.sublime-project"
32
- end
33
-
34
- def to_h
35
- {
36
- folders: [
37
- {path: "#{project_dir}"}
38
- ]
39
- }
40
- end
41
-
42
- def save
43
- unless File.exist? project_file
44
- File.open(project_file, 'w') { |file| file.write MultiJson.dump(to_h, pretty: true) }
45
- end
46
- end
47
-
48
- private
49
-
50
- def self.valid_dir? dir, label
51
- if File.exist?(dir)
52
- true
53
- else
54
- puts "#{label} directory doesn't exist: #{dir}."
55
- false
56
- end
57
- end
58
- end
59
- end