flow-cli 0.0.3 → 0.0.4

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: a2fa6031aa449ee4371cfa829a9935792127aa99
4
- data.tar.gz: 4ae2ae1777e0a4b18f3b37e4534a561bcbf831d2
3
+ metadata.gz: 39618a37200754a1da9175cdc5b385f5c98db0c4
4
+ data.tar.gz: 25601c88ee90747b4558c48b3e934df7beef8491
5
5
  SHA512:
6
- metadata.gz: d0ecd916f4dbb0a6c459d8270f0137de90d41e6f171edaa1aa33c14c59b9d62e31e1b02ab568eb943c3de5818ec814286d5c198e9cd9e944b4d4c0b3b6c3e983
7
- data.tar.gz: 5de248002899ab72f88af68ba13fda40a2ded7250ccfcc3bd7091d75ff15db68b31a56bf322e4b2532a62fbbfa434cedf1a67aa3a7acf83408b09add58b3a0d3
6
+ metadata.gz: 08aa0177b1bb2f3b327d39150458cd87e5e32779a82b4530f222e39d65bcae4dcc624b9c62cddccc3735dc4739e6529abd9efc6a5378979d7829ea6cac9985ad
7
+ data.tar.gz: e82b9396481f479325eeb1085d52b8ffdf75f4147b8d39f631667725b6bc3c802fcc65f282fdd28108fd142f4176385441775dabd08d939cb6063299ab6bf8f5
data/exe/flow-cli CHANGED
@@ -2,4 +2,8 @@
2
2
 
3
3
  require_relative '../lib/flow/cli'
4
4
 
5
+ begin
5
6
  Flow::Cli::CmdManager.start(ARGV)
7
+ rescue TTY::Prompt::Reader::InputInterrupt
8
+ puts "canceled..."
9
+ end
data/flow-cli.gemspec CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
32
32
  ****************************************************
33
33
  这是 flow.ci CLI 的早期版本,暂时只支持 ios 项目
34
34
 
35
+ 0.0.4 版本修正 在执行一些remote 指令,如果没登录,会报错的问题 另附增加 remote reset 指令
35
36
  0.0.3 版本新增 flow-cli remote 系列指令,支持传证书,传provisions 文件
36
37
 
37
38
  )
@@ -12,7 +12,6 @@ module Flow::Cli
12
12
  @error = @pastel.red.bold.detach
13
13
  @warning = @pastel.yellow.detach
14
14
  @db_manager = Utils::DbManager
15
- @api_manager = Utils::FlowApiManager.load_from_db
16
15
  end
17
16
 
18
17
  desc "remote ...ARGS", "manage flow ci"
@@ -1,18 +1,19 @@
1
1
  require 'yaml'
2
+ require 'byebug'
2
3
  require 'tty'
3
4
  require 'thor'
4
5
 
5
6
  module Flow::Cli
6
7
  module Commands
7
8
  class Remote < Thor
8
- def initialize(*args)
9
+ def initialize(*args, &proc)
9
10
  super(*args)
10
11
  @prompt = TTY::Prompt.new
11
12
  @pastel = Pastel.new
12
- @error = @pastel.red.bold.detach
13
- @warning = @pastel.yellow.detach
13
+ @warning = @pastel.yellow.detach
14
+ @error = @pastel.red.bold.detach
14
15
  @db_manager = Utils::DbManager
15
- @api_manager = Utils::FlowApiManager.load_from_db
16
+ @api_manager = Utils::FlowApiManager.load_from_db(&proc)
16
17
  end
17
18
 
18
19
  desc "login", "bind flow ci account to flow cli."
@@ -23,9 +24,15 @@ module Flow::Cli
23
24
  puts "login success"
24
25
  end
25
26
 
27
+ desc "reset", "reset flow api info data"
28
+ def reset
29
+ @db_manager.overide_save({})
30
+ puts "reset success..."
31
+ end
32
+
26
33
  desc "project_init", "set a project from flow ci to operation"
27
34
  def project_init
28
- projects = @api_manager.fetch_projects
35
+ projects = current_api_manager.fetch_projects
29
36
  begin
30
37
  file_origin = `git remote -v`.to_s.match("git.*.git").first
31
38
  rescue
@@ -39,7 +46,7 @@ module Flow::Cli
39
46
 
40
47
  @db_manager.save_attribute(:current_project_id, current_project_id)
41
48
 
42
- flows = @api_manager.fetch_flows(current_project_id)
49
+ flows = current_api_manager.fetch_flows(current_project_id)
43
50
 
44
51
  current_flow_id = if flows.count == 1
45
52
  flows.first[:id]
@@ -54,48 +61,69 @@ module Flow::Cli
54
61
 
55
62
  desc "upload_p12 FILE_PATH [p12 password]", "upload_p12"
56
63
  def upload_p12(file_path, password = nil)
64
+ choosed_project_check
57
65
  basename = File.basename file_path
58
66
  project_init unless @db_manager.read_attribute(:current_flow_id)
59
67
 
60
- api_p12s = @api_manager.load_p12s(@db_manager.read_attribute(:current_flow_id))
68
+ api_p12s = current_api_manager.load_p12s(@db_manager.read_attribute(:current_flow_id))
61
69
  old_p12 = api_p12s.find { |p12| p12[:filename] == basename }
62
70
  unless old_p12.nil?
63
71
  if @prompt.yes? "found a same name file, override?"
64
- @api_manager.delete_p12(old_p12[:id], @db_manager.read_attribute(:current_flow_id))
72
+ current_api_manager.delete_p12(old_p12[:id], @db_manager.read_attribute(:current_flow_id))
65
73
  else
66
74
  return puts "canceled.."
67
75
  end
68
76
  end
69
- @api_manager.upload_p12(@db_manager.read_attribute(:current_flow_id), file_path, password)
77
+ current_api_manager.upload_p12(@db_manager.read_attribute(:current_flow_id), file_path, password)
70
78
  puts "uploaded."
71
79
  end
72
80
 
73
81
  desc "list_p12s", "list_p12s"
74
82
  def list_p12s
75
- puts @api_manager.load_p12s(@db_manager.read_attribute(:current_flow_id))
83
+ choosed_project_check
84
+ puts current_api_manager.load_p12s(@db_manager.read_attribute(:current_flow_id))
76
85
  end
77
86
 
78
87
  desc "upload_provision", "upload_provision"
79
88
  def upload_provision(file_path)
89
+ choosed_project_check
80
90
  basename = File.basename file_path
81
91
  project_init unless @db_manager.read_attribute(:current_flow_id)
82
92
 
83
- api_provisions = @api_manager.load_provisions(@db_manager.read_attribute(:current_flow_id))
93
+ api_provisions = current_api_manager.load_provisions(@db_manager.read_attribute(:current_flow_id))
84
94
  old_provision = api_provisions.find { |provision| provision[:filename] == basename }
85
95
  unless old_provision.nil?
86
96
  if @prompt.yes? "found a same name file, override?"
87
- @api_manager.delete_provision(old_provision[:id], @db_manager.read_attribute(:current_flow_id))
97
+ current_api_manager.delete_provision(old_provision[:id], @db_manager.read_attribute(:current_flow_id))
88
98
  else
89
99
  return puts "canceled.."
90
100
  end
91
101
  end
92
- @api_manager.upload_provision(@db_manager.read_attribute(:current_flow_id), file_path)
102
+ current_api_manager.upload_provision(@db_manager.read_attribute(:current_flow_id), file_path)
93
103
  puts "uploaded."
94
104
  end
95
105
 
96
106
  desc "list_provisions", "list provisions"
97
107
  def list_provisions
98
- puts @api_manager.load_provisions(@db_manager.read_attribute(:current_flow_id))
108
+ choosed_project_check
109
+ puts current_api_manager.load_provisions(@db_manager.read_attribute(:current_flow_id))
110
+ end
111
+
112
+ no_commands do
113
+ private
114
+
115
+ def current_api_manager
116
+ return @current_api_manager unless @current_api_manager.nil?
117
+ @api_manager.refresh_login do
118
+ [@prompt.ask("email?"), @prompt.mask("password?")]
119
+ end
120
+ @current_api_manager = @api_manager
121
+ @current_api_manager
122
+ end
123
+
124
+ def choosed_project_check
125
+ project_init if @db_manager.read_attribute(:current_project_id).nil?
126
+ end
99
127
  end
100
128
  end
101
129
  end
@@ -10,4 +10,7 @@ module Flow::Cli
10
10
 
11
11
  class ParamsError < BaseException
12
12
  end
13
+
14
+ class FlowApiError < BaseException
15
+ end
13
16
  end
@@ -11,7 +11,10 @@ module Flow::Cli
11
11
  send "#{item}=", hash[item.to_s]
12
12
  end
13
13
  yield self if block_given?
14
- init_access_token if user_access_token.nil?
14
+ end
15
+
16
+ def fetch_user
17
+ send_to_api("get", "/user")
15
18
  end
16
19
 
17
20
  def fetch_orgs
@@ -27,7 +30,7 @@ module Flow::Cli
27
30
  end
28
31
 
29
32
  def fetch_project(project_id)
30
- send_to_api(:get, "/projects/#{project_id}")
33
+ send_to_apapi_manageri(:get, "/projects/#{project_id}")
31
34
  end
32
35
 
33
36
  def fetch_flows(project_id)
@@ -60,7 +63,7 @@ module Flow::Cli
60
63
  send_to_api(:get, "/flows/#{flow_id}/mobileprovisions")
61
64
  end
62
65
 
63
- def delete_provision(mobileprovisions_id,flow_id)
66
+ def delete_provision(mobileprovisions_id, flow_id)
64
67
  send_to_api(:delete, "/mobileprovisions/#{mobileprovisions_id}", flow_id: flow_id)
65
68
  end
66
69
 
@@ -85,6 +88,26 @@ module Flow::Cli
85
88
  self.user_access_token = answer[:access_token]
86
89
  end
87
90
 
91
+ def refresh_login(&proc)
92
+ fetch_user
93
+ rescue FlowApiError
94
+ puts "login fail, relogin..."
95
+ tmp_email = nil
96
+ tmp_password = nil
97
+ tmp_email, tmp_password = yield unless proc.nil?
98
+ self.email = tmp_email || email
99
+ self.password = tmp_password || password
100
+ login(email, password)
101
+ self
102
+ end
103
+
104
+ def login(email, password)
105
+ hash = self.class.login(email, password)
106
+ %i[email password user_access_token].each do |item|
107
+ send "#{item}=", hash[item]
108
+ end
109
+ end
110
+
88
111
  def standard_file(file)
89
112
  return File.open(file) if file.is_a?(String)
90
113
  file
@@ -93,12 +116,13 @@ module Flow::Cli
93
116
  class << self
94
117
  def login(email, password)
95
118
  dict = FlowApiRest.post("/login", login: email, password: password)
96
- DbManager.save(email: email, password: password)
97
- dict
119
+ DbManager.save(email: email, password: password, user_access_token: dict[:access_token])
120
+ { email: email, password: password, user_access_token: dict[:access_token] }
98
121
  end
99
122
 
100
123
  def load_from_db
101
- new(DbManager.read)
124
+ dict = DbManager.read
125
+ new(dict)
102
126
  end
103
127
  end
104
128
  end
@@ -11,7 +11,7 @@ module Flow::Cli
11
11
  alias_method "#{method}_old", method
12
12
  define_method method do |*args, &blk|
13
13
  ret = __send__ "#{method}_old", *args, &blk
14
- raise "response_body = #{ret[:response_body]}" if ret.is_a?(Hash) && ret[:status] == false
14
+ raise FlowApiError, "response_body = #{ret[:response_body]}" if ret.is_a?(Hash) && ret[:status] == false
15
15
  ret
16
16
  end
17
17
  end
@@ -1,5 +1,5 @@
1
1
  module Flow
2
2
  module Cli
3
- VERSION = "0.0.3".freeze
3
+ VERSION = "0.0.4".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flow-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - atpking
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-13 00:00:00.000000000 Z
11
+ date: 2017-05-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -210,7 +210,8 @@ post_install_message: "\n _____ _ _____ ______ ___ ____ _ ___
210
210
  \\ /\\ / / | | | | | | | | |\n | _| | |__| |_| |\\ V V /| |___ | | |
211
211
  |___| |___ | |\n |_| |_____\\___/ \\_/\\_/(_)____|___| \\____|_____|___|\n\n
212
212
  ****************************************************\n 这是 flow.ci CLI 的早期版本,暂时只支持
213
- ios 项目\n\n0.0.3 版本新增 flow-cli remote 系列指令,支持传证书,传provisions 文件\n\n "
213
+ ios 项目\n\n0.0.4 版本修正 在执行一些remote 指令,如果没登录,会报错的问题 另附增加 remote reset 指令\n0.0.3 版本新增
214
+ flow-cli remote 系列指令,支持传证书,传provisions 文件\n\n "
214
215
  rdoc_options: []
215
216
  require_paths:
216
217
  - lib