Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
dc9834e
Add comparison document: iics-cli vs Informatica Asset Management CLI…
jbrazda Mar 11, 2026
9d80f7e
Add iics-cli PowerPoint presentation and generation script [no-ci]
jbrazda Mar 11, 2026
dbbc9ad
Fix lint issuses in docs/documentation/comparison-informatica-cli.md
jbrazda Mar 11, 2026
4ac8bc7
Update Tool Presentation [skip-ci]
jbrazda Mar 11, 2026
603a0ef
Add Install from Build section to README development docs
jbrazda Mar 11, 2026
7ed9722
Add profile command with interactive setup wizard
jbrazda Mar 13, 2026
e76d762
Fix go.mod toolchain version for CI compatibility
jbrazda Mar 13, 2026
9136cf4
Add package expand and create commands (CR-0004)
jbrazda Mar 15, 2026
684dc1c
Move CR-002-ExportCommandEnhancments to completed
jbrazda Mar 15, 2026
4274735
Update Claude local settings
jbrazda Mar 15, 2026
d712d1b
Add activitylog command and shell completion support
jbrazda Mar 17, 2026
b783e3b
chore: group dependabot updates into single weekly PRs per ecosystem
jbrazda Mar 17, 2026
73e364c
chore: direct dependabot PRs to dev branch
jbrazda Mar 17, 2026
0e5d54b
feat: add user change-password and reset-password subcommands
jbrazda Mar 17, 2026
21b0b37
chore: add sample payloads for functional testing under testdata/
jbrazda Mar 17, 2026
2cec90f
Add empty folders/placeholders
jbrazda Mar 17, 2026
9dff576
feat: enhance activitylog command with field selection, state labels,…
jbrazda Mar 17, 2026
b8ffc47
fix: resolve golangci-lint errcheck and gofmt violations
jbrazda Mar 17, 2026
8368219
chore: move CR-0005 to pending folder
jbrazda Mar 17, 2026
91bf3b4
chore: require lint and format checks before every commit
jbrazda Mar 17, 2026
f1f7bb1
chore: add CR and bug lifecycle workflow directive to CLAUDE.md
jbrazda Mar 17, 2026
86786e3
fix: unwrap schedules list response and correct Schedule struct fields
jbrazda Mar 17, 2026
b3af569
chore: add bug report for securitylog list 404 wrong endpoint path
jbrazda Mar 17, 2026
13e2e35
fix: correct securitylog endpoint path, response wrapper, and struct …
jbrazda Mar 17, 2026
9bb89e8
chore: add bug report for objects list broken query filters and --tag…
jbrazda Mar 17, 2026
688e33c
fix: remove --tag flag, fix q filter separator, add missing Object fi…
jbrazda Mar 17, 2026
e2aab2d
Update Completions
jbrazda Mar 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,14 @@
"Bash(/opt/local/bin/go build:*)",
"Bash(python3:*)",
"Bash(/opt/local/bin/go test:*)",
"Bash(/opt/local/bin/go vet:*)"
"Bash(/opt/local/bin/go vet:*)",
"Bash(go run:*)",
"Bash(curl -s \"https://docs.informatica.com/integration-cloud/data-integration/current-version/rest-api-reference/platform-rest-api-version-3-resources/passwords.html\")",
"Bash(perl -ne 'print if /Passwords|password|endpoint|request|response/i')",
"Bash(curl -s \"https://docs.informatica.com/integration-cloud/data-integration/current-version/rest-api-reference/platform-rest-api-version-3-resources/passwords/changing-a-password.html\")",
"Bash(perl -ne 'print if /POST|GET|Request|Response|Parameter|Example|endpoint|curl|json|application/')",
"Bash(perl -ne 's/<[^>]*>//g; print')",
"Bash(curl -s \"https://docs.informatica.com/integration-cloud/data-integration/current-version/rest-api-reference/platform-rest-api-version-3-resources/passwords/resetting-a-password.html\")"
]
}
}
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,24 @@ updates:
directory: "/"
schedule:
interval: "weekly"
target-branch: "dev"
labels:
- "dependencies"
open-pull-requests-limit: 10
groups:
go-dependencies:
patterns:
- "*"

- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
target-branch: "dev"
labels:
- "dependencies"
- "ci"
groups:
github-actions:
patterns:
- "*"
37 changes: 37 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ golangci-lint run ./...
## Commit Style

- Do **not** include `Co-Authored-By: Claude ...` trailers in commit messages.
- **Before every commit**, run the following and fix all reported issues:

```bash
gofmt -s -w .
/opt/local/bin/go vet ./...
golangci-lint run ./...
```

---

Expand All @@ -64,6 +71,36 @@ golangci-lint run ./...
2. `internal/client/<resource>s_test.go` - test each method with `newTestClient`
3. `cmd/<resource>.go` - thin command wiring, `getClient` → client method → `getFormatter` → `f.Format`
4. `cmd/root.go` `init()` - `rootCmd.AddCommand(newResourceCmd())`
5. `docs/documentation/<resource>.md` - command reference page (synopsis, flags, output columns, examples)
6. `README.md` Commands table - add a row linking to the new doc page

**Documentation is mandatory.** Every time a command is added or updated, steps 5 and 6 must be completed before the work is considered done.

After updating documentation, regenerate shell completion scripts:

```bash
make completions
```

Commit the updated files in `completions/` together with the code change.

## Change Request and Bug Lifecycle

### Change Requests (`docs/ChangeRequests/`)

- **New CRs** are created in `docs/ChangeRequests/new/`.
- **After implementing** a CR, move the file to `docs/ChangeRequests/pending/` and include that move in the same commit as the implementation.
- **After the developer confirms** the CR is complete and correct, move the file to `docs/ChangeRequests/completed/` and include that move in the commit.
- If the developer has **not yet confirmed**, keep the file in `docs/ChangeRequests/pending/`.

### Bugs (`docs/issues/`)

- **New bugs** are created in `docs/issues/new/`.
- **After fixing** a bug, move the file to `docs/issues/pending/` and include that move in the same commit as the fix.
- **After the developer confirms** the fix is correct, move the file to `docs/issues/completed/` and include that move in the commit.
- If the developer has **not yet confirmed**, keep the file in `docs/issues/pending/`.

---

## Markdown Rules

Expand Down
10 changes: 8 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ BINARY_NAME := iics
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo "dev")
LDFLAGS := -ldflags "-s -w -X main.version=$(VERSION)"

.PHONY: build clean test vet lint fmt install
.PHONY: build clean test vet lint fmt install completions

build:
go build $(LDFLAGS) -o $(BINARY_NAME) .
Expand All @@ -26,4 +26,10 @@ lint: vet
@which golangci-lint > /dev/null 2>&1 || echo "golangci-lint not installed"
@which golangci-lint > /dev/null 2>&1 && golangci-lint run ./... || true

all: fmt vet test build
completions:
go run . completion bash > completions/iics.bash
go run . completion zsh > completions/iics.zsh
go run . completion fish > completions/iics.fish
go run . completion powershell > completions/iics.ps1

all: fmt vet test build completions
41 changes: 30 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ A comprehensive command-line interface for the [Informatica Intelligent Cloud Se
## Features

- **Full API v3 coverage** - objects, connections, schedules, export/import, users, roles, permissions, runtime environments, agents, tags, source control, and more
- **Interactive setup** - guided profile wizard on first run, or via `iics profile add`
- **Multi-profile configuration** - switch between dev/staging/prod orgs with `--profile`
- **Session caching** - reuses sessions across invocations (30-min window) to avoid repeated logins
- **Automatic session refresh** - transparent 401 retry with re-authentication
Expand Down Expand Up @@ -36,21 +37,23 @@ make build

## Quick Start

### 1. Create a configuration file
### 1. Set up a profile

```bash
mkdir -p ~/.iics
cat > ~/.iics/config.yaml << 'EOF'
defaultProfile: dev
profiles:
dev:
name: "Development Org"
region: "us"
username: "user@company.com"
password: ""
EOF
iics profile add
```

The wizard prompts for your username, password, and region, then saves the profile to
`~/.iics/config.yaml`. You can also set up multiple named profiles:

```bash
iics profile add dev
iics profile add prod
iics profile set-default dev
```

Alternatively, create the config file manually - see the [Configuration](#configuration) section.

### 2. Login

```bash
Expand Down Expand Up @@ -150,13 +153,15 @@ Environment variables take precedence over config file values.

| Command | Alias | Subcommands | Description |
| ------- | ----- | ----------- | ----------- |
| [profile](docs/documentation/profile.md) | | `add`, `list`, `delete`, `set-default`, `show` | Manage connection profiles |
| [login](docs/documentation/login.md) | | | Authenticate and cache session |
| [logout](docs/documentation/logout.md) | | | Invalidate session |
| [objects](docs/documentation/objects.md) | | `list`, `dependencies` | List/search assets, find dependencies |
| [lookup](docs/documentation/lookup.md) | | | Resolve object IDs, names, and paths |
| [connection](docs/documentation/connection.md) | `conn` | `list`, `get`, `create`, `update`, `delete` | Manage connections |
| [export](docs/documentation/export.md) | | `run`, `start`, `status`, `download`, `create` | Export asset packages |
| [import](docs/documentation/import.md) | `imp` | `run`, `upload`, `start`, `status`, `download-log` | Import asset packages |
| [package](docs/documentation/package.md) | | `expand`, `create` | Extract or assemble IICS export package files (local, no API) |
| [project](docs/documentation/project.md) | | `create`, `update`, `delete` | Manage projects |
| [folder](docs/documentation/folder.md) | | `create`, `update`, `delete` | Manage folders |
| [schedule](docs/documentation/schedule.md) | | `list`, `get`, `create`, `update`, `delete` | Manage schedules |
Expand All @@ -168,10 +173,16 @@ Environment variables take precedence over config file values.
| [agent](docs/documentation/agent.md) | | `list`, `get`, `details`, `start`, `stop` | Manage Secure Agents |
| [tag](docs/documentation/tag.md) | | `assign`, `remove` | Assign/remove tags on objects |
| [permission](docs/documentation/permission.md) | `perm` | `get`, `set`, `delete` | Manage object-level permissions |
| [activitylog](docs/documentation/activitylog.md) | | `list`, `get` | Query activity logs for completed jobs |
| [securitylog](docs/documentation/securitylog.md) | `auditlog` | `list` | Query security audit log |
| [metering](docs/documentation/metering.md) | | `get`, `download` | Query usage and metering data |
| [sourcecontrol](docs/documentation/sourcecontrol.md) | `sc` | `checkout`, `checkin`, `pull`, `commit` | Source control operations |
| [state](docs/documentation/state.md) | | `fetch`, `load` | Fetch/load object state snapshots |
| [completion](docs/documentation/completion.md) | | `bash`, `zsh`, `fish`, `powershell` | Generate shell completion scripts |

> **Keeping completions up to date:** After adding or changing any command or flag, regenerate
> the shell completion scripts by running `make completions`. The pre-generated scripts live in
> the `completions/` directory and must be committed together with the code change.

### Global flags

Expand Down Expand Up @@ -207,6 +218,14 @@ make lint
make all
```

### Install from Build

```bash
make install
```

Compiles the binary and installs it to `$GOPATH/bin` (typically `~/go/bin`), making `iics` available system-wide without specifying a path. The build injects the current git tag or commit SHA as the version string via `-ldflags`, and strips debug symbols (`-s -w`) to reduce binary size.

### Project structure

See [docs/DESIGN.md](docs/DESIGN.md) for the full design document.
Expand Down
Loading
Loading