dnf-json: read arguments as JSON from stdin
This allows us to have more expressive input arguments.
This commit is contained in:
parent
0feb4e4d44
commit
cae1fdd04d
2 changed files with 28 additions and 14 deletions
13
dnf-json
13
dnf-json
|
|
@ -11,16 +11,9 @@ def timestamp_to_rfc3339(timestamp):
|
|||
return d.strftime('%Y-%m-%dT%H:%M:%SZ')
|
||||
|
||||
|
||||
# base.sack.query().filter(provides=str(reldep))
|
||||
|
||||
|
||||
try:
|
||||
command = sys.argv[1]
|
||||
arguments = sys.argv[2:]
|
||||
except IndexError:
|
||||
command = "list"
|
||||
arguments = []
|
||||
|
||||
call = json.load(sys.stdin)
|
||||
command = call["command"]
|
||||
arguments = call.get("arguments", {})
|
||||
|
||||
base = dnf.Base()
|
||||
|
||||
|
|
|
|||
|
|
@ -39,10 +39,22 @@ type PackageSpec struct {
|
|||
Arch string `json:"arch,omitempty"`
|
||||
}
|
||||
|
||||
func runDNF(command string, arguments []string, result interface{}) error {
|
||||
argv := append([]string{"dnf-json", command}, arguments...)
|
||||
func runDNF(command string, arguments interface{}, result interface{}) error {
|
||||
var call = struct {
|
||||
Command string `json:"command"`
|
||||
Arguments interface{} `json:"arguments,omitempty"`
|
||||
}{
|
||||
command,
|
||||
arguments,
|
||||
}
|
||||
|
||||
cmd := exec.Command("python3", "dnf-json")
|
||||
|
||||
stdin, err := cmd.StdinPipe()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd := exec.Command("python3", argv...)
|
||||
cmd.Stderr = os.Stderr
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
|
|
@ -54,6 +66,12 @@ func runDNF(command string, arguments []string, result interface{}) error {
|
|||
return err
|
||||
}
|
||||
|
||||
err = json.NewEncoder(stdin).Encode(call)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
stdin.Close()
|
||||
|
||||
err = json.NewDecoder(stdout).Decode(result)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -69,8 +87,11 @@ func FetchPackageList(repo RepoConfig) (PackageList, error) {
|
|||
}
|
||||
|
||||
func Depsolve(specs ...string) ([]PackageSpec, error) {
|
||||
var arguments = struct {
|
||||
PackageSpecs []string `json:"package-specs"`
|
||||
}{ specs }
|
||||
var dependencies []PackageSpec
|
||||
err := runDNF("depsolve", specs, &dependencies)
|
||||
err := runDNF("depsolve", arguments, &dependencies)
|
||||
return dependencies, err
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue