p4ruby 2017.1.1699426 → 2021.1.2156749
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/LICENSE.txt +451 -20
- data/README.md +3 -879
- data/ext/P4/clientprogressruby.cpp +0 -1
- data/ext/P4/clientuserruby.cpp +155 -0
- data/ext/P4/clientuserruby.h +44 -0
- data/ext/P4/extconf.rb +69 -13
- data/ext/P4/p4.cpp +84 -9
- data/ext/P4/p4clientapi.cpp +64 -6
- data/ext/P4/p4clientapi.h +11 -2
- data/ext/P4/p4result.cpp +1 -0
- data/ext/P4/p4specdata.cpp +29 -0
- data/ext/P4/p4specdata.h +2 -0
- data/ext/P4/specmgr.cpp +63 -89
- data/lib/P4.rb +1 -1
- data/lib/P4/version.rb +3 -3
- metadata +11 -11
data/ext/P4/clientuserruby.cpp
CHANGED
@@ -38,6 +38,7 @@
|
|
38
38
|
#include <ruby.h>
|
39
39
|
#include "undefdups.h"
|
40
40
|
#include <p4/clientapi.h>
|
41
|
+
#include <p4/strtable.h>
|
41
42
|
#include <p4/clientprog.h>
|
42
43
|
#include <p4/spec.h>
|
43
44
|
#include <p4/diff.h>
|
@@ -77,6 +78,7 @@ ClientUserRuby::ClientUserRuby(SpecMgr *s) {
|
|
77
78
|
rubyExcept = 0;
|
78
79
|
alive = 1;
|
79
80
|
track = false;
|
81
|
+
SetSSOHandler( ssoHandler = new P4ClientSSO( s ) );
|
80
82
|
|
81
83
|
ID idP4 = rb_intern("P4");
|
82
84
|
ID idP4OH = rb_intern("OutputHandler");
|
@@ -723,4 +725,157 @@ void ClientUserRuby::GCMark() {
|
|
723
725
|
rb_gc_mark( cProgress );
|
724
726
|
|
725
727
|
results.GCMark();
|
728
|
+
ssoHandler->GCMark();
|
726
729
|
}
|
730
|
+
|
731
|
+
//
|
732
|
+
// SSO handler
|
733
|
+
//
|
734
|
+
|
735
|
+
P4ClientSSO::P4ClientSSO( SpecMgr *s )
|
736
|
+
{
|
737
|
+
specMgr = s;
|
738
|
+
resultSet = 0;
|
739
|
+
ssoEnabled = 0;
|
740
|
+
result = Qnil;
|
741
|
+
}
|
742
|
+
|
743
|
+
ClientSSOStatus
|
744
|
+
P4ClientSSO::Authorize( StrDict &vars, int maxLength, StrBuf &strbuf )
|
745
|
+
{
|
746
|
+
ssoVars.Clear();
|
747
|
+
|
748
|
+
if( !ssoEnabled )
|
749
|
+
return CSS_SKIP;
|
750
|
+
|
751
|
+
if( ssoEnabled < 0 )
|
752
|
+
return CSS_UNSET;
|
753
|
+
|
754
|
+
if( resultSet )
|
755
|
+
{
|
756
|
+
strbuf.Clear();
|
757
|
+
VALUE resval = result;
|
758
|
+
|
759
|
+
//if( P4RDB_CALLS )
|
760
|
+
// std::cerr << "[P4] ClientSSO::Authorize(). Using supplied input"
|
761
|
+
// << std::endl;
|
762
|
+
|
763
|
+
if (Qtrue == rb_obj_is_kind_of(result, rb_cArray)) {
|
764
|
+
resval = rb_ary_shift(result);
|
765
|
+
}
|
766
|
+
|
767
|
+
if( resval != Qnil ) {
|
768
|
+
// Convert whatever's left into a string
|
769
|
+
ID to_s = rb_intern("to_s");
|
770
|
+
VALUE str = rb_funcall(resval, to_s, 0);
|
771
|
+
strbuf.Set(StringValuePtr(str));
|
772
|
+
}
|
773
|
+
|
774
|
+
return resultSet == 2 ? CSS_FAIL
|
775
|
+
: CSS_PASS;
|
776
|
+
}
|
777
|
+
|
778
|
+
ssoVars.CopyVars( vars );
|
779
|
+
return CSS_EXIT;
|
780
|
+
}
|
781
|
+
|
782
|
+
VALUE
|
783
|
+
P4ClientSSO::EnableSSO( VALUE e )
|
784
|
+
{
|
785
|
+
if( e == Qnil )
|
786
|
+
{
|
787
|
+
ssoEnabled = 0;
|
788
|
+
return Qtrue;
|
789
|
+
}
|
790
|
+
|
791
|
+
if( e == Qtrue )
|
792
|
+
{
|
793
|
+
ssoEnabled = 1;
|
794
|
+
return Qtrue;
|
795
|
+
}
|
796
|
+
|
797
|
+
if( e == Qfalse )
|
798
|
+
{
|
799
|
+
ssoEnabled = -1;
|
800
|
+
return Qtrue;
|
801
|
+
}
|
802
|
+
|
803
|
+
return Qfalse;
|
804
|
+
}
|
805
|
+
|
806
|
+
VALUE
|
807
|
+
P4ClientSSO::SSOEnabled()
|
808
|
+
{
|
809
|
+
if( ssoEnabled == 1 )
|
810
|
+
{
|
811
|
+
return Qtrue;
|
812
|
+
}
|
813
|
+
else if( ssoEnabled == -1 )
|
814
|
+
{
|
815
|
+
return Qfalse;
|
816
|
+
}
|
817
|
+
else
|
818
|
+
{
|
819
|
+
return Qnil;
|
820
|
+
}
|
821
|
+
}
|
822
|
+
|
823
|
+
VALUE
|
824
|
+
P4ClientSSO::SetPassResult( VALUE i )
|
825
|
+
{
|
826
|
+
resultSet = 1;
|
827
|
+
return SetResult( i );
|
828
|
+
}
|
829
|
+
|
830
|
+
VALUE
|
831
|
+
P4ClientSSO::GetPassResult()
|
832
|
+
{
|
833
|
+
if( resultSet == 1 )
|
834
|
+
{
|
835
|
+
return result;
|
836
|
+
}
|
837
|
+
else
|
838
|
+
{
|
839
|
+
return Qnil;
|
840
|
+
}
|
841
|
+
}
|
842
|
+
|
843
|
+
VALUE
|
844
|
+
P4ClientSSO::SetFailResult( VALUE i )
|
845
|
+
{
|
846
|
+
resultSet = 2;
|
847
|
+
return SetResult( i );
|
848
|
+
}
|
849
|
+
|
850
|
+
VALUE
|
851
|
+
P4ClientSSO::GetFailResult()
|
852
|
+
{
|
853
|
+
if( resultSet == 2 )
|
854
|
+
{
|
855
|
+
return result;
|
856
|
+
}
|
857
|
+
else
|
858
|
+
{
|
859
|
+
return Qnil;
|
860
|
+
}
|
861
|
+
}
|
862
|
+
|
863
|
+
VALUE
|
864
|
+
P4ClientSSO::SetResult( VALUE i )
|
865
|
+
{
|
866
|
+
//if (P4RDB_CALLS) fprintf(stderr, "[P4] P4ClientSSO::SetResult()\n");
|
867
|
+
|
868
|
+
result = i;
|
869
|
+
return Qtrue;
|
870
|
+
}
|
871
|
+
|
872
|
+
VALUE
|
873
|
+
P4ClientSSO::GetSSOVars()
|
874
|
+
{
|
875
|
+
return specMgr->StrDictToHash( &ssoVars );
|
876
|
+
}
|
877
|
+
|
878
|
+
void
|
879
|
+
P4ClientSSO::GCMark() {
|
880
|
+
if (result != Qnil) rb_gc_mark( result );
|
881
|
+
}
|
data/ext/P4/clientuserruby.h
CHANGED
@@ -42,6 +42,39 @@
|
|
42
42
|
class SpecMgr;
|
43
43
|
class ClientProgress;
|
44
44
|
|
45
|
+
class P4ClientSSO : public ClientSSO
|
46
|
+
{
|
47
|
+
public:
|
48
|
+
P4ClientSSO( SpecMgr *s );
|
49
|
+
|
50
|
+
// Client SSO methods overridden here
|
51
|
+
virtual ClientSSOStatus Authorize( StrDict &vars, int maxLength,
|
52
|
+
StrBuf &result );
|
53
|
+
|
54
|
+
// Local methods
|
55
|
+
VALUE EnableSSO( VALUE e );
|
56
|
+
VALUE SSOEnabled();
|
57
|
+
VALUE SetPassResult( VALUE i );
|
58
|
+
VALUE GetPassResult();
|
59
|
+
VALUE SetFailResult( VALUE i );
|
60
|
+
VALUE GetFailResult();
|
61
|
+
VALUE GetSSOVars();
|
62
|
+
|
63
|
+
void GCMark();
|
64
|
+
|
65
|
+
private:
|
66
|
+
|
67
|
+
VALUE SetResult( VALUE i );
|
68
|
+
|
69
|
+
int ssoEnabled;
|
70
|
+
int resultSet;
|
71
|
+
|
72
|
+
StrBufDict ssoVars;
|
73
|
+
SpecMgr * specMgr;
|
74
|
+
|
75
|
+
VALUE result;
|
76
|
+
};
|
77
|
+
|
45
78
|
class ClientUserRuby: public ClientUser, public KeepAlive {
|
46
79
|
public:
|
47
80
|
ClientUserRuby(SpecMgr *s);
|
@@ -101,6 +134,16 @@ public:
|
|
101
134
|
return progress;
|
102
135
|
}
|
103
136
|
|
137
|
+
// SSO handler support
|
138
|
+
|
139
|
+
VALUE EnableSSO( VALUE e ) { return ssoHandler->EnableSSO( e ); }
|
140
|
+
VALUE SSOEnabled() { return ssoHandler->SSOEnabled(); }
|
141
|
+
VALUE SetSSOPassResult( VALUE i ) { return ssoHandler->SetPassResult( i ); }
|
142
|
+
VALUE GetSSOPassResult(){ return ssoHandler->GetPassResult();}
|
143
|
+
VALUE SetSSOFailResult( VALUE i ) { return ssoHandler->SetFailResult( i ); }
|
144
|
+
VALUE GetSSOFailResult(){ return ssoHandler->GetFailResult();}
|
145
|
+
VALUE GetSSOVars() { return ssoHandler->GetSSOVars(); }
|
146
|
+
|
104
147
|
// override from KeepAlive
|
105
148
|
virtual int IsAlive() {
|
106
149
|
return alive;
|
@@ -129,5 +172,6 @@ private:
|
|
129
172
|
int alive;
|
130
173
|
int rubyExcept;
|
131
174
|
bool track;
|
175
|
+
P4ClientSSO * ssoHandler;
|
132
176
|
};
|
133
177
|
|
data/ext/P4/extconf.rb
CHANGED
@@ -6,10 +6,19 @@ require 'mkmf'
|
|
6
6
|
require 'net/ftp'
|
7
7
|
require 'P4/version'
|
8
8
|
require 'rbconfig'
|
9
|
+
require 'openssl'
|
9
10
|
|
10
11
|
# Set this to the main version directory we look up in ftp.perforce.com for the P4API
|
11
12
|
# This is ignored if you specify the version on the command line.
|
12
|
-
|
13
|
+
# Changed the hardcoded string so that the version is now derived from version.rb file
|
14
|
+
#P4API_VERSION_DIR = 'r19.1'
|
15
|
+
def p4api_version_dir
|
16
|
+
ver=P4::Version.split(".")
|
17
|
+
p4_major = ver[0].chars.last(2).join
|
18
|
+
p4_minor = ver[1]
|
19
|
+
dir = "r" + p4_major + "." + p4_minor
|
20
|
+
end
|
21
|
+
|
13
22
|
|
14
23
|
#==============================================================================
|
15
24
|
# Provide platform variables in P4-specific format
|
@@ -102,6 +111,15 @@ def calculate_p4osver
|
|
102
111
|
return ver
|
103
112
|
end
|
104
113
|
|
114
|
+
def gcc
|
115
|
+
@gcc ||= calculate_gcc
|
116
|
+
end
|
117
|
+
|
118
|
+
def calculate_gcc
|
119
|
+
gcc = RbConfig::CONFIG["GCC"]
|
120
|
+
return gcc
|
121
|
+
end
|
122
|
+
|
105
123
|
def uname_platform
|
106
124
|
@uname_platform ||= calculate_uname_platform
|
107
125
|
end
|
@@ -155,6 +173,13 @@ def set_platform_opts
|
|
155
173
|
end
|
156
174
|
end
|
157
175
|
|
176
|
+
def set_platform_cxxflags
|
177
|
+
if (p4osname == 'LINUX') && (gcc == 'yes')
|
178
|
+
$CXXFLAGS += " -std=c++11 "
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
|
158
183
|
def set_platform_cppflags
|
159
184
|
$CPPFLAGS += "-DOS_#{p4osname} "
|
160
185
|
$CPPFLAGS += "-DOS_#{p4osname}#{p4osver} "
|
@@ -214,6 +239,7 @@ def set_platform_libs
|
|
214
239
|
$LDFLAGS += ' -framework CoreFoundation -framework Foundation'
|
215
240
|
end
|
216
241
|
when 'LINUX', 'MINGW32'
|
242
|
+
$LDFLAGS += ' -Wl,--allow-multiple-definition'
|
217
243
|
have_library('supc++')
|
218
244
|
end
|
219
245
|
end
|
@@ -399,6 +425,8 @@ def p4_cpu(os)
|
|
399
425
|
when :darwin, :linux
|
400
426
|
if cpu =~ /i686/
|
401
427
|
'x86'
|
428
|
+
elsif cpu =~ /universal/
|
429
|
+
'x86_64'
|
402
430
|
else
|
403
431
|
cpu
|
404
432
|
end
|
@@ -425,7 +453,9 @@ def p4_platform_label
|
|
425
453
|
else
|
426
454
|
'mingwx86'
|
427
455
|
end
|
428
|
-
when /darwin/
|
456
|
+
when /darwin19|darwin[2-9][0-9]/
|
457
|
+
"macosx1015#{p4_cpu(:darwin)}"
|
458
|
+
when /darwin/
|
429
459
|
"darwin90#{p4_cpu(:darwin)}"
|
430
460
|
when /solaris/
|
431
461
|
"solaris10#{p4_cpu(:solaris)}"
|
@@ -445,13 +475,36 @@ def ftp_download_dir(version)
|
|
445
475
|
end
|
446
476
|
|
447
477
|
def filename
|
478
|
+
openssl_number = OpenSSL::OPENSSL_VERSION.split(' ')[1].to_s
|
479
|
+
openssl_number = openssl_number.slice(0, (openssl_number.rindex('.')))
|
480
|
+
|
448
481
|
if RbConfig::CONFIG['target_os'].downcase =~ /nt|mswin|mingw/
|
449
|
-
'p4api.zip'
|
482
|
+
filename = 'p4api.zip'
|
483
|
+
if !openssl_number.to_s.empty?
|
484
|
+
case openssl_number.to_s
|
485
|
+
when /1.1/
|
486
|
+
filename = 'p4api-openssl1.1.1.zip'
|
487
|
+
when /1.0/
|
488
|
+
filename = 'p4api-openssl1.0.2.zip'
|
489
|
+
end
|
490
|
+
end
|
491
|
+
elsif RbConfig::CONFIG['target_os'].downcase =~ /darwin19|darwin[2-9][0-9]/
|
492
|
+
filename = 'p4api-openssl1.1.1.tgz'
|
450
493
|
else
|
451
|
-
'p4api.tgz'
|
494
|
+
filename = 'p4api.tgz'
|
495
|
+
if !openssl_number.to_s.empty?
|
496
|
+
case openssl_number.to_s
|
497
|
+
when /1.1/
|
498
|
+
filename = 'p4api-glibc2.3-openssl1.1.1.tgz'
|
499
|
+
when /1.0/
|
500
|
+
filename = 'p4api-glibc2.3-openssl1.0.2.tgz'
|
501
|
+
end
|
502
|
+
end
|
452
503
|
end
|
504
|
+
return filename
|
453
505
|
end
|
454
506
|
|
507
|
+
|
455
508
|
def remote_files_matching(ftp, dir, regex)
|
456
509
|
ftp.ls(dir.to_s).map { |entry|
|
457
510
|
if match = entry.match(regex)
|
@@ -499,9 +552,8 @@ def download_api_via_ftp
|
|
499
552
|
# At one point, we allowed the gem build to just find the most recent p4api build.
|
500
553
|
# P4Ruby probably shouldn't do that by default.
|
501
554
|
#version_dir = find_latest_version_dir(ftp)
|
502
|
-
version_dir = P4API_VERSION_DIR
|
503
555
|
|
504
|
-
dir = ftp_download_dir(
|
556
|
+
dir = ftp_download_dir(p4api_version_dir)
|
505
557
|
ftp.chdir(dir)
|
506
558
|
|
507
559
|
puts "downloading #{filename} from #{dir} on ftp.perforce.com"
|
@@ -536,9 +588,11 @@ set_platform_opts
|
|
536
588
|
# based solely on platform detection.
|
537
589
|
set_platform_cppflags
|
538
590
|
set_platform_cflags
|
591
|
+
set_platform_cxxflags
|
539
592
|
|
540
593
|
puts "$CPPFLAGS #{$CPPFLAGS}"
|
541
594
|
puts "$CFLAGS #{$CFLAGS}"
|
595
|
+
puts "$CXXFLAGS #{$CXXFLAGS}"
|
542
596
|
|
543
597
|
# Setup additional system library definitions based on platform type before
|
544
598
|
# we setup other libraries, in order to preserve linking order
|
@@ -554,15 +608,17 @@ resolve_ssl_dirs
|
|
554
608
|
# If we happen to need SSL on Windows, we also need gdi32
|
555
609
|
if RbConfig::CONFIG['target_os'].downcase =~ /mingw/
|
556
610
|
have_library('gdi32') or raise
|
611
|
+
have_library('ole32') or raise
|
612
|
+
have_library('crypt32') or raise
|
557
613
|
end
|
558
614
|
|
559
|
-
|
560
|
-
|
561
|
-
unless do_ssl
|
562
|
-
have_library('p4sslstub') or raise
|
563
|
-
end
|
564
|
-
|
615
|
+
have_library('crypto') or raise
|
616
|
+
have_library('ssl') or raise
|
565
617
|
have_library('supp') or raise
|
618
|
+
have_library('p4script_sqlite') or raise
|
619
|
+
have_library('p4script_curl') or raise
|
620
|
+
have_library('p4script') or raise
|
621
|
+
have_library('p4script_c') or raise
|
566
622
|
have_library('rpc') or raise
|
567
623
|
have_library('client') or raise
|
568
624
|
|
@@ -577,4 +633,4 @@ create_p4rubyconf_header(version_info, $libs)
|
|
577
633
|
# don't believe we need to rely on actually.
|
578
634
|
create_header
|
579
635
|
|
580
|
-
create_makefile('P4')
|
636
|
+
create_makefile('P4')
|
data/ext/P4/p4.cpp
CHANGED
@@ -314,6 +314,25 @@ static VALUE p4_set_enviro_file( VALUE self, VALUE rbstr )
|
|
314
314
|
return Qtrue;
|
315
315
|
}
|
316
316
|
|
317
|
+
static VALUE p4_get_evar( VALUE self, VALUE var )
|
318
|
+
{
|
319
|
+
P4ClientApi *p4;
|
320
|
+
const StrPtr *val;
|
321
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
322
|
+
val = p4->GetEVar( StringValuePtr( var ) );
|
323
|
+
if( !val ) return Qnil;
|
324
|
+
|
325
|
+
return P4Utils::ruby_string( val->Text() );
|
326
|
+
}
|
327
|
+
|
328
|
+
static VALUE p4_set_evar( VALUE self, VALUE var, VALUE val )
|
329
|
+
{
|
330
|
+
P4ClientApi *p4;
|
331
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
332
|
+
p4->SetEVar( StringValuePtr( var ), StringValuePtr( val ) );
|
333
|
+
return Qtrue;
|
334
|
+
}
|
335
|
+
|
317
336
|
static VALUE p4_get_host( VALUE self )
|
318
337
|
{
|
319
338
|
P4ClientApi *p4;
|
@@ -642,7 +661,7 @@ static VALUE p4_run( VALUE self, VALUE args )
|
|
642
661
|
|
643
662
|
// Allocate storage on the stack so it's automatically reclaimed
|
644
663
|
// when we exit.
|
645
|
-
char **p4args =
|
664
|
+
char **p4args = RB_ALLOC_N( char *, argc + 1 );
|
646
665
|
|
647
666
|
// Copy the args across
|
648
667
|
for ( i = 0; i < argc; i++ )
|
@@ -679,13 +698,6 @@ static VALUE p4_get_messages( VALUE self )
|
|
679
698
|
return p4->GetMessages();
|
680
699
|
}
|
681
700
|
|
682
|
-
static VALUE p4_reset( VALUE self )
|
683
|
-
{
|
684
|
-
P4ClientApi *p4;
|
685
|
-
Data_Get_Struct( self, P4ClientApi, p4 );
|
686
|
-
return p4->Reset();
|
687
|
-
}
|
688
|
-
|
689
701
|
static VALUE p4_get_warnings( VALUE self )
|
690
702
|
{
|
691
703
|
P4ClientApi *p4;
|
@@ -815,6 +827,58 @@ static VALUE p4_set_progress( VALUE self, VALUE progress )
|
|
815
827
|
return p4->SetProgress( progress );
|
816
828
|
}
|
817
829
|
|
830
|
+
/*******************************************************************************
|
831
|
+
* SSO handler support
|
832
|
+
******************************************************************************/
|
833
|
+
static VALUE p4_get_enabled_sso( VALUE self )
|
834
|
+
{
|
835
|
+
P4ClientApi *p4;
|
836
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
837
|
+
return p4->GetEnableSSO();
|
838
|
+
}
|
839
|
+
|
840
|
+
static VALUE p4_set_enable_sso( VALUE self, VALUE enable )
|
841
|
+
{
|
842
|
+
P4ClientApi *p4;
|
843
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
844
|
+
return p4->SetEnableSSO( enable );
|
845
|
+
}
|
846
|
+
|
847
|
+
static VALUE p4_get_sso_vars( VALUE self )
|
848
|
+
{
|
849
|
+
P4ClientApi *p4;
|
850
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
851
|
+
return p4->GetSSOVars();
|
852
|
+
}
|
853
|
+
|
854
|
+
static VALUE p4_get_sso_passresult( VALUE self )
|
855
|
+
{
|
856
|
+
P4ClientApi *p4;
|
857
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
858
|
+
return p4->GetSSOPassResult();
|
859
|
+
}
|
860
|
+
|
861
|
+
static VALUE p4_set_sso_passresult( VALUE self, VALUE result )
|
862
|
+
{
|
863
|
+
P4ClientApi *p4;
|
864
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
865
|
+
return p4->SetSSOPassResult( result );
|
866
|
+
}
|
867
|
+
|
868
|
+
static VALUE p4_get_sso_failresult( VALUE self )
|
869
|
+
{
|
870
|
+
P4ClientApi *p4;
|
871
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
872
|
+
return p4->GetSSOFailResult();
|
873
|
+
}
|
874
|
+
|
875
|
+
static VALUE p4_set_sso_failresult( VALUE self, VALUE result )
|
876
|
+
{
|
877
|
+
P4ClientApi *p4;
|
878
|
+
Data_Get_Struct( self, P4ClientApi, p4 );
|
879
|
+
return p4->SetSSOFailResult( result );
|
880
|
+
}
|
881
|
+
|
818
882
|
/*******************************************************************************
|
819
883
|
* P4::MergeData methods. Construction/destruction defined elsewhere
|
820
884
|
******************************************************************************/
|
@@ -1269,6 +1333,8 @@ void Init_P4()
|
|
1269
1333
|
rb_define_method( cP4, "set_env", RUBY_METHOD_FUNC(p4_set_env) , 2 );
|
1270
1334
|
rb_define_method( cP4, "enviro_file", RUBY_METHOD_FUNC(p4_get_enviro_file), 0);
|
1271
1335
|
rb_define_method( cP4, "enviro_file=", RUBY_METHOD_FUNC(p4_set_enviro_file), 1);
|
1336
|
+
rb_define_method( cP4, "evar", RUBY_METHOD_FUNC(p4_get_evar) , 1 );
|
1337
|
+
rb_define_method( cP4, "set_evar", RUBY_METHOD_FUNC(p4_set_evar) , 2 );
|
1272
1338
|
rb_define_method( cP4, "host", RUBY_METHOD_FUNC(p4_get_host) , 0 );
|
1273
1339
|
rb_define_method( cP4, "host=", RUBY_METHOD_FUNC(p4_set_host) , 1 );
|
1274
1340
|
rb_define_method( cP4, "ignore_file",RUBY_METHOD_FUNC(p4_get_ignore) , 0 );
|
@@ -1305,7 +1371,6 @@ void Init_P4()
|
|
1305
1371
|
rb_define_method( cP4, "connect", RUBY_METHOD_FUNC(p4_connect) , 0 );
|
1306
1372
|
rb_define_method( cP4, "connected?",RUBY_METHOD_FUNC(p4_connected) , 0 );
|
1307
1373
|
rb_define_method( cP4, "disconnect", RUBY_METHOD_FUNC(p4_disconnect) , 0 );
|
1308
|
-
rb_define_method( cP4, "reset", RUBY_METHOD_FUNC(p4_reset), 0 );
|
1309
1374
|
|
1310
1375
|
// Running commands - general purpose commands
|
1311
1376
|
rb_define_method( cP4, "run", RUBY_METHOD_FUNC(p4_run) ,-2 );
|
@@ -1343,6 +1408,16 @@ void Init_P4()
|
|
1343
1408
|
rb_define_method( cP4, "progress", RUBY_METHOD_FUNC(p4_get_progress), 0);
|
1344
1409
|
rb_define_method( cP4, "progress=", RUBY_METHOD_FUNC(p4_set_progress), 1);
|
1345
1410
|
|
1411
|
+
// SSO handling
|
1412
|
+
rb_define_method( cP4, "loginsso", RUBY_METHOD_FUNC(p4_get_enabled_sso), 0);
|
1413
|
+
rb_define_method( cP4, "loginsso=", RUBY_METHOD_FUNC(p4_set_enable_sso), 1);
|
1414
|
+
rb_define_method( cP4, "ssovars", RUBY_METHOD_FUNC(p4_get_sso_vars), 0);
|
1415
|
+
rb_define_method( cP4, "ssopassresult", RUBY_METHOD_FUNC(p4_get_sso_passresult), 0);
|
1416
|
+
rb_define_method( cP4, "ssopassresult=", RUBY_METHOD_FUNC(p4_set_sso_passresult), 1);
|
1417
|
+
rb_define_method( cP4, "ssofailresult", RUBY_METHOD_FUNC(p4_get_sso_failresult), 0);
|
1418
|
+
rb_define_method( cP4, "ssofailresult=", RUBY_METHOD_FUNC(p4_set_sso_failresult), 1);
|
1419
|
+
|
1420
|
+
|
1346
1421
|
// P4::MergeData class
|
1347
1422
|
cP4MD = rb_define_class_under( cP4, "MergeData", rb_cObject );
|
1348
1423
|
|