xcodeproj_utils 0.0.2 → 0.1.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: 6b440ecb9540283cdd7c053bdd0a0182e605df3a
4
- data.tar.gz: e8dc28037d3459bef55e338e28a185cd4c6baa4b
3
+ metadata.gz: efebdccabae14fb48580fce9c3f80647d91193c8
4
+ data.tar.gz: c77bc9c825766a609d8ca298799bf4341825fc36
5
5
  SHA512:
6
- metadata.gz: c8b1387bf2d2f0eab045dd065ca94f8a8e7f46b3124d7b1a206b521a51cbb9235c86a0b74f38b309afadcb5844462b434f2213e7297e75830a55b97eda59498d
7
- data.tar.gz: b8b212dd8a85ed788c8cabecdb9d2079ba80b3fb932f3c22830023b386ba6fb668cca3f684422915fd3c77f2a3ed4e1e257f8e18aecbb2298316d8336e7b8dd7
6
+ metadata.gz: 511a0932548cbcf6c174af77376a286c59e21c84c7a904207955302aae4ed66dff03ebfe956b99356db331a6064b3566c186c788497b3776f2706174acfe5975
7
+ data.tar.gz: 239b1bdcc5308320f836dd70a6c90c2683df23babd3449ced2b399c95bcbb81ee7399a0056e636a7d2dd6de9bb557c3b7a22a9e358b0f617b4eb5fa49b2aaa52
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  # XcodeprojUtils
2
2
 
3
- Count source lines of files in xcode project.
3
+ Util commands for xcode project. Following commands are supported for now.
4
+
5
+ - Count source lines of files in xcode project
6
+ - Show source / resource files in xcode project
4
7
 
5
8
  ## Installation
6
9
 
data/bin/xcp_utils CHANGED
@@ -4,18 +4,29 @@ require 'thor'
4
4
  require 'xcodeproj_utils'
5
5
 
6
6
  class CLI < Thor
7
- desc "Count source lines of files", "xcp_utils lines PROJECT_NAME TARGET_NAME"
7
+ desc "xcp_utils lines PROJECT_NAME TARGET_NAME", "Count source lines of files"
8
8
  option :header_only, :type => :boolean, :default => false, :desc => 'Count only header files'
9
9
  option :source_only, :type => :boolean, :default => false, :desc => 'Count only source files'
10
10
  def lines(proj_name, target_name)
11
11
  header_only = options[:header_only]
12
12
  source_only = options[:source_only]
13
+ proj = XcodeprojUtils::Project.new(proj_name, target_name)
13
14
  if header_only or source_only
14
- puts XcodeprojUtils.wc(proj_name, target_name, header_only=header_only, source_only=source_only)
15
+ puts proj.wc(header_only=header_only, source_only=source_only)
15
16
  else
16
- puts XcodeprojUtils.wc(proj_name, target_name)
17
+ puts proj.wc()
17
18
  end
18
19
  end
20
+
21
+ desc "xcp_utils show PROJECT_NAME TARGET_NAME", "Show files in specified target"
22
+ option :kind, :type => :string, :default => 'source', :desc => 'source or resource'
23
+ option :fullpath, :type => :boolean, :default => false, :desc => 'full paths will be shown if specified'
24
+ def show(proj_name, target_name)
25
+ kind = options[:kind]
26
+ fullpath = options[:fullpath]
27
+ proj = XcodeprojUtils::Project.new(proj_name, target_name)
28
+ proj.show(kind, fullpath)
29
+ end
19
30
  end
20
31
 
21
32
  CLI.start(ARGV)
@@ -2,47 +2,66 @@ require "xcodeproj_utils/version"
2
2
  require "Xcodeproj"
3
3
 
4
4
  module XcodeprojUtils
5
- def self.wc(proj_name, target_name, header_only=false, source_only=false)
6
- proj = Xcodeproj::Project::open(proj_name)
7
-
8
- for t in proj.targets
9
- next if t.name != target_name
10
- target = t
11
- break
5
+ class Project
6
+ def initialize(proj_name, target_name)
7
+ @proj = Xcodeproj::Project::open(proj_name)
8
+ for t in @proj.targets
9
+ next if t.name != target_name
10
+ @target = t
11
+ break
12
+ end
13
+ raise ArgumentError, "#{target_name} is not found in #{proj_name}" if not @target
12
14
  end
13
15
 
14
- if not target
15
- abort("#{target_name} is not found in #{proj_name}")
16
- end
16
+ def wc(header_only=false, source_only=false)
17
+ all = !(header_only || source_only) # default is all
18
+ count_source = lambda do
19
+ sources = []
20
+ for file in @target.source_build_phase.files_references
21
+ if file.last_known_file_type and file.last_known_file_type.include? "sourcecode"
22
+ sources.push("'#{file.real_path}'")
23
+ end
24
+ end
25
+ file_params = sources.join(' ')
26
+ source_total = %x{wc -l #{file_params}}
27
+ return source_total.lines[-1].split.first.to_i
28
+ end
17
29
 
18
- all = !(header_only || source_only) # default is all
19
- count_source = lambda do
20
- sources = []
21
- for file in target.source_build_phase.files_references
22
- if file.last_known_file_type and file.last_known_file_type.include? "sourcecode"
23
- sources.push("'#{file.real_path}'")
30
+ count_header = lambda do
31
+ headers = []
32
+ for file in @proj.files
33
+ if file.path.end_with? ".h"
34
+ headers.push("'#{file.real_path}'")
35
+ end
24
36
  end
37
+ file_params = headers.join(' ')
38
+ header_total = %x{wc -l #{file_params}}
39
+ return header_total.lines[-1].split.first.to_i
25
40
  end
26
- file_params = sources.join(' ')
27
- source_total = %x{wc -l #{file_params}}
28
- return source_total.lines[-1].split.first.to_i
41
+
42
+ source_total = header_total = 0
43
+ source_total = count_source.call if all or source_only
44
+ header_total = count_header.call if all or header_only
45
+ source_total + header_total
29
46
  end
30
47
 
31
- count_header = lambda do
32
- headers = []
33
- for file in proj.files
34
- if file.path.end_with? ".h"
35
- headers.push("'#{file.real_path}'")
48
+ def show(kind, fullpath=false)
49
+ if kind == 'resource'
50
+ files = @target.resources_build_phase.files_references
51
+ elsif kind == 'source'
52
+ files = @target.source_build_phase.files_references
53
+ end
54
+
55
+ if files
56
+ for file in files
57
+ if fullpath
58
+ puts file.real_path
59
+ else
60
+ puts file.path
61
+ end
36
62
  end
37
63
  end
38
- file_params = headers.join(' ')
39
- header_total = %x{wc -l #{file_params}}
40
- return header_total.lines[-1].split.first.to_i
64
+ return nil
41
65
  end
42
-
43
- source_total = header_total = 0
44
- source_total = count_source.call if all or source_only
45
- header_total = count_header.call if all or header_only
46
- source_total + header_total
47
66
  end
48
67
  end
@@ -1,3 +1,3 @@
1
1
  module XcodeprojUtils
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -8,8 +8,13 @@ Gem::Specification.new do |spec|
8
8
  spec.version = XcodeprojUtils::VERSION
9
9
  spec.authors = ["Matsumoto Taichi"]
10
10
  spec.email = ["taichino@gmail.com"]
11
- spec.summary = %q{Count source lines of files in xcode project.}
12
- spec.description = %q{Count source lines of files in xcode project.}
11
+ spec.summary = %q{Util commands for xcode project.}
12
+ spec.description = %q{
13
+ Util commands for xcode project. Following commands are supported for now.
14
+
15
+ - Count source lines of files in xcode project
16
+ - Show source / resource files in xcode project
17
+ }
13
18
  spec.homepage = "https://github.com/taichino/xcodeproj_utils"
14
19
  spec.license = "MIT"
15
20
 
@@ -20,7 +25,7 @@ Gem::Specification.new do |spec|
20
25
 
21
26
  spec.add_development_dependency "bundler", "~> 1.5"
22
27
  spec.add_development_dependency "rake"
23
- spec.add_development_dependency "thor"
24
28
 
25
- spec.add_runtime_dependency "xcodeproj"
29
+ spec.add_runtime_dependency "thor", "~> 0.18"
30
+ spec.add_runtime_dependency "xcodeproj", "~> 0.14"
26
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcodeproj_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matsumoto Taichi
@@ -42,31 +42,36 @@ dependencies:
42
42
  name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
47
+ version: '0.18'
48
+ type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '0.18'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: xcodeproj
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '0.14'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
69
- description: Count source lines of files in xcode project.
68
+ version: '0.14'
69
+ description: |2
70
+
71
+ Util commands for xcode project. Following commands are supported for now.
72
+
73
+ - Count source lines of files in xcode project
74
+ - Show source / resource files in xcode project
70
75
  email:
71
76
  - taichino@gmail.com
72
77
  executables:
@@ -105,5 +110,5 @@ rubyforge_project:
105
110
  rubygems_version: 2.0.6
106
111
  signing_key:
107
112
  specification_version: 4
108
- summary: Count source lines of files in xcode project.
113
+ summary: Util commands for xcode project.
109
114
  test_files: []