mirror of
https://github.com/Luzifer/password.git
synced 2024-12-20 12:51:17 +00:00
Rebuilt workflow for better design and auto-update
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
3d8964f818
commit
28eccb5743
11 changed files with 82 additions and 104 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1 +1,4 @@
|
||||||
password
|
password
|
||||||
|
dist
|
||||||
|
password_darwin_amd64
|
||||||
|
PasswordGenerator.alfredworkflow
|
||||||
|
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
[submodule "alfred-workflow/lib"]
|
||||||
|
path = alfred-workflow/lib
|
||||||
|
url = https://github.com/deanishe/alfred-workflow.git
|
11
Makefile
11
Makefile
|
@ -16,6 +16,13 @@ publish:
|
||||||
bash golang.sh
|
bash golang.sh
|
||||||
|
|
||||||
workflow:
|
workflow:
|
||||||
cp password_darwin_amd64 password
|
mkdir -p dist
|
||||||
zip -9 -j PasswordGenerator.alfredworkflow alfred-workflow/* password
|
cp -r password_darwin_amd64 \
|
||||||
|
alfred-workflow/exec.py \
|
||||||
|
alfred-workflow/icon.png \
|
||||||
|
alfred-workflow/info.plist \
|
||||||
|
alfred-workflow/lib/workflow \
|
||||||
|
dist
|
||||||
|
echo -n $(shell git describe --tags --exact-match) > dist/version
|
||||||
|
cd dist && zip -r -9 ../PasswordGenerator.alfredworkflow *
|
||||||
github-release upload --user luzifer --repo password --tag $(shell git describe --tags --exact-match) --name PasswordGenerator.alfredworkflow --file PasswordGenerator.alfredworkflow
|
github-release upload --user luzifer --repo password --tag $(shell git describe --tags --exact-match) --name PasswordGenerator.alfredworkflow --file PasswordGenerator.alfredworkflow
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
|
@ -1,9 +0,0 @@
|
||||||
# 1.2.0 / 2017-09-22
|
|
||||||
|
|
||||||
* Update password utility from github
|
|
||||||
* Stripping newlines from the password
|
|
||||||
* Updated password to v.1.2.2
|
|
||||||
* Updated password tool
|
|
||||||
* Prevent generation of passwords with long duration
|
|
||||||
* Migrated to Luzifer/password backed password generation
|
|
||||||
* Added README
|
|
|
@ -1,5 +0,0 @@
|
||||||
compress:
|
|
||||||
curl -sSLfo ./password https://github.com/Luzifer/password/releases/download/v1.4.0/password_darwin_amd64
|
|
||||||
chmod +x ./password
|
|
||||||
rm -rf *.pyc PasswordGenerator.alfredworkflow /tmp/password_master_darwin-amd64.zip /tmp/password
|
|
||||||
zip -9 PasswordGenerator.alfredworkflow * -x PasswordGenerator.alfredworkflow Makefile
|
|
|
@ -1,11 +0,0 @@
|
||||||
# Alfred2 Password Generator
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
* Ensure your Alfred 2 have the Powerpack enabled
|
|
||||||
* Download [PasswordGenerator.alfredworkflow](https://github.com/Luzifer/alfred-pwdgen/blob/master/PasswordGenerator.alfredworkflow?raw=true)
|
|
||||||
* Open downloaded file - the workflow will install itself
|
|
||||||
|
|
||||||
## Patches
|
|
||||||
|
|
||||||
Please don't republish this workflow but fork it and send me a pull request for your changes. I'll republish the workflow at it's current locations.
|
|
45
alfred-workflow/exec.py
Normal file
45
alfred-workflow/exec.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from workflow import Workflow, ICON_WEB, web
|
||||||
|
|
||||||
|
|
||||||
|
def main(wf):
|
||||||
|
password_length = 20
|
||||||
|
use_special = False
|
||||||
|
|
||||||
|
if len(wf.args):
|
||||||
|
for arg in wf.args[0].split():
|
||||||
|
if arg.isdigit():
|
||||||
|
password_length = int(arg)
|
||||||
|
elif arg == 's':
|
||||||
|
use_special = True
|
||||||
|
|
||||||
|
if password_length < 5 or password_length > 256:
|
||||||
|
wf.add_item(title="Password length out of bounds",
|
||||||
|
subtitle="Please use a reasonable password length between 5 and 256")
|
||||||
|
wf.send_feedback()
|
||||||
|
return 1
|
||||||
|
|
||||||
|
command = ["./password_darwin_amd64", "get", "-l", str(password_length)]
|
||||||
|
if use_special:
|
||||||
|
command.append("-s")
|
||||||
|
result = subprocess.check_output(command).strip()
|
||||||
|
|
||||||
|
wf.add_item(title=result, arg=result)
|
||||||
|
wf.send_feedback()
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
wf = Workflow(update_settings={
|
||||||
|
'github_slug': 'Luzifer/password',
|
||||||
|
})
|
||||||
|
|
||||||
|
if wf.update_available:
|
||||||
|
# Download new version and tell Alfred to install it
|
||||||
|
wf.start_update()
|
||||||
|
|
||||||
|
sys.exit(wf.run(main))
|
|
@ -1,47 +0,0 @@
|
||||||
#author: Peter Okma
|
|
||||||
import xml.etree.ElementTree as et
|
|
||||||
|
|
||||||
|
|
||||||
class Feedback():
|
|
||||||
"""Feeback used by Alfred Script Filter
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
fb = Feedback()
|
|
||||||
fb.add_item('Hello', 'World')
|
|
||||||
fb.add_item('Foo', 'Bar')
|
|
||||||
print fb
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.feedback = et.Element('items')
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
"""XML representation used by Alfred
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
XML string
|
|
||||||
"""
|
|
||||||
return et.tostring(self.feedback)
|
|
||||||
|
|
||||||
def add_item(self, title, subtitle="", arg="", valid="yes", autocomplete="", icon="icon.png"):
|
|
||||||
"""
|
|
||||||
Add item to alfred Feedback
|
|
||||||
|
|
||||||
Args:
|
|
||||||
title(str): the title displayed by Alfred
|
|
||||||
Keyword Args:
|
|
||||||
subtitle(str): the subtitle displayed by Alfred
|
|
||||||
arg(str): the value returned by alfred when item is selected
|
|
||||||
valid(str): whether or not the entry can be selected in Alfred to trigger an action
|
|
||||||
autcomplete(str): the text to be inserted if an invalid item is selected. This is only used if 'valid' is 'no'
|
|
||||||
icon(str): filename of icon that Alfred will display
|
|
||||||
"""
|
|
||||||
item = et.SubElement(self.feedback, 'item', uid=str(len(self.feedback)),
|
|
||||||
arg=arg, valid=valid, autocomplete=autocomplete)
|
|
||||||
_title = et.SubElement(item, 'title')
|
|
||||||
_title.text = title
|
|
||||||
_sub = et.SubElement(item, 'subtitle')
|
|
||||||
_sub.text = subtitle
|
|
||||||
_icon = et.SubElement(item, 'icon')
|
|
||||||
_icon.text = icon
|
|
|
@ -3,7 +3,7 @@
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>bundleid</key>
|
<key>bundleid</key>
|
||||||
<string>me.knut.pwd</string>
|
<string>io.luzifer.pwd</string>
|
||||||
<key>category</key>
|
<key>category</key>
|
||||||
<string>Tools</string>
|
<string>Tools</string>
|
||||||
<key>connections</key>
|
<key>connections</key>
|
||||||
|
@ -17,6 +17,8 @@
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>modifiersubtext</key>
|
<key>modifiersubtext</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
|
<key>vitoclose</key>
|
||||||
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -37,17 +39,23 @@
|
||||||
<false/>
|
<false/>
|
||||||
<key>clipboardtext</key>
|
<key>clipboardtext</key>
|
||||||
<string>{query}</string>
|
<string>{query}</string>
|
||||||
|
<key>transient</key>
|
||||||
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<string>alfred.workflow.output.clipboard</string>
|
<string>alfred.workflow.output.clipboard</string>
|
||||||
<key>uid</key>
|
<key>uid</key>
|
||||||
<string>F417810A-4CC7-4844-9B6E-DA2D6B40543C</string>
|
<string>F417810A-4CC7-4844-9B6E-DA2D6B40543C</string>
|
||||||
<key>version</key>
|
<key>version</key>
|
||||||
<integer>0</integer>
|
<integer>2</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>config</key>
|
<key>config</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>alfredfiltersresults</key>
|
||||||
|
<false/>
|
||||||
|
<key>argumenttrimmode</key>
|
||||||
|
<integer>0</integer>
|
||||||
<key>argumenttype</key>
|
<key>argumenttype</key>
|
||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
<key>escaping</key>
|
<key>escaping</key>
|
||||||
|
@ -65,38 +73,17 @@
|
||||||
<key>runningsubtext</key>
|
<key>runningsubtext</key>
|
||||||
<string>Generating password...</string>
|
<string>Generating password...</string>
|
||||||
<key>script</key>
|
<key>script</key>
|
||||||
<string>import subprocess, sys
|
<string>python exec.py "$1"</string>
|
||||||
from feedback import Feedback
|
<key>scriptargtype</key>
|
||||||
|
<integer>1</integer>
|
||||||
password_length = 20
|
<key>scriptfile</key>
|
||||||
use_special = False
|
<string></string>
|
||||||
|
|
||||||
for arg in '{query}'.split():
|
|
||||||
if arg.isdigit():
|
|
||||||
password_length = int(arg)
|
|
||||||
elif arg == 's':
|
|
||||||
use_special = True
|
|
||||||
|
|
||||||
if password_length < 5 or password_length > 128:
|
|
||||||
fb = Feedback()
|
|
||||||
fb.add_item(title="Password length out of bounds", subtitle="Please use a reasonable password length between 5 and 128")
|
|
||||||
print fb
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
command = ["./password", "get", "-l", str(password_length)]
|
|
||||||
if use_special:
|
|
||||||
command.append("-s")
|
|
||||||
result = subprocess.check_output(command).strip()
|
|
||||||
|
|
||||||
fb = Feedback()
|
|
||||||
fb.add_item(title=result, arg=result)
|
|
||||||
print fb</string>
|
|
||||||
<key>subtext</key>
|
<key>subtext</key>
|
||||||
<string>Generates a secure password with <n> length</string>
|
<string>Generates a secure password with <n> length</string>
|
||||||
<key>title</key>
|
<key>title</key>
|
||||||
<string>Password Generator</string>
|
<string>Password Generator</string>
|
||||||
<key>type</key>
|
<key>type</key>
|
||||||
<integer>3</integer>
|
<integer>0</integer>
|
||||||
<key>withspace</key>
|
<key>withspace</key>
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
|
@ -105,7 +92,7 @@ print fb</string>
|
||||||
<key>uid</key>
|
<key>uid</key>
|
||||||
<string>F8CBCF9B-3B33-400E-B6AD-6B8500938BA4</string>
|
<string>F8CBCF9B-3B33-400E-B6AD-6B8500938BA4</string>
|
||||||
<key>version</key>
|
<key>version</key>
|
||||||
<integer>0</integer>
|
<integer>2</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>readme</key>
|
<key>readme</key>
|
||||||
|
@ -114,11 +101,15 @@ print fb</string>
|
||||||
<dict>
|
<dict>
|
||||||
<key>F417810A-4CC7-4844-9B6E-DA2D6B40543C</key>
|
<key>F417810A-4CC7-4844-9B6E-DA2D6B40543C</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>xpos</key>
|
||||||
|
<integer>700</integer>
|
||||||
<key>ypos</key>
|
<key>ypos</key>
|
||||||
<real>170</real>
|
<real>170</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>F8CBCF9B-3B33-400E-B6AD-6B8500938BA4</key>
|
<key>F8CBCF9B-3B33-400E-B6AD-6B8500938BA4</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>xpos</key>
|
||||||
|
<integer>300</integer>
|
||||||
<key>ypos</key>
|
<key>ypos</key>
|
||||||
<real>170</real>
|
<real>170</real>
|
||||||
</dict>
|
</dict>
|
||||||
|
|
1
alfred-workflow/lib
Submodule
1
alfred-workflow/lib
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 39241c12cff55dd94cd001c32de2e319a71a6e66
|
Loading…
Reference in a new issue