Class: Dev::Project

Inherits:
Hash
  • Object
show all
Defined in:
lib/dev/Project.rb

Instance Method Summary collapse

Methods inherited from Hash

get_hash_value, #get_value, print_hash, set_hash_value, #set_value, #strip_auto_entries

Constructor Details

#initializeProject

Returns a new instance of Project.



8
9
10
11
12
# File 'lib/dev/Project.rb', line 8

def initialize
  defaults.each { |name,value| self[name]=value }
  db = Dev::Database.new
  db.set_branch_uri(self[:fullname],self[:scm_uri])
end

Instance Method Details

#contextObject



121
122
123
# File 'lib/dev/Project.rb', line 121

def context
  Dev::Environment.user + "." + Dev::Environment.machine
end

#defaultsObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dev/Project.rb', line 14

def defaults
  system_call = Dev::SystemCall.new("semver init") if(!File.exist?(".semver"))  
  h=Hash.new
  h[:scm_uri] = get_default_scm_uri if !get_default_scm_uri.nil?
  h[:scm_type] = get_default_scm_type if !get_default_scm_type.nil?
  h[:directory]=Rake.original_dir()
  h[:fullname]=get_default_value_fullname
  h[:group]=get_default_value_group
  h[:name]=get_default_value_name
  h[:version]= "#{SemVer.find.major}.#{SemVer.find.minor}.#{SemVer.find.patch}"
  h[:src_glob]="**/{*.{rb,feature,spec,cs,c,m,cpp,cxx,h,hpp,i,jam,csproj,vcproj,snk,vcxproj,xcodeproj,plist,xib,sln,filters,xaml,xml,resx,settings,txt,png,bmp,ico},Jamfile,.semver,Gemfile,README,LICENSE}"
  h[:src_glob]="**/{*.{rb,feature,spec,cs,c,m,cpp,cxx,h,hpp,i,jam,csproj,vcproj,snk,vcxproj,xcodeproj,plist,pch,strings,storyboard,xib,sln,filters,xaml,xml,resx,settings,txt,png,bmp,ico},Jamfile,.semver,Gemfile,README,LICENSE}" if RUBY_PLATFORM.include?("darwin")
  h[:type]=get_default_value_type
  h[:dev_root]= "#{Dev::Environment.dev_root}"
  if !Dev::BoostBuild.defaultToolset.nil?
 h[:toolset] = Dev::BoostBuild.defaultToolset 
 ENV["VisualStudioVersion"]="11.0" if h[:toolset]=="msvc-11.0"
  end
  
  h[:file_count]=Hash.new
  ["rb","spec","feature","cs","cpp","h","hpp","vcxproj","csproj"].each{ |ext|
 count=Dir.glob("**/*.#{ext}").count
 h[:file_count][ext.to_sym]=count if count > 0
  }

  h[:paths] = Dev::Paths.new
  h[:dep]=Deps.new
  return h
end

#get_default_scm_typeObject



81
82
83
84
85
# File 'lib/dev/Project.rb', line 81

def get_default_scm_type
  return "svn" if File.exists?(".svn")
  return "git" if File.exists?(".git")
  return nil
end

#get_default_scm_uriObject



87
88
89
90
91
92
93
94
95
96
# File 'lib/dev/Project.rb', line 87

def get_default_scm_uri

  if File.exists?(".svn")
 text=`svn info`
 text.scan(/URL: ([\w:\/.-]+)/).each { |m|
   return m
 }
  end
  return nil
end

#get_default_value_fullnameObject



58
59
60
61
62
63
64
65
# File 'lib/dev/Project.rb', line 58

def get_default_value_fullname
  wrk="#{Dev::Environment.dev_root}/wrk/"
  if(Rake.original_dir.include?(wrk))
 name=Rake.original_dir.gsub(wrk,"")
 return name if(name.split('/').count==3)
  end
  nil
end

#get_default_value_groupObject



67
68
69
70
71
# File 'lib/dev/Project.rb', line 67

def get_default_value_group
  dirs=Rake.original_dir().split('/')
  return dirs[dirs.length-3] if(dirs.length > 3)
  return "unknown"
end

#get_default_value_nameObject



52
53
54
55
56
# File 'lib/dev/Project.rb', line 52

def get_default_value_name
  dirs=::Rake.original_dir().split('/')
  return dirs[dirs.length-2] if(dirs.length > 3)
  return nil
end

#get_default_value_typeObject



73
74
75
76
77
78
79
# File 'lib/dev/Project.rb', line 73

def get_default_value_type
  Dir.glob("**/*.{cpp,hpp}").each { |f| return "c++" }
  Dir.glob("**/*.{c,h}").each { |f| return "c" }
  Dir.glob("**/*.{cs}").each { |f| return "C#" }
  Dir.glob("**/*.{gemspec}").each { |f| return "gem" }
  return "ruby"
end

#locObject



106
107
108
# File 'lib/dev/Project.rb', line 106

def loc
  system(loc_cmd)
end

#loc_cmdObject



98
99
100
101
102
103
104
# File 'lib/dev/Project.rb', line 98

def loc_cmd
  cmd="countloc --recurse ."
  cmd="countloc --recurse --mode ruby ." if self[:type]=="ruby" || self[:type]=="gem"
  cmd="countloc --recurse --mode csharp ." if self[:type]=="C#"
  cmd="countloc --recurse --mode cpp ." if self[:type]=="c++"
  return cmd
end

#loc_totalObject



110
111
112
113
114
115
116
117
118
119
# File 'lib/dev/Project.rb', line 110

def loc_total
  # parse the output for TOTAL LOC

  call=Dev::SystemCall.new(loc_cmd)
  words=Array.new
  words=call.output.split if !call.nil? && !call.output.nil?
  if(words.length>6)
    return words[words.length-6]
  end
  "?"
end

#refreshObject



44
45
46
47
48
49
50
# File 'lib/dev/Project.rb', line 44

def refresh
  puts_debug "Dev::Project.refresh"
  self[:dep].refresh
  #update_default_values

  #db = Dev::Database.new

  #db.set_branch_uri(self[:fullname],self[:scm_uri])

end

#stamp_task(name) ⇒ Object



125
126
127
# File 'lib/dev/Project.rb', line 125

def stamp_task(name)
  File.open("#{name}.taskstamp." + context,"w") { |f| f.write(Time.now.to_s) }
end