nucleon 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 966899ec9ca819e5cbfc37f589762d08ee4d37d0
4
- data.tar.gz: c39dc67b0a2ed70f0de66eac0b1caaccd452353c
3
+ metadata.gz: d10a46930f8caf3251ae8b76d41b6ab9b62d574e
4
+ data.tar.gz: 985081596d90a480a7ec1db3d632942d22b679af
5
5
  SHA512:
6
- metadata.gz: 4e20ea49274b90ba8f883ba9e8481ca9ba080678e3bf996b15a5abefb31d5d59b0b194e0f3c5db6b07be30ccba024d75d80f267ead918c049469c48b60c1c3fb
7
- data.tar.gz: 6b9ce73ba51a95c903969b80334c05a520746a23d6e4e06e59b2aa81f49d0c93ce607c48db87cfe4054b09093c1c927a174da92f833b3fed81668fa911933467
6
+ metadata.gz: 7955a1fd5c4816170b7aedcbcede162b309bccad724c47a8f502e213ebade046ad8f324283a60acbf2c190de5ff5bfe1018513ccae142aae6ff150582d6a7d0b
7
+ data.tar.gz: 57d13dce28164b20c48ea994df8c612021f76ad2e61b64a245a60b69188858c259f1c144545d5be6d3cde9f22700642916d23b7cefdbad54c5418894e6409eca
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.2.7
@@ -529,6 +529,8 @@ class Manager
529
529
  type_info = loaded_plugin(namespace, plugin_type, provider)
530
530
  options = translate_type(type_info, options)
531
531
  config = Config.ensure(options)
532
+
533
+ provider = config.get(:provider, provider)
532
534
  name = config.get(:name, nil)
533
535
  ensure_new = config.get(:new, false)
534
536
 
@@ -28,9 +28,9 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
28
28
  logger.info("Creating new project at #{directory} with #{provider}")
29
29
 
30
30
  return Nucleon.project(config.import({
31
- :name => directory,
32
- :directory => directory,
33
- :corl_file => config.get(:corl_file, true)
31
+ :name => directory,
32
+ :directory => directory,
33
+ :nucleon_file => config.get(:nucleon_file, true)
34
34
  }), provider)
35
35
 
36
36
  else
@@ -74,8 +74,14 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
74
74
  @cache = Util::Cache.new(directory, Nucleon.sha1(plugin_name), '.project_cache')
75
75
  init_cache
76
76
 
77
- if get(:corl_file, true) && ! self.class.load_provider(directory)
78
- self.class.store_provider(directory, plugin_provider)
77
+ if get(:nucleon_file, true) && ( get(:nucleon_resave, false) || self.class.load_project_info(directory).empty? )
78
+ self.class.store_project_info(directory, plugin_provider, Util::Data.subset(export, [
79
+ :provider,
80
+ :url,
81
+ :edit,
82
+ :revision,
83
+ :manage_ignore
84
+ ]))
79
85
  end
80
86
  end
81
87
  end
@@ -523,7 +529,7 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
523
529
  if add_project
524
530
  logger.debug("Directory #{project_path} is a valid sub project for this #{plugin_provider} project")
525
531
 
526
- project = myself.class.open(project_path, plugin_provider, { :corl_file => get(:corl_file, true) })
532
+ project = myself.class.open(project_path, plugin_provider, { :nucleon_file => get(:nucleon_file, true) })
527
533
 
528
534
  extension(:load_project, { :project => project })
529
535
  subprojects[path] = project
@@ -888,18 +894,18 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
888
894
  # State configurations
889
895
 
890
896
  def self.state_file
891
- '.corl'
897
+ '.nucleon'
892
898
  end
893
899
 
894
900
  #---
895
901
 
896
902
  @@project_data = {}
897
903
 
898
- def self.store_provider(directory, provider)
904
+ def self.store_project_info(directory, provider, options)
899
905
  if File.directory?(directory)
900
- @@project_data[directory] = {
906
+ @@project_data[directory] = Config.ensure(options).import({
901
907
  :provider => provider
902
- }
908
+ }).export
903
909
  json_data = Util::Data.to_json(@@project_data[directory], true)
904
910
  Util::Disk.write(File.join(directory, state_file), json_data)
905
911
  end
@@ -907,20 +913,20 @@ class Project < Nucleon.plugin_class(:nucleon, :base)
907
913
 
908
914
  #---
909
915
 
910
- def self.clear_provider(directory)
916
+ def self.clear_project_info(directory)
911
917
  @@project_data.delete(directory)
912
918
  end
913
919
 
914
920
  #---
915
921
 
916
- def self.load_provider(directory, override = nil)
922
+ def self.load_project_info(directory)
917
923
  @@project_data[directory] = {} unless @@project_data.has_key?(directory)
918
924
 
919
- if override.nil? && @@project_data[directory].empty?
925
+ if @@project_data[directory].empty?
920
926
  json_data = Util::Disk.read(File.join(directory, state_file))
921
927
  @@project_data[directory] = hash(Util::Data.parse_json(json_data)) if json_data
922
928
  end
923
- override.nil? ? symbol_map(@@project_data[directory])[:provider] : override
929
+ symbol_map(@@project_data[directory])
924
930
  end
925
931
 
926
932
  #-----------------------------------------------------------------------------
@@ -162,12 +162,12 @@ class SSH < Core
162
162
  :user_known_hosts_file => [ File.join(key_path, 'known_hosts'), File.join(key_path, 'known_hosts2') ],
163
163
  :auth_methods => [ 'publickey' ],
164
164
  :paranoid => :very
165
- }, {}, true, false).import(Util::Data.subset(config, config.keys - [ :keypair, :key_dir, :key_name ]))
165
+ }, {}, true, false).import(Util::Data.subset(config, config.keys - [ :keypair, :key_dir, :key_name, :reset_conn ]))
166
166
 
167
167
  if private_key
168
168
  auth_id = [ session_id, private_key ].join('_')
169
169
 
170
- if ! @@auth[auth_id] && keypair = unlock_private_key(private_key, config)
170
+ if (config[:reset_conn] || ! @@auth[auth_id]) && keypair = unlock_private_key(private_key, config)
171
171
  @@auth[auth_id] = keypair
172
172
  end
173
173
  config[:keypair] = @@auth[auth_id] # Reset so caller can access updated keypair
@@ -2,11 +2,12 @@
2
2
  module Nucleon
3
3
  module Extension
4
4
  class Project < Nucleon.plugin_class(:nucleon, :extension)
5
-
5
+
6
6
  def manager_plugin_provider(config)
7
7
  if config[:namespace] == :nucleon && config[:type] == :project
8
- if config[:directory] && provider = Nucleon::Plugin::Project.load_provider(config[:directory])
9
- return provider
8
+ if config[:directory]
9
+ project_info = Nucleon::Plugin::Project.load_project_info(config[:directory])
10
+ return project_info[:provider] unless project_info.empty?
10
11
  end
11
12
  end
12
13
  nil
@@ -6,79 +6,79 @@ nucleon_require(File.dirname(__FILE__), :git)
6
6
  module Nucleon
7
7
  module Project
8
8
  class Github < Git
9
-
9
+
10
10
  #-----------------------------------------------------------------------------
11
11
  # Project plugin interface
12
-
13
- def normalize(reload)
12
+
13
+ def normalize(reload)
14
14
  if reference = delete(:reference, nil)
15
15
  myself.plugin_name = normalize_reference(reference)
16
16
  else
17
17
  if url = get(:url, nil)
18
18
  myself.plugin_name = url
19
19
  set(:url, myself.class.expand_url(url, get(:ssh, false)))
20
- end
21
- end
20
+ end
21
+ end
22
22
  super
23
23
  end
24
-
24
+
25
25
  #---
26
-
26
+
27
27
  def set_connection
28
28
  require 'octokit'
29
-
29
+
30
30
  @client = Octokit::Client.new :netrc => true
31
31
  @client.login
32
32
  end
33
-
33
+
34
34
  #-----------------------------------------------------------------------------
35
35
  # Property accessor / modifiers
36
-
36
+
37
37
  def client
38
38
  set_connection unless @client
39
39
  @client
40
40
  end
41
-
41
+
42
42
  #-----------------------------------------------------------------------------
43
43
  # Project operations
44
-
44
+
45
45
  def init_auth
46
46
  super do
47
47
  external_ip = Nucleon.ip_address
48
48
  internal_ip = get(:internal_ip, nil)
49
-
49
+
50
50
  if internal_ip && internal_ip.to_s != external_ip
51
51
  location = "#{external_ip}[#{internal_ip}]"
52
52
  else
53
53
  location = external_ip
54
54
  end
55
-
55
+
56
56
  key_id = ENV['USER'] + '@' + location
57
57
  ssh_key = public_key_str
58
-
58
+
59
59
  if private_key && ssh_key
60
60
  deploy_keys = client.deploy_keys(plugin_name)
61
61
  github_id = nil
62
62
  keys_match = true
63
-
63
+
64
64
  deploy_keys.each do |key_resource|
65
65
  if key_resource.title == key_id
66
- github_id = key_resource.id
66
+ github_id = key_resource.id
67
67
  keys_match = false if key_resource.key != ssh_key
68
68
  break
69
- end
69
+ end
70
70
  end
71
-
71
+
72
72
  client.remove_deploy_key(myself.plugin_name, github_id) if github_id && ! keys_match
73
73
  client.add_deploy_key(myself.plugin_name, key_id, ssh_key)
74
74
  verify_key
75
75
  end
76
- end
76
+ end
77
77
  end
78
-
78
+
79
79
  #-----------------------------------------------------------------------------
80
80
  # Utilities
81
-
81
+
82
82
  def self.expand_url(path, editable = false)
83
83
  if path =~ /^[a-zA-Z0-9_\-\/]+$/
84
84
  if editable
@@ -92,19 +92,19 @@ class Github < Git
92
92
  else
93
93
  url = path
94
94
  end
95
- url
95
+ url
96
96
  end
97
-
97
+
98
98
  #---
99
-
99
+
100
100
  def verify_key
101
101
  Util::SSH.init_session('github.com', 'git', 22, private_key)
102
102
  Util::SSH.close('github.com', 'git')
103
103
  end
104
104
  protected :verify_key
105
-
105
+
106
106
  #---
107
-
107
+
108
108
  def normalize_reference(reference)
109
109
  reference.sub(/^(git\@|(https?|git)\:\/\/)[^\/\:]+(\/|\:)?/, '').sub(/\.git$/, '')
110
110
  end
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: nucleon 0.2.6 ruby lib
5
+ # stub: nucleon 0.2.7 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "nucleon"
9
- s.version = "0.2.6"
9
+ s.version = "0.2.7"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Adrian Webb"]
14
- s.date = "2015-01-18"
14
+ s.date = "2015-01-19"
15
15
  s.description = "\nA framework that provides a simple foundation for building Ruby applications that are:\n\n* Highly configurable (with both distributed and persistent configurations)\n* Extremely pluggable and extendable\n* Easily parallel\n\nNote: This framework is still very early in development!\n"
16
16
  s.email = "adrian.webb@coralnexus.com"
17
17
  s.executables = ["nucleon"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nucleon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adrian Webb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-18 00:00:00.000000000 Z
11
+ date: 2015-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: log4r