Coverage for scripts / get_organization.py: 0%

37 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-25 18:08 -0500

1#!/usr/bin/env python3 

2""" 

3Get JSM organization details. 

4 

5Usage: 

6 python get_organization.py 12345 

7 python get_organization.py 12345 --output json 

8""" 

9 

10import sys 

11import os 

12import argparse 

13import json 

14from pathlib import Path 

15 

16sys.path.insert(0, str(Path(__file__).parent.parent.parent / 'shared' / 'scripts' / 'lib')) 

17 

18from config_manager import get_jira_client 

19from error_handler import print_error, JiraError 

20 

21 

22def get_organization_func(organization_id: int, profile: str = None) -> dict: 

23 """ 

24 Get organization details. 

25 

26 Args: 

27 organization_id: Organization ID 

28 profile: JIRA profile to use 

29 

30 Returns: 

31 Organization data 

32 """ 

33 with get_jira_client(profile) as client: 

34 return client.get_organization(organization_id) 

35 

36 

37def main(): 

38 """Main entry point.""" 

39 parser = argparse.ArgumentParser( 

40 description='Get JSM organization details', 

41 formatter_class=argparse.RawDescriptionHelpFormatter, 

42 epilog=""" 

43Examples: 

44 Get organization details: 

45 %(prog)s 12345 

46 

47 JSON output: 

48 %(prog)s 12345 --output json 

49 """ 

50 ) 

51 

52 parser.add_argument('organization_id', type=int, 

53 help='Organization ID') 

54 parser.add_argument('--output', choices=['text', 'json'], default='text', 

55 help='Output format (default: text)') 

56 parser.add_argument('--profile', 

57 help='JIRA profile to use from config') 

58 parser.add_argument('--verbose', '-v', action='store_true', 

59 help='Show full API response') 

60 

61 args = parser.parse_args() 

62 

63 try: 

64 organization = get_organization_func( 

65 organization_id=args.organization_id, 

66 profile=args.profile 

67 ) 

68 

69 if args.output == 'json': 

70 if args.verbose: 

71 print(json.dumps(organization, indent=2)) 

72 else: 

73 print(json.dumps({ 

74 'id': organization.get('id'), 

75 'name': organization.get('name') 

76 }, indent=2)) 

77 else: 

78 print(f"Organization: {organization.get('name')} (ID: {organization.get('id')})\n") 

79 

80 if args.verbose: 

81 print("Full response:") 

82 print(json.dumps(organization, indent=2)) 

83 

84 return 0 

85 

86 except JiraError as e: 

87 print_error(f"Failed to get organization: {e}") 

88 return 1 

89 except Exception as e: 

90 print_error(f"Unexpected error: {e}") 

91 return 1 

92 

93 

94if __name__ == '__main__': 

95 sys.exit(main())