11const core = require ( '@actions/core' ) ;
22const github = require ( '@actions/github' ) ;
33const graphqlWithAuth = require ( '@octokit/graphql' ) . graphql . defaults ( {
4- headers : {
5- authorization : `token ${ core . getInput ( 'PAT' ) } `
6- } ,
4+ headers : {
5+ authorization : `token ${ core . getInput ( 'PAT' ) } `
6+ } ,
77} ) ;
88const errors = [ ] ;
99
1010function QueryDataWrapper ( queryType , response , results ) {
11- if ( response !== undefined ) {
12- const fieldData = queryType === 'org'
13- ? response . organization . projectNext . fields
14- : response . user . projectNext . fields ;
15- for ( const index in fieldData . nodes ) {
16- fieldData . nodes [ index ] . settings = JSON . parse ( fieldData . nodes [ index ] . settings ) ;
17- results . set ( fieldData . nodes [ index ] . name , fieldData . nodes [ index ] ) ;
18- }
19- this . results = results ;
20- this . hasNextPage = fieldData . pageInfo . hasNextPage ;
21- this . endCursor = fieldData . pageInfo . endCursor ;
22- }
11+ if ( response !== undefined ) {
12+ const fieldData = queryType === 'org'
13+ ? response . organization . projectNext . fields
14+ : response . user . projectNext . fields ;
15+ for ( const index in fieldData . nodes ) {
16+ fieldData . nodes [ index ] . settings = JSON . parse ( fieldData . nodes [ index ] . settings ) ;
17+ results . set ( fieldData . nodes [ index ] . name , fieldData . nodes [ index ] ) ;
18+ }
19+ this . results = results ;
20+ this . hasNextPage = fieldData . pageInfo . hasNextPage ;
21+ this . endCursor = fieldData . pageInfo . endCursor ;
22+ }
2323}
2424
2525( async function start ( ) {
26- const queryDetails = validateInputs ( ) ;
27- if ( queryDetails !== undefined ) {
28- let queryData = new QueryDataWrapper ( ) ;
29- queryData . hasNextPage = true ;
30- const results = await invokeQueries (
31- queryDetails ,
32- core . getInput ( 'PROJECT_NEXT_NUMBER' ) ,
33- queryData
34- ) ;
35- exit ( results ) ;
36- } else {
37- exit ( new Map ( ) ) ;
38- }
26+ const queryDetails = validateInputs ( ) ;
27+ if ( queryDetails !== undefined ) {
28+ let queryData = new QueryDataWrapper ( ) ;
29+ queryData . hasNextPage = true ;
30+ const results = await invokeQueries (
31+ queryDetails ,
32+ core . getInput ( 'PROJECT_NEXT_NUMBER' ) ,
33+ queryData
34+ ) ;
35+ exit ( results ) ;
36+ } else {
37+ exit ( new Map ( ) ) ;
38+ }
3939} ) ( ) ;
4040
4141function validateInputs ( ) {
42- const org = core . getInput ( 'ORG' ) ;
43- const user = core . getInput ( 'USER' ) ;
44- if ( org . length < 0 && user . length < 0 ) {
45- errors . push ( 'Either the "ORG" or the "USER" input must be provided.' ) ;
46- return undefined ;
47- } else if ( org . length > 0 && user . length > 0 ) {
48- errors . push ( 'Both the "ORG" and "USER" inputs can\'t be provided. Please provide one or the other.' ) ;
49- return undefined ;
50- } else {
51- return org . length > 0
52- ? {
53- topLevelQuery : `organization(login: "${ org } ") {` ,
54- queryType : 'org'
55- }
56- : {
57- topLevelQuery : `user(login: "${ user } ") {` ,
58- queryType : 'user'
59- }
60- }
42+ const org = core . getInput ( 'ORG' ) ;
43+ const user = core . getInput ( 'USER' ) ;
44+ if ( org . length < 0 && user . length < 0 ) {
45+ errors . push ( 'Either the "ORG" or the "USER" input must be provided.' ) ;
46+ return undefined ;
47+ } else if ( org . length > 0 && user . length > 0 ) {
48+ errors . push ( 'Both the "ORG" and "USER" inputs can\'t be provided. Please provide one or the other.' ) ;
49+ return undefined ;
50+ } else {
51+ return org . length > 0
52+ ? {
53+ topLevelQuery : `organization(login: "${ org } ") {` ,
54+ queryType : 'org'
55+ }
56+ : {
57+ topLevelQuery : `user(login: "${ user } ") {` ,
58+ queryType : 'user'
59+ }
60+ }
6161}
6262
6363async function invokeQueries ( queryDetails , projectNumber , queryData ) {
64- let results = new Map ( ) ;
65- while ( queryData . hasNextPage === true ) {
66- try {
67- const response = await getFieldSettings (
68- queryDetails . topLevelQuery ,
69- projectNumber ,
70- queryData . endCursor === undefined ? 'first: 100' : `first: 100, after: "${ queryData . endCursor } "`
71- ) ;
72- queryData = new QueryDataWrapper ( queryDetails . queryType , response , results ) ;
73- results = queryData . results ;
74- if ( queryData . endCursor === undefined ) break ;
75- } catch ( error ) {
76- errors . push ( error ) ;
77- results . clear ( ) ;
78- break ;
79- }
80- }
81- return results ;
64+ let results = new Map ( ) ;
65+ while ( queryData . hasNextPage === true ) {
66+ try {
67+ const response = await getFieldSettings (
68+ queryDetails . topLevelQuery ,
69+ projectNumber ,
70+ queryData . endCursor === undefined ? 'first: 100' : `first: 100, after: "${ queryData . endCursor } "`
71+ ) ;
72+ queryData = new QueryDataWrapper ( queryDetails . queryType , response , results ) ;
73+ results = queryData . results ;
74+ if ( queryData . endCursor === undefined ) break ;
75+ } catch ( error ) {
76+ errors . push ( error ) ;
77+ results . clear ( ) ;
78+ break ;
79+ }
80+ }
81+ return results ;
8282}
8383
8484async function getFieldSettings ( topLevelQuery , projectNumber , fieldArguments ) {
85- const response = await graphqlWithAuth ( `
86- {
87- ${ topLevelQuery }
88- projectNext(number: ${ projectNumber } ) {
89- id
90- fields(${ fieldArguments } ) {
91- nodes {
92- id
93- name
94- settings
95- }
96- pageInfo {
97- hasNextPage
98- endCursor
99- }
100- totalCount
101- }
102- }
103- }
104- }
105- `) ;
106- return response ;
85+ const response = await graphqlWithAuth ( `
86+ {
87+ ${ topLevelQuery }
88+ projectNext(number: ${ projectNumber } ) {
89+ id
90+ fields(${ fieldArguments } ) {
91+ nodes {
92+ id
93+ name
94+ settings
95+ }
96+ pageInfo {
97+ hasNextPage
98+ endCursor
99+ }
100+ totalCount
101+ }
102+ }
103+ }
104+ }
105+ `) ;
106+ return response ;
107107}
108108
109109function exit ( results ) {
110- core . setOutput ( 'PROJECT_NEXT_FIELDS' , Object . fromEntries ( results ) ) ;
111- if ( errors . length > 0 ) {
112- for ( const index in errors ) {
113- core . setFailed ( errors [ index ] ) ;
114- }
115- }
110+ core . setOutput ( 'PROJECT_NEXT_FIELDS' , Object . fromEntries ( results ) ) ;
111+ if ( errors . length > 0 ) {
112+ for ( const index in errors ) {
113+ core . setFailed ( errors [ index ] ) ;
114+ }
115+ }
116116}
0 commit comments