DMF Command-line Interface¶
This page lists the commands and options for the DMF command-line interface, which is a Python program called dmf. There are several usage examples for each sub-command. These examples assume the UNIX bash shell.
Contents
dmf¶
Data management framework command wrapper. This base command has some options for verbosity that can be applied to any sub-command.
dmf options¶
-
-v
¶
-
--verbose
¶
Increase verbosity. Show warnings if given once, then info, and then debugging messages.
-
-q
¶
-
--quiet
¶
Increase quietness. If given once, only show critical messages. If given twice, show no messages.
dmf usage¶
Run sub-command
with logging at level “error”:
$ dmf <sub-command>
Run sub-command
and log warnings:
$ dmf <sub-command>
Run sub-command
and log informational / warning messages:
$ dmf -vv <sub-command>
Run sub-command
only logging fatal errors:
$ dmf -q <sub-command>
Run sub-command
with no logging at all:
$ dmf -qq <sub-command>
dmf subcommands¶
The subcommands are listed alphabetically below. For each, keep in mind that any unique
prefix of that command will be accepted. For example, for dmf init
, the
user may also type dmf ini
. However, dmf in
will not work because that
would also be a valid prefix for dmf info
.
In addition, there are some aliases for some of the sub-commands:
dmf info
=> dmf resource or dmf showdmf ls
=> dmf listdmf register
=> dmf adddmf related
=> dmf graphdmf rm
=> dmf deletedmf status
=> dmf describe
usage overview¶
To give a feel for the context in which you might actually run these commands, below is a simple example that uses each command:
# create a new workspace
$ dmf init ws --name workspace --desc "my workspace" --create
Configuration in '/home/dang/src/idaes/dangunter/idaes-dev/docs/ws/config.yaml
# view status of the workspace
$ dmf status
settings:
workspace: /home/myuser/ws
workspace:
location: /home/myuser/ws
name: workspace
description: my workspace
created: 2019-04-20 08:32:59
modified: 2019-04-20 08:32:59
# add some resources from files
$ echo "one" > oldfile ; echo "two" > newfile
$ dmf register oldfile --version 0.0.1
2792c0ceb0734ed4b302c44884f2d404
$ dmf register newfile --version 0.0.2 --prev 2792c0ceb0734ed4b302c44884f2d404
6ddee9bb2bb3420ab10aaf4c74d186f6
# list the current workspace contents
$ dmf ls
id type desc modified
2792 data oldfile 2019-04-20 15:33:11
6dde data newfile 2019-04-20 15:33:23
# look at one one resource (newfile)
$ dmf info 6dde
Resource 6ddee9bb2bb3420ab10aaf4c74d186f6
created
'2019-04-20 15:33:23'
creator
name: dang
datafiles
- desc: newfile
is_copy: true
path: newfile
sha1: 7bbef45b3bc70855010e02460717643125c3beca
datafiles_dir
/home/myuser/ws/files/8027bf92628f41a0b146a5167d147e9d
desc
newfile
doc_id
2
id_
6ddee9bb2bb3420ab10aaf4c74d186f6
modified
'2019-04-20 15:33:23'
relations
- 2792c0ceb0734ed4b302c44884f2d404 --[version]--> ME
type
data
version
0.0.2 @ 2019-04-20 15:33:23
# see relations
$ dmf related 2792
2792 data
│
└──┤version├─▶ 6dde data -
# remove the "old" file
$ dmf rm 2792
id type desc modified
2792c0ceb0734ed4b302c44884f2d404 data oldfile 2019-04-20 15:33:11
Remove this resource [y/N]? y
resource removed
$ dmf ls
id type desc modified
6dde data newfile 2019-04-20 15:33:23
dmf find¶
Search for resources by a combination of their fields. Several convenient fields are provided. At this time, a comprehensive capability to search on any field is not available.
dmf find options¶
In addition to the options below, this command also accepts all the
dmf ls options, although the --color/--no-color
option is
ignored for JSON output.
-
--output
value
¶
Output style/format. Possible values:
- list
- (Default) Show results as a listing, as from the ls subcommand.
- info
- Show results as individual records, as from the info subcommand.
- json
- Show results are JSON objects
-
--by
value
¶
Look for “value” in the value of the creator.name field.
-
--created
value
¶
Use “value” as a date or date range and filter on records that
have a created date in that range. Dates should be in a form that is
accepted by the Pendulum parse function.
The special token ..
is used to indicate date ranges, as in:
2012-03-19
: On March 19, 20122012-03-19..2012-03-22
: From March 19 to March 22, 20122012-03-19..
: After March 19, 2012..2012-03-19
: Before March 19, 2012
Note that times may also be part of the date strings.
-
--file
value
¶
Look for “value” in the value of the desc field in one of the datafiles.
-
--modified
value
¶
Use “value” as a date or date range and filter on records that
have a modified date in that range. See --created
for
details on the date format.
-
--name
value
¶
Look for “value” as one of the values of the alias field.
-
--type
value
¶
Look for “value” as the value of the type field.
dmf find usage¶
By default, find will essentially provide a filtered listing of resources. If used without options, it is basically an alias for ls.
$ dmf ls
id type desc modified
2517 data file1.txt 2019-04-29 17:29:00
344c data file2.txt 2019-04-29 17:29:01
5d98 data A 2019-04-29 17:28:41
602a data B 2019-04-29 17:28:56
8c55 data C 2019-04-29 17:28:58
9cbe data D 2019-04-29 17:28:59
$ dmf find
id type desc modified
2517 data file1.txt 2019-04-29 17:29:00
344c data file2.txt 2019-04-29 17:29:01
5d98 data A 2019-04-29 17:28:41
602a data B 2019-04-29 17:28:56
8c55 data C 2019-04-29 17:28:58
9cbe data D 2019-04-29 17:28:59
The find-specific options add filters. In the example below, the find filters for files that were modified after the given date and time.
$ dmf find --modified 2019-04-29T17:29:00..
id type desc modified
2517 data file1.txt 2019-04-29 17:29:00
344c data file2.txt 2019-04-29 17:29:01
dmf info¶
Show detailed information about a resource.
This command may also be referred to as dmf show
.
dmf info options¶
-
identifier
¶
Identifier, or unique prefix thereof, of the resource.
Any unique prefix of the identifier will work, but if that prefix
matches multiple identifiers, you need to add --multiple
to allow multiple records in the output.
-
--multiple
¶
Allow multiple records in the output (see identifier
)
-
-f,--format
value
¶
Output format. Accepts the following values:
- term
- Terminal output (colored, if the terminal supports it), with values that are empty left out and some values simplified for easy reading.
- json
- Raw JSON value for the resource, with newlines and indents for readability.
- jsonc
- Raw JSON value for the resource, “compact” version with no extra whitespace added.
dmf info usage¶
The default is to show, with some terminal colors, a summary of the resource:
$ dmf info 0b62
Resource 0b62d999f0c44b678980d6a5e4f5d37d
created
'2019-03-23 17:49:35'
creator
name: dang
datafiles
- desc: foo13
is_copy: true
path: foo13
sha1: feee44ad365b6b1ec75c5621a0ad067371102854
datafiles_dir
/home/dang/src/idaes/dangunter/idaes-dev/ws2/files/71d101327d224302aa8875802ed2af52
desc
foo13
doc_id
4
id_
0b62d999f0c44b678980d6a5e4f5d37d
modified
'2019-03-23 17:49:35'
relations
- 1e41e6ae882b4622ba9043f4135f2143 --[derived]--> ME
type
data
version
0.0.0 @ 2019-03-23 17:49:35
The same resource in JSON format:
$ dmf info --format json 0b62
{
"id_": "0b62d999f0c44b678980d6a5e4f5d37d",
"type": "data",
"aliases": [],
"codes": [],
"collaborators": [],
"created": 1553363375.817961,
"modified": 1553363375.817961,
"creator": {
"name": "dang"
},
"data": {},
"datafiles": [
{
"desc": "foo13",
"path": "foo13",
"sha1": "feee44ad365b6b1ec75c5621a0ad067371102854",
"is_copy": true
}
],
"datafiles_dir": "/home/dang/src/idaes/dangunter/idaes-dev/ws2/files/71d101327d224302aa8875802ed2af52",
"desc": "foo13",
"relations": [
{
"predicate": "derived",
"identifier": "1e41e6ae882b4622ba9043f4135f2143",
"role": "object"
}
],
"sources": [],
"tags": [],
"version_info": {
"created": 1553363375.817961,
"version": [
0,
0,
0,
""
],
"name": ""
},
"doc_id": 4
}
And one more time, in “compact” JSON:
$ dmf info --format jsonc 0b62
{"id_": "0b62d999f0c44b678980d6a5e4f5d37d", "type": "data", "aliases": [], "codes": [], "collaborators": [], "created": 1553363375.817961, "modified": 1553363375.817961, "creator": {"name": "dang"}, "data": {}, "datafiles": [{"desc": "foo13", "path": "foo13", "sha1": "feee44ad365b6b1ec75c5621a0ad067371102854", "is_copy": true}], "datafiles_dir": "/home/dang/src/idaes/dangunter/idaes-dev/ws2/files/71d101327d224302aa8875802ed2af52", "desc": "foo13", "relations": [{"predicate": "derived", "identifier": "1e41e6ae882b4622ba9043f4135f2143", "role": "object"}], "sources": [], "tags": [], "version_info": {"created": 1553363375.817961, "version": [0, 0, 0, ""], "name": ""}, "doc_id": 4}
dmf init¶
Initialize the current workspace. Optionally, create a new workspace.
dmf init options¶
-
path
¶
Use the provided path
as the workspace path. This is required.
-
--create
¶
Create a new workspace at location provided by path
. Use the
--name
and --desc
options to set the workspace name and
description, respectively. If these are not given, they will be prompted for
interactively.
-
--name
¶
Workspace name, used by --create
-
--desc
¶
Workspace description, used by --create
dmf init usage¶
Note
In the following examples, the current working directory is
set to /home/myuser
.
This command sets a value in the user-global configuration file
in .dmf
, in the user’s home directory, so that all other dmf
commands know which workspace to use. With the --create
option,
a new empty workspace can be created.
Create new workspace in sub-directory ws
, with given name and description:
$ dmf init ws --create --name "foo" --desc "foo workspace description"
Configuration in '/home/myuser/ws/config.yaml
Create new workspace in sub-directory ws
, providing the name and
description interactively:
$ dmf init ws --create
New workspace name: foo
New workspace description: foo workspace description
Configuration in '/home/myuser/ws/config.yaml
Switch to workspace ws2
:
$ dmf init ws2
If you try to switch to a non-existent workspace, you will get an error message:
$ dmf init doesnotexist
Existing workspace not found at path='doesnotexist'
Add --create flag to create a workspace.
$ mkdir some_random_directory
$ dmf init some_random_directory
Workspace configuration not found at path='some_random_directory/'
If the workspace exists, you cannot create it:
$ dmf init ws --create --name "foo" --desc "foo workspace description"
Configuration in '/home/myuser/ws/config.yaml
$ dmf init ws --create
Cannot create workspace: path 'ws' already exists
And, of course, you can’t create workspaces anywhere you don’t have permissions to create directories:
$ mkdir forbidden
$ chmod 000 forbidden
$ dmf init forbidden/ws --create
Cannot create workspace: path 'forbidden/ws' not accessible
dmf ls¶
This command lists resources in the current workspace.
dmf ls options¶
-
--color
¶
Allow (if terminal supports it) colored terminal output. This is the default.
-
--no-color
¶
Disallow, even if terminal supports it, colored terminal output.
-
-s,--show
¶
Pick field to show in output table. This option can be repeated to show any known subset of fields. Also the option value can have commas in it to hold multiple fields. Default fields, if this option is not specified at all, are “type”, “desc”, and “modified”. The resource identifier field is always shown first.
- codes
- List name of code(s) in resource. May be shortened with ellipses.
- created
- Date created.
- desc
- Description of resource.
- files
- List names of file(s) in resource. May be shortened with ellipses.
- modified
- Date modified.
- type
- Name of the type of resource.
- version
- Resource version.
You can specify other fields from the schema, as long as they are not
arrays of objects, i.e. you can say --show tags
or --show version_info.version
,
but --show sources
is too complicated for a tabular listing. To
see detailed values in a record use the dmf info command.
-
-S,--sort
¶
Sort by given field; if repeated, combine to make a compound sort key. These
fields are a subset of those in -s,--show
, with the addition of
id
for sorting by the identifier: “id”, “type”, “desc”, “created”, “modified”,
and/or “version”.
-
--no-prefix
¶
By default, shown identifier is the shortest unique prefix, but if you don’t want the identifier shortened, this option will force showing it in full.
-
-r,--reverse
¶
Reverse the order of the sorting given by (or implied by absence of) the
-S,--sort
option.
dmf ls usage¶
Note
In the following examples, the current working directory is
set to /home/myuser
and the workspace is named ws
.
Without arguments, show the resources in an arbitrary (though consistent) order:
$ dmf ls
id type desc modified
0b62 data foo13 2019-03-23 17:49:35
1e41 data foo10 2019-03-23 17:47:53
6c9a data foo14 2019-03-23 17:51:59
d3d5 data bar1 2019-03-26 13:07:02
e780 data foo11 2019-03-23 17:48:11
eb60 data foo12 2019-03-23 17:49:08
Add a sort key to sort by, e.g. modified date
$ dmf ls -S modified
id type desc modified
1e41 data foo10 2019-03-23 17:47:53
e780 data foo11 2019-03-23 17:48:11
eb60 data foo12 2019-03-23 17:49:08
0b62 data foo13 2019-03-23 17:49:35
6c9a data foo14 2019-03-23 17:51:59
d3d5 data bar1 2019-03-26 13:07:02
Especially for resources of type “data”, showing the first (possibly only) file that is referred to by the resource is useful:
$ dmf ls -S modified -s type -s modified -s files
id type modified files
1e41 data 2019-03-23 17:47:53 foo10
e780 data 2019-03-23 17:48:11 foo11
eb60 data 2019-03-23 17:49:08 foo12
0b62 data 2019-03-23 17:49:35 foo13
6c9a data 2019-03-23 17:51:59 foo14
d3d5 data 2019-03-26 13:07:02 bar1
Note that you don’t actually have to show a field to sort by it (compare sort order with results from command above):
$ dmf ls -S modified -s type -s files
id type files
1e41 data foo10
e780 data foo11
eb60 data foo12
0b62 data foo13
6c9a data foo14
d3d5 data bar1
Add --no-prefix
to show the full identifier:
$ dmf ls -S modified -s type -s files --no-prefix
id type files
1e41e6ae882b4622ba9043f4135f2143 data foo10
e7809d25b390453487998e1f1ef0e937 data foo11
eb606172dde74aa79eea027e7eb6a1b6 data foo12
0b62d999f0c44b678980d6a5e4f5d37d data foo13
6c9a85629cb24e9796a2d123e9b03601 data foo14
d3d5981106ce4d9d8cccd4e86c2cd184 data bar1
dmf register¶
Register a new resource with the DMF, using a file as an input.
An alias for this command is dmf add
.
dmf register options¶
-
--no-copy
¶
Do not copy the file, instead remember path to current location. Default is to copy the file under the workspace directory.
-
-t,--type
¶
Explicitly specify the type of resource. If this is not given, then
try to infer the resource type from the file. The default will be ‘data’.
The full list of resource types is in idaes.dmf.resource.RESOURCE_TYPES
-
--strict
¶
If inferring the type fails, report an error. With --no-strict
, or no option,
if inferring the type fails, fall back to importing as a generic file.
-
--no-unique
¶
Allow duplicate files. The default is --unique
, which will
stop and print an error if another resource has a file matching this
file’s name and contents.
-
--contained
resource
¶
Add a ‘contained in’ relation to the given resource.
-
--derived
resource
¶
Add a ‘derived from’ relation to the given resource.
-
--used
resource
¶
Add a ‘used by’ relation to the given resource.
-
--prev
resource
¶
Add a ‘version of previous’ relation to the given resource.
-
--is-subject
¶
If given, reverse the sense of any relation(s) added to the resource so that the newly created resource is the subject and the existing resource is the object. Otherwise, the new resource is the object of the relation.
-
--version
¶
Set the semantic version of the resource. From 1 to 4 part semantic versions are allowed, e.g.
- 1
- 1.0
- 1.0.1
- 1.0.1-alpha
See http://semver.org and the function idaes.dmf.resource.version_list()
for more details.
dmf register usage¶
Note
In the following examples, the current working directory is
set to /home/myuser
and the workspace is named ws
.
Register a new file, which is a CSV data file, and use the --info
option to show the created resource.
$ printf "index,time,value\n1,0.1,1.0\n2,0.2,1.3\n" > file.csv
$ dmf reg file.csv --info
Resource 117a42287aec4c5ca333e0ff3ac89639
created
'2019-04-11 03:58:52'
creator
name: dang
datafiles
- desc: file.csv
is_copy: true
path: file.csv
sha1: f1171a6442bd6ce22a718a0e6127866740c9b52c
datafiles_dir
/home/myuser/ws/files/4db42d92baf3431ab31d4f91ab1a673b
desc
file.csv
doc_id
1
id_
117a42287aec4c5ca333e0ff3ac89639
modified
'2019-04-11 03:58:52'
type
data
version
0.0.0 @ 2019-04-11 03:58:52
If you try to register (add) the same file twice, it will be an error by default.
You need to add the --no-unique
option to allow it.
$ printf "index,time,value\n1,0.1,1.0\n2,0.2,1.3\n" > timeseries.csv
$ dmf add timeseries.csv
2315bea239c147e4bc6d2e1838e4101f
$ dmf add timeseries.csv
This file is already in 1 resource(s): 2315bea239c147e4bc6d2e1838e4101f
$ dmf add --no-unique timeseries.csv
3f95851e4931491b995726f410998491
If you register a file ending in “.json”, it will be parsed (unless it is
over 1MB) and, if it passes, registered as type JSON. If the parse fails, it
will be registerd as a generic file unless the --strict
option is
given (with this option, failure to parse will be an error):
$ echo "totally bogus" > notreally.json
$ dmf reg notreally.json
2019-04-12 06:06:47,003 [WARNING] idaes.dmf.resource: File ending in '.json' is not valid JSON: treating as generic file
d22727c678a1499ab2c5224e2d83d9df
$ dmf reg --strict notreally.json
Failed to infer resource: File ending in '.json' is not valid JSON
You can explicitly specify the type of the resource with the
-t,--type
option. In that case, any failure
to validate will be an error. For example, if you say the resource is a Jupyter
Notebook file, and it is not, it will fail. But the same file with type “data”
will be fine:
$ echo "Ceci n'est pas une notebook" > my.ipynb
$ dmf reg -t notebook my.ipynb
Failed to load resource: resource type 'notebook': not valid JSON
$ dmf reg -t data my.ipynb
0197a82abab44ecf980d6e42e299b258
You can add links to existing resources with the options --contained
,
--derived
, --used
, and --prev
. For all of these,
the new resource being registered is the target of the relation and the
option argument is the identifier of an existing resource that is the subject of the
relation.
For example, here we add a “shoebox” resource and then some “shoes” that are contained in it:
$ touch shoebox.txt shoes.txt closet.txt
$ dmf add shoebox.txt
755374b6503a47a09870dfbdc572e561
$ dmf add shoes.txt --contained 755374b6503a47a09870dfbdc572e561
dba0a5dc7d194040ac646bf18ab5eb50
$ dmf info 7553 # the "shoebox" contains the "shoes"
Resource 755374b6503a47a09870dfbdc572e561
created
'2019-04-11 20:16:50'
creator
name: dang
datafiles
- desc: shoebox.txt
is_copy: true
path: shoebox.txt
sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709
datafiles_dir
/home/dang/src/idaes/dangunter/idaes-dev/docs/ws/files/7f3ff820676b41689bb32bc325fd2d1b
desc
shoebox.txt
doc_id
9
id_
755374b6503a47a09870dfbdc572e561
modified
'2019-04-11 20:16:50'
relations
- dba0a5dc7d194040ac646bf18ab5eb50 <--[contains]-- ME
type
data
version
0.0.0 @ 2019-04-11 20:16:50
$ dmf info dba0 # the "shoes" are in the "shoebox"
Resource dba0a5dc7d194040ac646bf18ab5eb50
created
'2019-04-11 20:17:28'
creator
name: dang
datafiles
- desc: shoes.txt
is_copy: true
path: shoes.txt
sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709
datafiles_dir
/home/dang/src/idaes/dangunter/idaes-dev/docs/ws/files/a27f98c24d1848eaba1b26e5ef87be88
desc
shoes.txt
doc_id
10
id_
dba0a5dc7d194040ac646bf18ab5eb50
modified
'2019-04-11 20:17:28'
relations
- 755374b6503a47a09870dfbdc572e561 --[contains]--> ME
type
data
version
0.0.0 @ 2019-04-11 20:17:28
To reverse the sense of the relation, add the --is-subject
flag.
For example, we now add a “closet” resource that contains the existing “shoebox”.
This means the shoebox now has two different “contains” type of relations.
$ dmf add closet.txt --is-subject --contained 755374b6503a47a09870dfbdc572e561
22ace0f8ed914fa3ac3e7582748924e4
$ dmf info 7553
Resource 755374b6503a47a09870dfbdc572e561
created
'2019-04-11 20:16:50'
creator
name: dang
datafiles
- desc: shoebox.txt
is_copy: true
path: shoebox.txt
sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709
datafiles_dir
/home/dang/src/idaes/dangunter/idaes-dev/docs/ws/files/7f3ff820676b41689bb32bc325fd2d1b
desc
shoebox.txt
doc_id
9
id_
755374b6503a47a09870dfbdc572e561
modified
'2019-04-11 20:16:50'
relations
- dba0a5dc7d194040ac646bf18ab5eb50 <--[contains]-- ME
- 22ace0f8ed914fa3ac3e7582748924e4 --[contains]--> ME
type
data
version
0.0.0 @ 2019-04-11 20:16:50
You can give your new resource a version with the --version
option.
You can use this together with the --prev
option to link
between multiple versions of the same underlying data:
# note: following command stores the output of "dmf reg", which is the
# id of the new resource, in the shell variable "oldid"
$ oldid=$( dmf reg oldfile.py --type code --version 0.0.1 )
$ dmf reg newfile.py --type code --version 0.0.2 --prev $oldid
ef2d801ca29a4a0a8c6f79ee71d3fe07
$ dmf ls --show type --show version --show codes --sort version
id type version codes
44e7 code 0.0.1 oldfile.py
ef2d code 0.0.2 newfile.py
$ dmf related $oldid
44e7 code
│
└──┤version├─▶ ef2d code -
dmf rm¶
Remove one or more resources. This also removes relations (links) to other resources.
dmf rm options¶
-
identifier
¶
The identifier, or identifier prefix, of the resource(s) to remove
-
--list,--no-list
¶
With the –list option, which is the default, the resources to remove,
or removed, will be listed as if by the dmf ls
command. With
–no-list, then do not produce this output.
-
-y,--yes
¶
If given, do not confirm removal of the resource(s) with a prompt. This is useful for scripts that do not want to bother with input, or people with lots of confidence.
-
--multiple
¶
If given, allow multiple resources to be selected by an identifier prefix. Otherwise, if the given identifier matches more than one resource, the program will print a message and stop.
dmf rm usage¶
Note
In the following examples, there are 5 text files named “file1.txt”, “file2.txt”, .., “file5.txt”, in the workspace. The identifiers for these files may be different in each example.
Remove one resource, by its full identifier:
$ dmf ls --no-prefix
id type desc modified
096aa2491e234c4b941f32b537dd3017 data file5.txt 2019-04-16 02:51:30
821fc8f8e54e4c65b481f483be7f5a2d data file4.txt 2019-04-16 02:51:29
c20f3a6e338a40ee8a3a4972544adb74 data file1.txt 2019-04-16 02:51:25
c8f2b5cb80824e649008c414db5287f7 data file3.txt 2019-04-16 02:51:28
cd62e3bcb9a4459c9f2f5405ca442961 data file2.txt 2019-04-16 02:51:26
$ dmf rm c20f3a6e338a40ee8a3a4972544adb74
id type desc modified
c20f3a6e338a40ee8a3a4972544adb74 data file1.txt 2019-04-16 02:51:25
Remove this resource [y/N]? y
resource removed
[dmfcli-167 !?]idaes-dev$ dmf ls --no-prefix
id type desc modified
096aa2491e234c4b941f32b537dd3017 data file5.txt 2019-04-16 02:51:30
821fc8f8e54e4c65b481f483be7f5a2d data file4.txt 2019-04-16 02:51:29
c8f2b5cb80824e649008c414db5287f7 data file3.txt 2019-04-16 02:51:28
cd62e3bcb9a4459c9f2f5405ca442961 data file2.txt 2019-04-16 02:51:26
Remove a single resource by its prefix:
$ dmf ls
id type desc modified
6dd5 data file2.txt 2019-04-16 18:51:10
7953 data file3.txt 2019-04-16 18:51:12
7a06 data file4.txt 2019-04-16 18:51:13
e5d7 data file1.txt 2019-04-16 18:51:08
fe0c data file5.txt 2019-04-16 18:51:15
$ dmf rm 6d
id type desc modified
6dd57ecc50a24efb824a66109dda0956 data file2.txt 2019-04-16 18:51:10
Remove this resource [y/N]? y
resource removed
$ dmf ls
id type desc modified
7953 data file3.txt 2019-04-16 18:51:12
7a06 data file4.txt 2019-04-16 18:51:13
e5d7 data file1.txt 2019-04-16 18:51:08
fe0c data file5.txt 2019-04-16 18:51:15
Remove multiple resources that share a common prefix. In this case, use the
-y,--yes
option to remove without prompting.
$ dmf ls
id type desc modified
7953 data file3.txt 2019-04-16 18:51:12
7a06 data file4.txt 2019-04-16 18:51:13
e5d7 data file1.txt 2019-04-16 18:51:08
fe0c data file5.txt 2019-04-16 18:51:15
$ dmf rm --multiple --yes 7
id type desc modified
7953e67db4a543419b9988c52c820b68 data file3.txt 2019-04-16 18:51:12
7a06435c39b54890a3d01a9eab114314 data file4.txt 2019-04-16 18:51:13
2 resources removed
$ dmf ls
id type desc modified
e5d7 data file1.txt 2019-04-16 18:51:08
fe0c data file5.txt 2019-04-16 18:51:15
dmf status¶
This command shows basic information about the current active workspace
and, optionally, some additional details. It does not (yet) give any way
to modify the workspace configuration. To do that, you need to edit the
config.yaml
file in the workspace root directory.
See Configuration.
dmf status options¶
-
--color
¶
Allow (if terminal supports it) colored terminal output. This is the default.
-
--no-color
¶
Disallow, even if terminal supports it, colored terminal output. UNIX output streams to pipes should be detected and have color disabled, but this option can force that behavior if detection is failing.
-
-s,--show
info
¶
Show one of the following types of information:
- files
- Count and total size of files in workspace
- htmldocs
- Configured paths to the HTML documentation (for “%dmf help” magic in the Jupyter Notebook)
- logging
- Configuration for logging
- all
- Show all items above
-
-a,--all
¶
This option is just an alias for “–show all”.
dmf status usage¶
Note
In the following examples, the current working directory is
set to /home/myuser
and the workspace is named ws
.
Also note that the output shown below is plain (black) text. This is due to our limited understanding of how to do colored text in our documentation tool (Sphinx). In a color-capable terminal, the output will be more colorful.
Show basic workspace status:
$ dmf status
settings:
workspace: /home/myuser/ws
workspace:
location: /home/myuser/ws
name: myws
description: my workspace
created: 2019-04-09 12:46:40
modified: 2019-04-09 12:46:40
Add the file information:
$ dmf status --show files
settings:
workspace: /home/myuser/ws
workspace:
location: /home/myuser/ws
name: myws
description: my workspace
created: 2019-04-09 12:52:49
modified: 2019-04-09 12:52:49
files:
count: 3
total_size: 1.3 MB
You can repeat the -s,--show
option to add more things:
$ dmf status --show files --show htmldocs
settings:
workspace: /home/myuser/ws
workspace:
location: /home/myuser/ws
name: myws
description: my workspace
created: 2019-04-09 12:54:10
modified: 2019-04-09 12:54:10
files:
count: 3
total_size: 1.3 MB
html_documentation_paths:
-: /home/myuser/idaes/docs/build
However, showing everything is less typing, and not overwhelming:
$ dmf status -a
settings:
workspace: /home/myuser/ws
workspace:
location: /home/myuser/ws
name: myws
description: my workspace
created: 2019-04-09 12:55:05
modified: 2019-04-09 12:55:05
files:
count: 3
total_size: 1.3 MB
html_documentation_paths:
-: /home/myuser/idaes/docs/build
logging:
not configured