Sha256: 0a01c5798f2005a7d75c2254d86a892a24b001831e65b91dd4f06ba2fbf16411

Contents?: true

Size: 1.91 KB

Versions: 38

Compression:

Stored size: 1.91 KB

Contents

require 'json'
require 'rake'
#require 'dev_git'
#require 'dev_svn'
#require 'dev_msbuild'
#require 'dev_environment'

class Projects < Hash
	attr_accessor :filename

	def initialize
		@filename=''
	end

    def update
    	self.each{|k,v|
    		self[k]=Project.new(v) if(v.is_a?(String))
    		self[k]=Project.new(v) if(!v.is_a?(Project) && v.is_a?(Hash))
    		self[k][:name]=k
    		#self[k].update if self[k].respond_to?("update".to_sym)
    	}
    end

	def save filename=''
		@filename=filename if !filename.nil? && filename.length > 0
		File.open(@filename,'w'){|f|f.write(JSON.pretty_generate(self))} if @filename.length > 0
	end

	def open filename=''
		@filename=filename if filename.length > 0
		JSON.parse(IO.read(@filename)).each{|k,v| self[k]=v}
		update
	end

	def self.user_projects_filename
		FileUtils.mkdir("#{Environment.dev_root}/data") if(!File.exists?("#{Environment.dev_root}/data"))
		"#{Environment.dev_root}/data/PROJECTS.json"
	end

	def self.current
		project=nil
		url=Git.remote_origin
		url=Svn.url if url.length==0
		if(Rake.application.original_dir.include?('/wrk/') &&
			   url.length > 0)
			project=Project.new(url)
			name=Rake.application.original_dir.gsub("#{Environment.dev_root}/wrk/",'')
			project[:name] = name if(name.length>0 && !name.include?(Environment.dev_root))
			if(defined?(PROJECTS))
				PROJECTS[name]=project if(!PROJECTS.has_key?(name))
				project.each{|k,v|PROJECTS[name][k]=v}
				PROJECTS.save
			else
				project[:name]=name
			end
		end			
		project
	end

	def pull
		self.each{|k,v| v.pull if v.respond_to?("pull".to_sym)}
	end
	def rake
		self.each{|k,v| v.rake if v.respond_to?("rake".to_sym)}
	end
end

PROJECTS=Projects.new
PROJECTS.open Projects.user_projects_filename if File.exists? Projects.user_projects_filename
PROJECTS.save Projects.user_projects_filename if !File.exists? Projects.user_projects_filename

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
dev-2.0.139 lib/projects.rb
dev-2.0.138 lib/projects.rb
dev-2.0.137 lib/projects.rb
dev-2.0.136 lib/projects.rb
dev-2.0.135 lib/projects.rb
dev-2.0.134 lib/projects.rb
dev-2.0.133 lib/projects.rb
dev-2.0.132 lib/projects.rb
dev-2.0.131 lib/projects.rb
dev-2.0.130 lib/projects.rb
dev-2.0.129 lib/projects.rb
dev-2.0.128 lib/projects.rb
dev-2.0.127 lib/projects.rb
dev-2.0.126 lib/projects.rb
dev-2.0.124 lib/projects.rb
dev-2.0.123 lib/projects.rb
dev-2.0.122 lib/projects.rb
dev-2.0.121 lib/projects.rb
dev-2.0.119 lib/projects.rb
dev-2.0.118 lib/projects.rb