Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
59 changes: 59 additions & 0 deletions plugins/ploi/api_token.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package ploi

import (
"context"
"regexp"

"github.com/1Password/shell-plugins/sdk"
"github.com/1Password/shell-plugins/sdk/importer"
"github.com/1Password/shell-plugins/sdk/provision"
"github.com/1Password/shell-plugins/sdk/schema"
"github.com/1Password/shell-plugins/sdk/schema/credname"
"github.com/1Password/shell-plugins/sdk/schema/fieldname"
)

func APIToken() schema.CredentialType {
return schema.CredentialType{
Name: credname.APIToken,
DocsURL: sdk.URL("https://developers.ploi.io/?documentation=cli"),
ManagementURL: sdk.URL("https://ploi.io/profile/api-keys"),
Fields: []schema.CredentialField{
{
Name: fieldname.Token,
MarkdownDescription: "Token used to authenticate to Ploi CLI.",
Secret: true,
Composition: &schema.ValueComposition{
Charset: schema.Charset{
Uppercase: true,
Lowercase: true,
Digits: true,
},
},
},
},
DefaultProvisioner: provision.EnvVars(defaultEnvVarMapping),
Importer: importer.TryAll(
importer.TryEnvVarPair(defaultEnvVarMapping),
TryPloiCLIConfigFile(),
)}
}

var defaultEnvVarMapping = map[string]sdk.FieldName{
"PLOI_API_TOKEN": fieldname.Token,
}

func TryPloiCLIConfigFile() sdk.Importer {
return importer.TryFile("~/.ploi/config.php", func(ctx context.Context, contents importer.FileContents, in sdk.ImportInput, out *sdk.ImportAttempt) {
tokenRegexp := regexp.MustCompile(`'token'\s*=>\s*'([^']*)'`)
matches := tokenRegexp.FindStringSubmatch(contents.ToString())
if len(matches) < 2 || matches[1] == "" {
return
}

out.AddCandidate(sdk.ImportCandidate{
Fields: map[sdk.FieldName]string{
fieldname.Token: matches[1],
},
})
})
}
53 changes: 53 additions & 0 deletions plugins/ploi/api_token_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package ploi

import (
"testing"

"github.com/1Password/shell-plugins/sdk"
"github.com/1Password/shell-plugins/sdk/plugintest"
"github.com/1Password/shell-plugins/sdk/schema/fieldname"
)

func TestAPITokenProvisioner(t *testing.T) {
plugintest.TestProvisioner(t, APIToken().DefaultProvisioner, map[string]plugintest.ProvisionCase{
"default": {
ItemFields: map[sdk.FieldName]string{
fieldname.Token: "j0jeJEtBchP9k7HN7lenOOQwDeofsOMaKTcdBONTzFa9qAzyVN8uAAPSkrWvEfL9yHI1DeyJMEde6ZkIhqWBpPJmWq6sJFEYOxItOuCGpZDJlUJYBD8F92BZjJ0Fqi0G7vOl3Q5fhJuZwPxdLZndjqRrvHlr4O1tlB2sFoQr9mud15NQn8FDEpuCDQTQ868Qe4HbkbPsd9wBrpAQ5wHgWPfr5uTBWAl7KAStIDALQKa39TU0S8Tyc4km4uAwizEF8VNyUliJQUdDSgshj1QwqfwiQ92kWSJQ1MIDIr0jKEAXpdRjLbveQXBPjp0QvCTCzIRhASmlXLD6o6s8jCnFBZjoZnGQn3Jn6mPt72GtWCs5HfPyuMqJVhksfL15vp1QQBMNkFry96YBHK6t5GnS0T9uiidYAr233LkgtvgLIdNrOKjQjni1hkhrc1wd73sCl4bZfTI41BOtZCHBwoV6eYgi9pGOf9jqgkAi3WjweFbsWuUl5ZIBGo8PCSwoZotyhdHT9g0jkEJk01Alckhn8VYQ8QkoyzsPGsW4SyD9vGTSwKgIwFu5iZ3kTxG038kDJcg2w5gWP8p6PksXYyIRZzsi6g7itchRwGevHtaBMnmrLuGHPZQc7LpHN8ibKU6YFNqsVh1Zw5Lh6ldNeOtMOzWRfVpbgSJuzC7rwpdLwCDaylzXkNNPu0Y30DMXxRiyBqXvkkpLEdAYwGRsGk8YPetpDsH2PNJDx9POKZ1EsuE3bSasEKCiOIEV4GxT4Me3lyHLpWU72utnkm3UvnfK8tj4y4TGhyHfdi9HFND0PsPQRzFnANNsIvf6sDInSWGpGEy16jlIturGHOx2BaQ6wUhZGQsNvUpqsmkc05672ajPDa8FHD3LR4Qq8EL9AT86RWcWJvuxKMWN5a2F0zr4DVxaCmJ4iQlRUwwueybrajPRVPOsvcH7GVS0z3QqT6OwAx5IG1ks4j9T0ADR8szrSIRIW6ZuBmWisQvie4TskbuOAL5DJaREhHIanKIEiSMU4movTtULwFw9decBhKnpvLEwymOqgQnfMMA9eEna6AnsJpy2JzecelwDfV6vPydkMBvGDpi8AJucYn6BEOG5f4ylYeXGuzBUUJuQdn4GdO0jEw4GOOPjvNL2LbCYCvqExd8L9S1BxSX8KebsAARBwBUEkRAPJdbAhUrb0ksCWpgZdQlAEaBJhLWYNVF8s3eBwQONqfVcbcjcYYDbJQP2Uv9wrcBHmwZJcpaKMIfDBgcWTdx1ucaAYyKzBP1OfJ4uFHGBr8R5aok4nXpugH2ZmrkKP8dhP9Qcq33MNbXHOw99wy7rDLlNdNsrHB234Stl1WDm0WndvhMYEqhitOj7MI8aFwcoo1hhxLYtRx0pUII5rmJw7yRq7AfsAxUWWKPXoMVSxzBZkbrRLGXqRAKE6fNkD34oTOJgxy1OiWHEwRXGc7WcbwPevV9wRD2StG4Tko10FdHNwxlIXq8kEqcdF6LUhnZhvVVTxmlXoDiJ6Bn4gc0N8Hieg9ifpLZAk3tGleL5wxfjWRhNcrzqKLEKVAxHxqS202HqibQ6OMaetMQTiSRPLfiLUejsBngAlHUp7ztDIx5SH0Q1DzT1AHbju9uOn4kvqO8aKY82rhRvf1t4HF1DpZyK3UioPizpMTHW95xvtkZZsmedBLDYMHpx2j1hthM4GnrjrBEOuceOrxWTPPOOt1rVHV6gjJWG5dRojJAsFpcbBGl5CnNGixOnCPWSowJl3BstCAzbu667k3miCLETTDlXY9FHZ6RxX7cYfojYDMA3KMk2OL1xgnotFJLt5cOQE5tm7XYtpqdOhUHrO4SR4vSisL6H5sS2E5at2lEXAMPLE",
},
ExpectedOutput: sdk.ProvisionOutput{
Environment: map[string]string{
"PLOI_API_TOKEN": "j0jeJEtBchP9k7HN7lenOOQwDeofsOMaKTcdBONTzFa9qAzyVN8uAAPSkrWvEfL9yHI1DeyJMEde6ZkIhqWBpPJmWq6sJFEYOxItOuCGpZDJlUJYBD8F92BZjJ0Fqi0G7vOl3Q5fhJuZwPxdLZndjqRrvHlr4O1tlB2sFoQr9mud15NQn8FDEpuCDQTQ868Qe4HbkbPsd9wBrpAQ5wHgWPfr5uTBWAl7KAStIDALQKa39TU0S8Tyc4km4uAwizEF8VNyUliJQUdDSgshj1QwqfwiQ92kWSJQ1MIDIr0jKEAXpdRjLbveQXBPjp0QvCTCzIRhASmlXLD6o6s8jCnFBZjoZnGQn3Jn6mPt72GtWCs5HfPyuMqJVhksfL15vp1QQBMNkFry96YBHK6t5GnS0T9uiidYAr233LkgtvgLIdNrOKjQjni1hkhrc1wd73sCl4bZfTI41BOtZCHBwoV6eYgi9pGOf9jqgkAi3WjweFbsWuUl5ZIBGo8PCSwoZotyhdHT9g0jkEJk01Alckhn8VYQ8QkoyzsPGsW4SyD9vGTSwKgIwFu5iZ3kTxG038kDJcg2w5gWP8p6PksXYyIRZzsi6g7itchRwGevHtaBMnmrLuGHPZQc7LpHN8ibKU6YFNqsVh1Zw5Lh6ldNeOtMOzWRfVpbgSJuzC7rwpdLwCDaylzXkNNPu0Y30DMXxRiyBqXvkkpLEdAYwGRsGk8YPetpDsH2PNJDx9POKZ1EsuE3bSasEKCiOIEV4GxT4Me3lyHLpWU72utnkm3UvnfK8tj4y4TGhyHfdi9HFND0PsPQRzFnANNsIvf6sDInSWGpGEy16jlIturGHOx2BaQ6wUhZGQsNvUpqsmkc05672ajPDa8FHD3LR4Qq8EL9AT86RWcWJvuxKMWN5a2F0zr4DVxaCmJ4iQlRUwwueybrajPRVPOsvcH7GVS0z3QqT6OwAx5IG1ks4j9T0ADR8szrSIRIW6ZuBmWisQvie4TskbuOAL5DJaREhHIanKIEiSMU4movTtULwFw9decBhKnpvLEwymOqgQnfMMA9eEna6AnsJpy2JzecelwDfV6vPydkMBvGDpi8AJucYn6BEOG5f4ylYeXGuzBUUJuQdn4GdO0jEw4GOOPjvNL2LbCYCvqExd8L9S1BxSX8KebsAARBwBUEkRAPJdbAhUrb0ksCWpgZdQlAEaBJhLWYNVF8s3eBwQONqfVcbcjcYYDbJQP2Uv9wrcBHmwZJcpaKMIfDBgcWTdx1ucaAYyKzBP1OfJ4uFHGBr8R5aok4nXpugH2ZmrkKP8dhP9Qcq33MNbXHOw99wy7rDLlNdNsrHB234Stl1WDm0WndvhMYEqhitOj7MI8aFwcoo1hhxLYtRx0pUII5rmJw7yRq7AfsAxUWWKPXoMVSxzBZkbrRLGXqRAKE6fNkD34oTOJgxy1OiWHEwRXGc7WcbwPevV9wRD2StG4Tko10FdHNwxlIXq8kEqcdF6LUhnZhvVVTxmlXoDiJ6Bn4gc0N8Hieg9ifpLZAk3tGleL5wxfjWRhNcrzqKLEKVAxHxqS202HqibQ6OMaetMQTiSRPLfiLUejsBngAlHUp7ztDIx5SH0Q1DzT1AHbju9uOn4kvqO8aKY82rhRvf1t4HF1DpZyK3UioPizpMTHW95xvtkZZsmedBLDYMHpx2j1hthM4GnrjrBEOuceOrxWTPPOOt1rVHV6gjJWG5dRojJAsFpcbBGl5CnNGixOnCPWSowJl3BstCAzbu667k3miCLETTDlXY9FHZ6RxX7cYfojYDMA3KMk2OL1xgnotFJLt5cOQE5tm7XYtpqdOhUHrO4SR4vSisL6H5sS2E5at2lEXAMPLE",
},
},
},
})
}

func TestAPITokenImporter(t *testing.T) {
plugintest.TestImporter(t, APIToken().Importer, map[string]plugintest.ImportCase{
"environment": {
Environment: map[string]string{
"PLOI_API_TOKEN": "j0jeJEtBchP9k7HN7lenOOQwDeofsOMaKTcdBONTzFa9qAzyVN8uAAPSkrWvEfL9yHI1DeyJMEde6ZkIhqWBpPJmWq6sJFEYOxItOuCGpZDJlUJYBD8F92BZjJ0Fqi0G7vOl3Q5fhJuZwPxdLZndjqRrvHlr4O1tlB2sFoQr9mud15NQn8FDEpuCDQTQ868Qe4HbkbPsd9wBrpAQ5wHgWPfr5uTBWAl7KAStIDALQKa39TU0S8Tyc4km4uAwizEF8VNyUliJQUdDSgshj1QwqfwiQ92kWSJQ1MIDIr0jKEAXpdRjLbveQXBPjp0QvCTCzIRhASmlXLD6o6s8jCnFBZjoZnGQn3Jn6mPt72GtWCs5HfPyuMqJVhksfL15vp1QQBMNkFry96YBHK6t5GnS0T9uiidYAr233LkgtvgLIdNrOKjQjni1hkhrc1wd73sCl4bZfTI41BOtZCHBwoV6eYgi9pGOf9jqgkAi3WjweFbsWuUl5ZIBGo8PCSwoZotyhdHT9g0jkEJk01Alckhn8VYQ8QkoyzsPGsW4SyD9vGTSwKgIwFu5iZ3kTxG038kDJcg2w5gWP8p6PksXYyIRZzsi6g7itchRwGevHtaBMnmrLuGHPZQc7LpHN8ibKU6YFNqsVh1Zw5Lh6ldNeOtMOzWRfVpbgSJuzC7rwpdLwCDaylzXkNNPu0Y30DMXxRiyBqXvkkpLEdAYwGRsGk8YPetpDsH2PNJDx9POKZ1EsuE3bSasEKCiOIEV4GxT4Me3lyHLpWU72utnkm3UvnfK8tj4y4TGhyHfdi9HFND0PsPQRzFnANNsIvf6sDInSWGpGEy16jlIturGHOx2BaQ6wUhZGQsNvUpqsmkc05672ajPDa8FHD3LR4Qq8EL9AT86RWcWJvuxKMWN5a2F0zr4DVxaCmJ4iQlRUwwueybrajPRVPOsvcH7GVS0z3QqT6OwAx5IG1ks4j9T0ADR8szrSIRIW6ZuBmWisQvie4TskbuOAL5DJaREhHIanKIEiSMU4movTtULwFw9decBhKnpvLEwymOqgQnfMMA9eEna6AnsJpy2JzecelwDfV6vPydkMBvGDpi8AJucYn6BEOG5f4ylYeXGuzBUUJuQdn4GdO0jEw4GOOPjvNL2LbCYCvqExd8L9S1BxSX8KebsAARBwBUEkRAPJdbAhUrb0ksCWpgZdQlAEaBJhLWYNVF8s3eBwQONqfVcbcjcYYDbJQP2Uv9wrcBHmwZJcpaKMIfDBgcWTdx1ucaAYyKzBP1OfJ4uFHGBr8R5aok4nXpugH2ZmrkKP8dhP9Qcq33MNbXHOw99wy7rDLlNdNsrHB234Stl1WDm0WndvhMYEqhitOj7MI8aFwcoo1hhxLYtRx0pUII5rmJw7yRq7AfsAxUWWKPXoMVSxzBZkbrRLGXqRAKE6fNkD34oTOJgxy1OiWHEwRXGc7WcbwPevV9wRD2StG4Tko10FdHNwxlIXq8kEqcdF6LUhnZhvVVTxmlXoDiJ6Bn4gc0N8Hieg9ifpLZAk3tGleL5wxfjWRhNcrzqKLEKVAxHxqS202HqibQ6OMaetMQTiSRPLfiLUejsBngAlHUp7ztDIx5SH0Q1DzT1AHbju9uOn4kvqO8aKY82rhRvf1t4HF1DpZyK3UioPizpMTHW95xvtkZZsmedBLDYMHpx2j1hthM4GnrjrBEOuceOrxWTPPOOt1rVHV6gjJWG5dRojJAsFpcbBGl5CnNGixOnCPWSowJl3BstCAzbu667k3miCLETTDlXY9FHZ6RxX7cYfojYDMA3KMk2OL1xgnotFJLt5cOQE5tm7XYtpqdOhUHrO4SR4vSisL6H5sS2E5at2lEXAMPLE",
},
ExpectedCandidates: []sdk.ImportCandidate{
{
Fields: map[sdk.FieldName]string{
fieldname.Token: "j0jeJEtBchP9k7HN7lenOOQwDeofsOMaKTcdBONTzFa9qAzyVN8uAAPSkrWvEfL9yHI1DeyJMEde6ZkIhqWBpPJmWq6sJFEYOxItOuCGpZDJlUJYBD8F92BZjJ0Fqi0G7vOl3Q5fhJuZwPxdLZndjqRrvHlr4O1tlB2sFoQr9mud15NQn8FDEpuCDQTQ868Qe4HbkbPsd9wBrpAQ5wHgWPfr5uTBWAl7KAStIDALQKa39TU0S8Tyc4km4uAwizEF8VNyUliJQUdDSgshj1QwqfwiQ92kWSJQ1MIDIr0jKEAXpdRjLbveQXBPjp0QvCTCzIRhASmlXLD6o6s8jCnFBZjoZnGQn3Jn6mPt72GtWCs5HfPyuMqJVhksfL15vp1QQBMNkFry96YBHK6t5GnS0T9uiidYAr233LkgtvgLIdNrOKjQjni1hkhrc1wd73sCl4bZfTI41BOtZCHBwoV6eYgi9pGOf9jqgkAi3WjweFbsWuUl5ZIBGo8PCSwoZotyhdHT9g0jkEJk01Alckhn8VYQ8QkoyzsPGsW4SyD9vGTSwKgIwFu5iZ3kTxG038kDJcg2w5gWP8p6PksXYyIRZzsi6g7itchRwGevHtaBMnmrLuGHPZQc7LpHN8ibKU6YFNqsVh1Zw5Lh6ldNeOtMOzWRfVpbgSJuzC7rwpdLwCDaylzXkNNPu0Y30DMXxRiyBqXvkkpLEdAYwGRsGk8YPetpDsH2PNJDx9POKZ1EsuE3bSasEKCiOIEV4GxT4Me3lyHLpWU72utnkm3UvnfK8tj4y4TGhyHfdi9HFND0PsPQRzFnANNsIvf6sDInSWGpGEy16jlIturGHOx2BaQ6wUhZGQsNvUpqsmkc05672ajPDa8FHD3LR4Qq8EL9AT86RWcWJvuxKMWN5a2F0zr4DVxaCmJ4iQlRUwwueybrajPRVPOsvcH7GVS0z3QqT6OwAx5IG1ks4j9T0ADR8szrSIRIW6ZuBmWisQvie4TskbuOAL5DJaREhHIanKIEiSMU4movTtULwFw9decBhKnpvLEwymOqgQnfMMA9eEna6AnsJpy2JzecelwDfV6vPydkMBvGDpi8AJucYn6BEOG5f4ylYeXGuzBUUJuQdn4GdO0jEw4GOOPjvNL2LbCYCvqExd8L9S1BxSX8KebsAARBwBUEkRAPJdbAhUrb0ksCWpgZdQlAEaBJhLWYNVF8s3eBwQONqfVcbcjcYYDbJQP2Uv9wrcBHmwZJcpaKMIfDBgcWTdx1ucaAYyKzBP1OfJ4uFHGBr8R5aok4nXpugH2ZmrkKP8dhP9Qcq33MNbXHOw99wy7rDLlNdNsrHB234Stl1WDm0WndvhMYEqhitOj7MI8aFwcoo1hhxLYtRx0pUII5rmJw7yRq7AfsAxUWWKPXoMVSxzBZkbrRLGXqRAKE6fNkD34oTOJgxy1OiWHEwRXGc7WcbwPevV9wRD2StG4Tko10FdHNwxlIXq8kEqcdF6LUhnZhvVVTxmlXoDiJ6Bn4gc0N8Hieg9ifpLZAk3tGleL5wxfjWRhNcrzqKLEKVAxHxqS202HqibQ6OMaetMQTiSRPLfiLUejsBngAlHUp7ztDIx5SH0Q1DzT1AHbju9uOn4kvqO8aKY82rhRvf1t4HF1DpZyK3UioPizpMTHW95xvtkZZsmedBLDYMHpx2j1hthM4GnrjrBEOuceOrxWTPPOOt1rVHV6gjJWG5dRojJAsFpcbBGl5CnNGixOnCPWSowJl3BstCAzbu667k3miCLETTDlXY9FHZ6RxX7cYfojYDMA3KMk2OL1xgnotFJLt5cOQE5tm7XYtpqdOhUHrO4SR4vSisL6H5sS2E5at2lEXAMPLE",
},
},
},
},
"config file": {
Files: map[string]string{
"~/.ploi/config.php": plugintest.LoadFixture(t, "config.php"),
},
ExpectedCandidates: []sdk.ImportCandidate{
{
Fields: map[sdk.FieldName]string{
fieldname.Token: "j0jeJEtBchP9k7HN7lenOOQwDeofsOMaKTcdBONTzFa9qAzyVN8uAAPSkrWvEfL9yHI1DeyJMEde6ZkIhqWBpPJmWq6sJFEYOxItOuCGpZDJlUJYBD8F92BZjJ0Fqi0G7vOl3Q5fhJuZwPxdLZndjqRrvHlr4O1tlB2sFoQr9mud15NQn8FDEpuCDQTQ868Qe4HbkbPsd9wBrpAQ5wHgWPfr5uTBWAl7KAStIDALQKa39TU0S8Tyc4km4uAwizEF8VNyUliJQUdDSgshj1QwqfwiQ92kWSJQ1MIDIr0jKEAXpdRjLbveQXBPjp0QvCTCzIRhASmlXLD6o6s8jCnFBZjoZnGQn3Jn6mPt72GtWCs5HfPyuMqJVhksfL15vp1QQBMNkFry96YBHK6t5GnS0T9uiidYAr233LkgtvgLIdNrOKjQjni1hkhrc1wd73sCl4bZfTI41BOtZCHBwoV6eYgi9pGOf9jqgkAi3WjweFbsWuUl5ZIBGo8PCSwoZotyhdHT9g0jkEJk01Alckhn8VYQ8QkoyzsPGsW4SyD9vGTSwKgIwFu5iZ3kTxG038kDJcg2w5gWP8p6PksXYyIRZzsi6g7itchRwGevHtaBMnmrLuGHPZQc7LpHN8ibKU6YFNqsVh1Zw5Lh6ldNeOtMOzWRfVpbgSJuzC7rwpdLwCDaylzXkNNPu0Y30DMXxRiyBqXvkkpLEdAYwGRsGk8YPetpDsH2PNJDx9POKZ1EsuE3bSasEKCiOIEV4GxT4Me3lyHLpWU72utnkm3UvnfK8tj4y4TGhyHfdi9HFND0PsPQRzFnANNsIvf6sDInSWGpGEy16jlIturGHOx2BaQ6wUhZGQsNvUpqsmkc05672ajPDa8FHD3LR4Qq8EL9AT86RWcWJvuxKMWN5a2F0zr4DVxaCmJ4iQlRUwwueybrajPRVPOsvcH7GVS0z3QqT6OwAx5IG1ks4j9T0ADR8szrSIRIW6ZuBmWisQvie4TskbuOAL5DJaREhHIanKIEiSMU4movTtULwFw9decBhKnpvLEwymOqgQnfMMA9eEna6AnsJpy2JzecelwDfV6vPydkMBvGDpi8AJucYn6BEOG5f4ylYeXGuzBUUJuQdn4GdO0jEw4GOOPjvNL2LbCYCvqExd8L9S1BxSX8KebsAARBwBUEkRAPJdbAhUrb0ksCWpgZdQlAEaBJhLWYNVF8s3eBwQONqfVcbcjcYYDbJQP2Uv9wrcBHmwZJcpaKMIfDBgcWTdx1ucaAYyKzBP1OfJ4uFHGBr8R5aok4nXpugH2ZmrkKP8dhP9Qcq33MNbXHOw99wy7rDLlNdNsrHB234Stl1WDm0WndvhMYEqhitOj7MI8aFwcoo1hhxLYtRx0pUII5rmJw7yRq7AfsAxUWWKPXoMVSxzBZkbrRLGXqRAKE6fNkD34oTOJgxy1OiWHEwRXGc7WcbwPevV9wRD2StG4Tko10FdHNwxlIXq8kEqcdF6LUhnZhvVVTxmlXoDiJ6Bn4gc0N8Hieg9ifpLZAk3tGleL5wxfjWRhNcrzqKLEKVAxHxqS202HqibQ6OMaetMQTiSRPLfiLUejsBngAlHUp7ztDIx5SH0Q1DzT1AHbju9uOn4kvqO8aKY82rhRvf1t4HF1DpZyK3UioPizpMTHW95xvtkZZsmedBLDYMHpx2j1hthM4GnrjrBEOuceOrxWTPPOOt1rVHV6gjJWG5dRojJAsFpcbBGl5CnNGixOnCPWSowJl3BstCAzbu667k3miCLETTDlXY9FHZ6RxX7cYfojYDMA3KMk2OL1xgnotFJLt5cOQE5tm7XYtpqdOhUHrO4SR4vSisL6H5sS2E5at2lEXAMPLE",
},
},
},
},
})
}
25 changes: 25 additions & 0 deletions plugins/ploi/ploi.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package ploi

import (
"github.com/1Password/shell-plugins/sdk"
"github.com/1Password/shell-plugins/sdk/needsauth"
"github.com/1Password/shell-plugins/sdk/schema"
"github.com/1Password/shell-plugins/sdk/schema/credname"
)

func PloiCLICLI() schema.Executable {
return schema.Executable{
Name: "Ploi CLI",
Runs: []string{"ploi"},
DocsURL: sdk.URL("https://developers.ploi.io/?documentation=cli"),
NeedsAuth: needsauth.IfAll(
needsauth.NotForHelpOrVersion(),
needsauth.NotWithoutArgs(),
),
Uses: []schema.CredentialUsage{
{
Name: credname.APIToken,
},
},
}
}
22 changes: 22 additions & 0 deletions plugins/ploi/plugin.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package ploi

import (
"github.com/1Password/shell-plugins/sdk"
"github.com/1Password/shell-plugins/sdk/schema"
)

func New() schema.Plugin {
return schema.Plugin{
Name: "ploi",
Platform: schema.PlatformInfo{
Name: "Ploi CLI",
Homepage: sdk.URL("https://ploi.io"),
},
Credentials: []schema.CredentialType{
APIToken(),
},
Executables: []schema.Executable{
PloiCLICLI(),
},
}
}
5 changes: 5 additions & 0 deletions plugins/ploi/test-fixtures/config.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

return [
'token' => 'j0jeJEtBchP9k7HN7lenOOQwDeofsOMaKTcdBONTzFa9qAzyVN8uAAPSkrWvEfL9yHI1DeyJMEde6ZkIhqWBpPJmWq6sJFEYOxItOuCGpZDJlUJYBD8F92BZjJ0Fqi0G7vOl3Q5fhJuZwPxdLZndjqRrvHlr4O1tlB2sFoQr9mud15NQn8FDEpuCDQTQ868Qe4HbkbPsd9wBrpAQ5wHgWPfr5uTBWAl7KAStIDALQKa39TU0S8Tyc4km4uAwizEF8VNyUliJQUdDSgshj1QwqfwiQ92kWSJQ1MIDIr0jKEAXpdRjLbveQXBPjp0QvCTCzIRhASmlXLD6o6s8jCnFBZjoZnGQn3Jn6mPt72GtWCs5HfPyuMqJVhksfL15vp1QQBMNkFry96YBHK6t5GnS0T9uiidYAr233LkgtvgLIdNrOKjQjni1hkhrc1wd73sCl4bZfTI41BOtZCHBwoV6eYgi9pGOf9jqgkAi3WjweFbsWuUl5ZIBGo8PCSwoZotyhdHT9g0jkEJk01Alckhn8VYQ8QkoyzsPGsW4SyD9vGTSwKgIwFu5iZ3kTxG038kDJcg2w5gWP8p6PksXYyIRZzsi6g7itchRwGevHtaBMnmrLuGHPZQc7LpHN8ibKU6YFNqsVh1Zw5Lh6ldNeOtMOzWRfVpbgSJuzC7rwpdLwCDaylzXkNNPu0Y30DMXxRiyBqXvkkpLEdAYwGRsGk8YPetpDsH2PNJDx9POKZ1EsuE3bSasEKCiOIEV4GxT4Me3lyHLpWU72utnkm3UvnfK8tj4y4TGhyHfdi9HFND0PsPQRzFnANNsIvf6sDInSWGpGEy16jlIturGHOx2BaQ6wUhZGQsNvUpqsmkc05672ajPDa8FHD3LR4Qq8EL9AT86RWcWJvuxKMWN5a2F0zr4DVxaCmJ4iQlRUwwueybrajPRVPOsvcH7GVS0z3QqT6OwAx5IG1ks4j9T0ADR8szrSIRIW6ZuBmWisQvie4TskbuOAL5DJaREhHIanKIEiSMU4movTtULwFw9decBhKnpvLEwymOqgQnfMMA9eEna6AnsJpy2JzecelwDfV6vPydkMBvGDpi8AJucYn6BEOG5f4ylYeXGuzBUUJuQdn4GdO0jEw4GOOPjvNL2LbCYCvqExd8L9S1BxSX8KebsAARBwBUEkRAPJdbAhUrb0ksCWpgZdQlAEaBJhLWYNVF8s3eBwQONqfVcbcjcYYDbJQP2Uv9wrcBHmwZJcpaKMIfDBgcWTdx1ucaAYyKzBP1OfJ4uFHGBr8R5aok4nXpugH2ZmrkKP8dhP9Qcq33MNbXHOw99wy7rDLlNdNsrHB234Stl1WDm0WndvhMYEqhitOj7MI8aFwcoo1hhxLYtRx0pUII5rmJw7yRq7AfsAxUWWKPXoMVSxzBZkbrRLGXqRAKE6fNkD34oTOJgxy1OiWHEwRXGc7WcbwPevV9wRD2StG4Tko10FdHNwxlIXq8kEqcdF6LUhnZhvVVTxmlXoDiJ6Bn4gc0N8Hieg9ifpLZAk3tGleL5wxfjWRhNcrzqKLEKVAxHxqS202HqibQ6OMaetMQTiSRPLfiLUejsBngAlHUp7ztDIx5SH0Q1DzT1AHbju9uOn4kvqO8aKY82rhRvf1t4HF1DpZyK3UioPizpMTHW95xvtkZZsmedBLDYMHpx2j1hthM4GnrjrBEOuceOrxWTPPOOt1rVHV6gjJWG5dRojJAsFpcbBGl5CnNGixOnCPWSowJl3BstCAzbu667k3miCLETTDlXY9FHZ6RxX7cYfojYDMA3KMk2OL1xgnotFJLt5cOQE5tm7XYtpqdOhUHrO4SR4vSisL6H5sS2E5at2lEXAMPLE',
];