ebm 0.0.4 → 0.0.5

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
  SHA512:
3
- metadata.gz: bca2e2f71adac9af6d77828f81f82c682c9e2fce2c7d104ee3e90a7b24bf4ede0e37cad617038d4d7593fadd71ccb7f8e1f3970bc7ea9e0f44cc43e565f3d2bf
4
- data.tar.gz: b25a98e1e2a4f8f7f8887c321184e7c59c514b118bed2d2b550a7d15bf21d172bd0190a79c2ac6c4bcec6065e47c4af899b7d5f03026c5a9359527975bd16702
3
+ data.tar.gz: a5288eddde61f146b76a5323777a2ffa4d48e14e54b64abd01304015269d7dd9b287fc5c7517bbf5828fc9be16af6bddb19c020bab0940fefc3531963d7f7fa1
4
+ metadata.gz: e0a5b7cc6803014087c90cb96a2c4a7da188c2d394108be89b5fa47ea9d04febaf57cff2684deda96d9d0abd5fb66c759e6f8b1ec2b105c42f5030c69baaee23
5
5
  SHA1:
6
- metadata.gz: c89aa4c077150d65300a6e029b102fc252660cec
7
- data.tar.gz: 9942ef91186a68105d8b6baaade6bfca9c5518b1
6
+ data.tar.gz: 953745eaba17febc3998f2d7845c20e307333635
7
+ metadata.gz: 26c13b28d3cb2c0f80a7d48de48c7d8db95efe4d
@@ -30,6 +30,10 @@ module Commands
30
30
  def run(global_options)
31
31
  puts # add empty line
32
32
  # show contents of configs directory for files with .config extension
33
+ # try to make sure the repo is available
34
+ EbmSharedLib.prepare_config_repo
35
+ info = EbmSharedLib.read_repo_config(config_name)
36
+
33
37
  config_path = "#{EbmSharedLib::CONFIG_PATH}/configs"
34
38
  config_names = Pathname.glob("#{config_path}/*.config").map { |file_info|
35
39
  if file_info.directory? == false
@@ -47,12 +47,14 @@ module Commands
47
47
  {
48
48
  :branch => "iphone_3.1",
49
49
  :create_dev_branch => true,
50
- :git_path => "git@github.scm.corp.ebay.com:eBayMobile/ebaycore.git",
50
+ :git_path => "git@github.scm.corp.ebay.com:eBayMobile/ios_iphone_core.git",
51
+ :taggable => true,
51
52
  },
52
53
  {
53
- :branch => "iphone_3.1",
54
+ :branch => "nautilus_3.1",
54
55
  :create_dev_branch => true,
55
- :git_path => "git@github.scm.corp.ebay.com:eBayMobile/ios_common.git",
56
+ :git_path => "git@github.scm.corp.ebay.com:eBayMobile/ios_nautilus.git",
57
+ :taggable => true,
56
58
  },
57
59
  {
58
60
  :tag => "2.2.9",
@@ -71,7 +71,7 @@ module Commands
71
71
  end
72
72
 
73
73
  # extract the directory name that this repo ended up in
74
- repo_name = git_path.split("/").last.split(".git")[0]
74
+ repo_name = EbmSharedLib.get_repo_name(git_path)
75
75
  repo_path = "#{top_dir}/#{repo_name}"
76
76
 
77
77
  # now set up the remote tracking base branch if we have one
@@ -97,6 +97,12 @@ module Commands
97
97
  end
98
98
  end
99
99
 
100
+ # pull any submodules
101
+ cmd = "git submodule init && git submodule update"
102
+ if EbmSharedLib::CL.do_cmd_result(cmd, repo_path) != 0
103
+ raise "Cloning submodules in repo at #{git_path} failed."
104
+ end
105
+
100
106
  end
101
107
 
102
108
  def run(global_options)
@@ -106,15 +112,9 @@ module Commands
106
112
  config_name = options[:config]
107
113
  initials = options[:initials]
108
114
 
109
- config_path = "#{EbmSharedLib::CONFIG_PATH}/configs/#{config_name}#{EbmSharedLib::CONFIG_SUFFIX}"
110
-
111
- begin
112
- json = File.open(config_path, 'r') {|f| f.read }
113
- info = JSON.parse(json)
114
- info.recursively_symbolize_keys!
115
- rescue
116
- raise "Error opening config file JSON: #{config_path}"
117
- end
115
+ # try to make sure the repo is available
116
+ EbmSharedLib.prepare_config_repo
117
+ info = EbmSharedLib.read_repo_config(config_name)
118
118
 
119
119
  # Now that we have the json, prepare the world by creating a directory with the config name and placing
120
120
  # the various repos beneath that. The directory is created relative to the current directory.
@@ -0,0 +1,81 @@
1
+ #
2
+ # Greg Seitz
3
+ #
4
+ # Copyright 2013, eBay Inc.
5
+ # All rights reserved.
6
+ # http://www.ebay.com
7
+ #
8
+ module Commands
9
+ class Tag
10
+
11
+ # holds the options that were passed
12
+ # you can set any initial defaults here
13
+ def options
14
+ @options ||= {
15
+ }
16
+ end
17
+
18
+ # required options
19
+ def required_options
20
+ @required_options ||= Set.new [
21
+ :config,
22
+ :tag,
23
+ ]
24
+ end
25
+
26
+ def register(opts, global_options)
27
+ opts.banner = "Usage: tag [options]"
28
+ opts.description = "Apply or delete a tag for all taggable repos in a config"
29
+
30
+ opts.on('-c', "--config name", "Required - Name of the config we are preparing from.") do |v|
31
+ options[:config] = v
32
+ end
33
+
34
+ opts.on('-t', "--tag name", "Required - Name of the tag.") do |v|
35
+ options[:tag] = v
36
+ end
37
+
38
+ opts.on('-d', "--delete", "When set causes tag to be deleted.") do |v|
39
+ options[:delete] = v
40
+ end
41
+
42
+ end
43
+
44
+ def run(global_options)
45
+
46
+ # see if we can open the config file - we append the .config suffix
47
+ # the file is expected to be in JSON format
48
+ config_name = options[:config]
49
+ tag = options[:tag]
50
+ delete_tag = options[:delete]
51
+
52
+ # try to make sure the repo is available
53
+ EbmSharedLib.prepare_config_repo
54
+ info = EbmSharedLib.read_repo_config(config_name)
55
+
56
+ # other than prepare, any commands that work across the repos expect you to start
57
+ # in the containing directory (i.e. if your config is named iphone_3.1, you are expected
58
+ # to be in that directory when you run the command).
59
+ top_dir = "#{Dir.pwd}"
60
+
61
+ repos = info[:repos]
62
+ repos.each do |repo|
63
+ if repo[:taggable]
64
+ repo_name = EbmSharedLib.get_repo_name(repo[:git_path])
65
+ repo_path = "#{top_dir}/#{repo_name}"
66
+ if delete_tag == true
67
+ cmd = "git tag -d #{tag} && git push origin :refs/tags/#{tag}"
68
+ else
69
+ cmd = "git tag #{tag} && git push origin refs/tags/#{tag}"
70
+ end
71
+ if EbmSharedLib::CL.do_cmd_result(cmd, repo_path) != 0
72
+ raise "Tagging operation failed for #{repo_name}."
73
+ end
74
+
75
+ end
76
+ end
77
+
78
+ end
79
+
80
+ end
81
+ end
data/lib/commands.rb CHANGED
@@ -17,3 +17,4 @@ require "ebmsharedlib/utilities"
17
17
  require 'commands/prepare'
18
18
  require 'commands/list_configs'
19
19
  require 'commands/make_sample'
20
+ require 'commands/tag'
data/lib/ebm.rb CHANGED
@@ -46,12 +46,11 @@ class Ebm
46
46
  sub_commands[:prepare] = Commands::Prepare.new
47
47
  sub_commands[:list_configs] = Commands::ListConfigs.new
48
48
  sub_commands[:make_sample] = Commands::MakeSample.new
49
+ sub_commands[:tag] = Commands::Tag.new
49
50
  end
50
51
 
51
52
  def setup
52
53
  options.clear
53
- # try to make sure the repo is available
54
- EbmSharedLib.prepare_config_repo
55
54
  # global options
56
55
  global_options do |opts|
57
56
  opts.banner = "Version: #{Info.version} - Usage: #{CMD} [options] [subcommand [options]]"
@@ -58,6 +58,23 @@ module EbmSharedLib
58
58
 
59
59
  end
60
60
 
61
+ # read and return the config info for this repo
62
+ def self.read_repo_config(config_name)
63
+ config_path = "#{EbmSharedLib::CONFIG_PATH}/configs/#{config_name}#{EbmSharedLib::CONFIG_SUFFIX}"
64
+
65
+ begin
66
+ json = File.open(config_path, 'r') {|f| f.read }
67
+ info = JSON.parse(json)
68
+ info.recursively_symbolize_keys!
69
+ rescue
70
+ raise "Error opening config file JSON: #{config_path}"
71
+ end
72
+ end
73
+
74
+ def self.get_repo_name(git_path)
75
+ repo_name = git_path.split("/").last.split(".git")[0]
76
+ end
77
+
61
78
  def self.printer
62
79
  @printer ||= Printer.new
63
80
  end
data/lib/info.rb CHANGED
@@ -7,6 +7,6 @@
7
7
  #
8
8
  class Info
9
9
  def self.version
10
- "0.0.4"
10
+ "0.0.5"
11
11
  end
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ebm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Seitz
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2013-05-23 00:00:00 Z
12
+ date: 2013-05-24 00:00:00 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: subcommand
@@ -53,6 +53,7 @@ files:
53
53
  - lib/commands/list_configs.rb
54
54
  - lib/commands/make_sample.rb
55
55
  - lib/commands/prepare.rb
56
+ - lib/commands/tag.rb
56
57
  - lib/commands.rb
57
58
  - lib/ebm.rb
58
59
  - lib/ebmsharedlib/monkey_patches.rb