xcodesnippets 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +13 -0
- data/lib/xcode_snippets/main.rb +4 -1
- data/lib/xcode_snippets/manifest.rb +7 -2
- data/lib/xcode_snippets/snippet.rb +24 -1
- data/lib/xcode_snippets/version.rb +1 -1
- data/spec/snippet_manager_spec.rb +9 -1
- metadata +24 -13
data/README.md
CHANGED
@@ -16,6 +16,18 @@ If you aren't familiar with RubyGems, fire up a Terminal and run the following c
|
|
16
16
|
|
17
17
|
If you are using a tool like [RVM](https://rvm.beginrescueend.com/), the `sudo` will probably be unnecessary.
|
18
18
|
|
19
|
+
## Migrating your existing snippets
|
20
|
+
|
21
|
+
If you already have some snippets in `~/Library/Developer/Xcode/UserData/CodeSnippets/` you will want to bring these under `xcodesnippets` control before you do anything else.
|
22
|
+
|
23
|
+
Fortunately, `xcodesnippets` will do this for you; not only that, but it will rename each snippet file to use a more meaningful title (the one you gave it within Xcode).
|
24
|
+
|
25
|
+
To migrate your exiting snippets, run:
|
26
|
+
|
27
|
+
$ xcodesnippets migrate
|
28
|
+
|
29
|
+
A list of your existing snippets will be displayed and with your confirmation, they will be copied into the default `xcodesnippet` bundle, removed from the Xcode snippets directory, then re-linked back to the `xcodesnippet` versions (see "How xcodesnippets works" for more).
|
30
|
+
|
19
31
|
## Installing a code snippet
|
20
32
|
|
21
33
|
Code snippets are distributed as property list files with a `.codesnippet` extension. If you have created any custom code snippets in Xcode 4, you will find them in your home directory, under `~/Library/Developer/Xcode/UserData/CodeSnippets/`. The files are named using GUIDs. Any `codesnippet` file created from within Xcode 4, or manually if you are comfortable editing the files yourself (they are just plists) are installable using `xcodesnippets`.
|
@@ -39,6 +51,7 @@ For a full list of commands and options, run `xcodesnippets --help`.
|
|
39
51
|
## TODO
|
40
52
|
|
41
53
|
* Installing snippets and bundles directly from a URL
|
54
|
+
* Activating snippets from outside the managed directory - great for using your own snippets from their local source repos.
|
42
55
|
* Generating snippet bundles from a folder of snippets ready for distribution
|
43
56
|
* Commands for listing installed bundles and their contents
|
44
57
|
* Commands for activating and de-activating individual bundles/snippets
|
data/lib/xcode_snippets/main.rb
CHANGED
@@ -51,8 +51,13 @@ module XcodeSnippets
|
|
51
51
|
@data[snippet.key]
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
55
|
-
|
54
|
+
def generate_symlink_for_snippet(snippet)
|
55
|
+
snippet.set_guid!(generate_guid)
|
56
|
+
File.join(@xcode_snippets_install_path, "#{snippet.guid}.codesnippet")
|
57
|
+
end
|
58
|
+
|
59
|
+
def generate_guid
|
60
|
+
@uuid_generator.generate
|
56
61
|
end
|
57
62
|
|
58
63
|
private
|
@@ -7,13 +7,18 @@ module XcodeSnippets
|
|
7
7
|
@bundle = bundle
|
8
8
|
end
|
9
9
|
|
10
|
+
def set_guid!(new_guid)
|
11
|
+
metadata.guid = new_guid
|
12
|
+
metadata.save_to(path)
|
13
|
+
end
|
14
|
+
|
10
15
|
def copy_to_bundle(bundle)
|
11
16
|
FileUtils.cp(path, bundle.path)
|
12
17
|
self.class.new(File.join(bundle.path, name), bundle)
|
13
18
|
end
|
14
19
|
|
15
20
|
def activate(manifest)
|
16
|
-
@symlink = manifest.
|
21
|
+
@symlink = manifest.generate_symlink_for_snippet(self)
|
17
22
|
FileUtils.symlink(path, symlink)
|
18
23
|
manifest.add_snippet(self)
|
19
24
|
end
|
@@ -30,6 +35,10 @@ module XcodeSnippets
|
|
30
35
|
File.basename(@path)
|
31
36
|
end
|
32
37
|
|
38
|
+
def guid
|
39
|
+
metadata.guid
|
40
|
+
end
|
41
|
+
|
33
42
|
def metadata
|
34
43
|
@metadata ||= MetaData.from_file(path)
|
35
44
|
end
|
@@ -59,6 +68,20 @@ module XcodeSnippets
|
|
59
68
|
def title
|
60
69
|
@data["IDECodeSnippetTitle"]
|
61
70
|
end
|
71
|
+
|
72
|
+
def guid
|
73
|
+
@data["IDECodeSnippetIdentifier"]
|
74
|
+
end
|
75
|
+
|
76
|
+
def guid=(new_guid)
|
77
|
+
@data["IDECodeSnippetIdentifier"] = new_guid
|
78
|
+
end
|
79
|
+
|
80
|
+
def save_to(path)
|
81
|
+
File.open(path, "w") do |io|
|
82
|
+
io.write @data.to_plist
|
83
|
+
end
|
84
|
+
end
|
62
85
|
end
|
63
86
|
end
|
64
87
|
end
|
@@ -24,7 +24,11 @@ describe "SnippetManager" do
|
|
24
24
|
File.exist?(expected_path).should be_true
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
27
|
+
it "generates a new GUID identifier for the snippet" do
|
28
|
+
@snippet.guid.should_not be_nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "creates a symlink to the installed snippet in the Xcode snippets directory based on the snippet's generated GUID" do
|
28
32
|
symlink = @manager.manifest.symlink_for_snippet(@snippet)
|
29
33
|
File.exist?(symlink).should be_true
|
30
34
|
end
|
@@ -33,6 +37,10 @@ describe "SnippetManager" do
|
|
33
37
|
@manager.manifest.should have_snippet(@snippet)
|
34
38
|
end
|
35
39
|
|
40
|
+
it "updates the snippet's metadata to reflect it's generated GUID" do
|
41
|
+
@snippet.metadata.guid.should == @snippet.guid
|
42
|
+
end
|
43
|
+
|
36
44
|
end
|
37
45
|
|
38
46
|
describe "#install_snippets_from_paths" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcodesnippets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -14,7 +14,7 @@ default_executable:
|
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: clamp
|
17
|
-
requirement: &
|
17
|
+
requirement: &2164421420 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 0.2.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2164421420
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: uuidtools
|
28
|
-
requirement: &
|
28
|
+
requirement: &2164419300 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 2.1.2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2164419300
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: plist
|
39
|
-
requirement: &
|
39
|
+
requirement: &2164412280 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,21 @@ dependencies:
|
|
44
44
|
version: 3.1.0
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2164412280
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: highline
|
50
|
+
requirement: &2164409580 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.6.2
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: *2164409580
|
48
59
|
- !ruby/object:Gem::Dependency
|
49
60
|
name: rspec
|
50
|
-
requirement: &
|
61
|
+
requirement: &2164408180 !ruby/object:Gem::Requirement
|
51
62
|
none: false
|
52
63
|
requirements:
|
53
64
|
- - ! '>='
|
@@ -55,10 +66,10 @@ dependencies:
|
|
55
66
|
version: '0'
|
56
67
|
type: :development
|
57
68
|
prerelease: false
|
58
|
-
version_requirements: *
|
69
|
+
version_requirements: *2164408180
|
59
70
|
- !ruby/object:Gem::Dependency
|
60
71
|
name: cucumber
|
61
|
-
requirement: &
|
72
|
+
requirement: &2164407640 !ruby/object:Gem::Requirement
|
62
73
|
none: false
|
63
74
|
requirements:
|
64
75
|
- - ! '>='
|
@@ -66,10 +77,10 @@ dependencies:
|
|
66
77
|
version: '0'
|
67
78
|
type: :development
|
68
79
|
prerelease: false
|
69
|
-
version_requirements: *
|
80
|
+
version_requirements: *2164407640
|
70
81
|
- !ruby/object:Gem::Dependency
|
71
82
|
name: ruby-debug19
|
72
|
-
requirement: &
|
83
|
+
requirement: &2164407080 !ruby/object:Gem::Requirement
|
73
84
|
none: false
|
74
85
|
requirements:
|
75
86
|
- - ! '>='
|
@@ -77,7 +88,7 @@ dependencies:
|
|
77
88
|
version: '0'
|
78
89
|
type: :development
|
79
90
|
prerelease: false
|
80
|
-
version_requirements: *
|
91
|
+
version_requirements: *2164407080
|
81
92
|
description:
|
82
93
|
email: luke@lukeredpath.co.uk
|
83
94
|
executables:
|